|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
17.01.2009, 12:35 | #1 |
Пользователь
Регистрация: 04.12.2008
Сообщений: 55
|
КРЕСТИКИ-НОЛИКИ
В общем написал на паскале крестики-нолики, да только галиматья получается!!ЧТО-ТО НЕПРАВИЛЬНО!!!!!!!ПОМОГИТЕ=)))
program krestiki; uses Crt; label m2; const a:array [1..9] of integer = (0,0,0,0,0,0,0,0,0); b:array [1..9] of byte = (3,1,1,1,5,3,1,7,3); x0=5; y0=5; var j, CurX, CurY, Ind : word; procedure result(s:string); begin window(40,1,60,2); write(s); readln; halt; end; procedure show(k,c:integer) ; const pos:array [1..18] of byte = (3,2,7,2,11,2,3,4,7,4,11,4,3,6,7,6, 11,6); var j:byte; x,y:word; begin clrscr; writeln (' +----+----+----+'); writeln(' | | | |'); writeln (' |----|---- |-----| '); writeln(' | | | |'); writeln(' |----|-----|-----|'); writeln(' | | | |'); write (' +----+----+----+'); a[k]:=c; for j:=1 to 9 do begin x:=pos[(j-1)*2+1]; y:=pos[(j-1)*2+2]; gotoxy(x,y); if a[j]=+2 then write('X'); if a[j]=-2 then write('0'); end; CurX:=7; CurY:=4; Ind:=5; gotoxy(CurX,CurY); end; function xod(k,kl:integer):boolean; const line:array [0..23] of byte= (1, 2, 3,4, 5, 6, 7, 8, 9,1,4, 7, 2, 5, 8, 3,6, 9,1,5, 9, 3,5,7) ; var j,m,p:byte; begin xod:=false; for j:=0 to 7 do begin m:=j*3; if a[line[m]]+a[line[m+1]]+a[line[m+2]]=2*k then begin xod:=true; for p:=m to m+2 do if a[line[p]]=0 then begin show(line[p],kl); exit; end; end; end; end; procedure step345; begin if xod( 2,2) then result('Victory of the Computer'); if xod(-2,2) then exit; for j :=1 to 9 do if a[j]=0 then begin show(j,2); break; end; end; procedure input; const Left=#75; Right=#77; Up=#72; Down=#80; Enter=#13; var ch:char; j,k:byte; procedure cur_ind(var cur:word;porog,dcur,dind:integer) ; begin if cur<>porog then begin cur:=cur+dcur; Ind:=Ind+dind; end; end; begin k:=0; for j:=1 to 9 do k:=k+abs(a[j]); if k=18 then result('Drawn gameя'); ch:=readkey; if ch=#0 then ch:=readkey; case ch of Left: cur_ind(CurX, 3,-4,-1); Right: cur_ind(CurX,11, 4, 1); Up: cur_ind(CurY, 2,-2,-3); Down: cur_ind(CurY, 6, 2, 3); Enter: if a[Ind]=0 then begin show(Ind,-2); exit; end else write(7); else write(#7); end; gotoxy(CurX,Cury); input; end; begin clrscr; window(x0,y0,x0+13,y0+7); show(5,2); input; for j:=1 to 9 do if a[j]=-2 then begin show(b[j],2); break; end; m2: input; step345; goto m2; end. |
17.01.2009, 22:21 | #2 |
Пользователь
Регистрация: 25.11.2008
Сообщений: 31
|
Не читабельно =/
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
крестики нолики | aesoem | Общие вопросы Delphi | 11 | 12.06.2011 11:32 |
Крестики-нолики | ROD | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 21 | 12.02.2011 00:15 |
Крестики нолики на C++ | Alar | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 11 | 15.03.2010 16:09 |
Крестики-нолики С++ | ROD | Помощь студентам | 7 | 21.12.2008 20:07 |
Крестики - Нолики | Иваненко | Помощь студентам | 6 | 09.05.2008 22:09 |