Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2009, 12:35   #1
oblachko
Пользователь
 
Регистрация: 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.
oblachko вне форума Ответить с цитированием
Старый 17.01.2009, 22:21   #2
juzam
Пользователь
 
Аватар для juzam
 
Регистрация: 25.11.2008
Сообщений: 31
По умолчанию

Не читабельно =/
juzam вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
крестики нолики 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