Игра крестики - нолики: Сделать так чтобы при нажатии ALT поле смещалось в другое место. Вместе со всеми ходами которые были сделаны и при этом продолжать играть на новом месте(старый экран затирается). Блин у меня не получается чтобы курсор вверх бегал...ПОМОГИТЕ:Вот исходник моей проги
uses
crt;
var
m:array[1..3,1..3] of char;
c,f1,f2:char;
f,e,w:boolean;
i,j,x,y:byte;
begin
while true do
begin
c:=#0;
f1:=#0;
f2:=#0;
e:=false;
w:=false;
f:=false;
for i:=1 to 3 do
for j:=1 to 3 do
m[i,j]:=#0;
clrscr;
writeln('Choose your destiny');
writeln('Krestiki(Enter X)');
writeln('Noliki(Enter O)');
writeln('Esc - Exit');
while (c=#0)or(c<>#27)and(c<>'x')and(c<>'X')and(c<>'o')and(c<>'O') do
begin
c:=readkey;
case c of
#27: exit;
'x','X': begin
f:=true;
f1:='X';
f2:='O';
end;
'o','O': begin
f:=false;
f1:='O';
f2:='X';
end;
end;
end;
clrscr;
writeln('ЪДДДВДДДВДДДї');
writeln('і і і і');
writeln('ГДДДЕДДДЕДДДґ');
writeln('і і і і');
writeln('ГДДДЕДДДЕДДДґ');
writeln('і і і і');
writeln('АДДДБДДДБДДДЩ');
gotoXY(3,2);
while e=false do
begin
if f=true then
begin
c:=readkey;
if c=#0 then
c:=readkey;
end
else
c:=#32;
case c of
#27: exit;
#32: begin
case whereX of
3: x:=1;
7: x:=2;
11: x:=3;
end;
case whereY of
2: y:=1;
4: y:=2;
6: y:=3;
end;
if m[x,y]=#0 then
begin
if (f=true)and(w=false)and(e=false) then
begin
write(f1);
gotoXY(whereX-1,whereY);
m[x,y]:=f1;
end;
if
(m[1,1]=f1)and(m[2,1]=f1)and(m[3,1]=f1)or
(m[1,2]=f1)and(m[2,2]=f1)and(m[3,2]=f1)or
(m[1,3]=f1)and(m[2,3]=f1)and(m[3,3]=f1)or
(m[1,1]=f1)and(m[1,2]=f1)and(m[1,3]=f1)or
(m[2,1]=f1)and(m[2,2]=f1)and(m[2,3]=f1)or
(m[3,1]=f1)and(m[3,2]=f1)and(m[3,3]=f1)or
(m[1,3]=f1)and(m[2,2]=f1)and(m[3,1]=f1)or
(m[1,1]=f1)and(m[2,2]=f1)and(m[3,3]=f1) then
begin
gotoXY(1,8);
writeln('Крестики выйграли');
readln;
w:=true;
e:=true;
end;
f:=true;
if (w=false)and(e=false) then
begin
while m[x,y]<>#0 do
begin
x:=1+random(3);
y:=1+random(3);
end;
case x of
1: gotoXY( 3,whereY);
2: gotoXY( 7,whereY);
3: gotoXY(11,whereY);
end;
case y of
1: gotoXY(whereX, 2);
2: gotoXY(whereX, 4);
3: gotoXY(whereX, 6);
end;
write(f2);
gotoXY(whereX-1,whereY);
m[x,y]:=f2;
if
(m[1,1]=f2)and(m[2,1]=f2)and(m[3,1]=f2)or
(m[1,2]=f2)and(m[2,2]=f2)and(m[3,2]=f2)or
(m[1,3]=f2)and(m[2,3]=f2)and(m[3,3]=f2)or
(m[1,1]=f2)and(m[1,2]=f2)and(m[1,3]=f2)or
(m[2,1]=f2)and(m[2,2]=f2)and(m[2,3]=f2)or
(m[3,1]=f2)and(m[3,2]=f2)and(m[3,3]=f2)or
(m[1,3]=f2)and(m[2,2]=f2)and(m[3,1]=f2)or
(m[1,1]=f2)and(m[2,2]=f2)and(m[3,3]=f2) then
begin
gotoXY(1,8);
writeln(Нолики - выйграли);
readln;
w:=true;
e:=true;
end;
end;
if
(w=false)and(e=false)and
(m[1,1]<>#0)and(m[2,1]<>#0)and(m[3,1]<>#0)and
(m[2,1]<>#0)and(m[2,2]<>#0)and(m[3,2]<>#0)and
(m[3,1]<>#0)and(m[2,3]<>#0)and(m[3,3]<>#0) then
begin
gotoXY(1,8);
writeln('Ничья');
readln;
e:=true;
end;
end;
end;
#72: if (whereX<=11) and (whereY-2<=6) then
gotoXY(whereX,whereY-2);
#75: if (whereX-4<=11) and (whereY<=6) then
gotoXY(whereX-4,whereY);
#77: if (whereX+4<=11) and (whereY<=6) then
gotoXY(whereX+4,whereY);
#80: if (whereX<=11) and (whereY+2<=6) then
gotoXY(whereX,whereY+2);
end;
end;
end;
end.
Сообщение отредактировано: volvo -