Практика программирования (Бейсик, Си, Паскаль)



         

Задачи, советы и ответы - часть 20


end;

m:=m+l;

if m > 23 then begin clrscr;

m:= 2;

print_xod(color);

end;

end;

procedure start;

begin

clrscr; randomize;

k:=random(n-3)+3; {число кучек}

m:=1;

if m>23 then begin clrscr;

m:=2;

print_xod(color);

end;

for i:=l to k do

a[i]:=random(q)+1;

print_xod(RED);

end;

procedure user;

label m2,m3;

begin

textcolor (GREEN) ;

gotoxy(20,m-1);

write('Ваш ход (кучка - сколько берем):');

m2:

gotoxy(33,m); write(' ');

gotoxy(33,m) ; read(j);

if(j<l) or (j>k) or (a[j]=0) then goto m2;

m3:

gotoxy(35,m);

write('- ');

gotoxy(37,m);

read(b);

if(b<l) or (b>a[j]) then goto m3;

a[j]:=a[j]-b;

print_xod(GREEN);

end;

procedure computer;

begin s:=0;

for i:=l to k do s:=s xor a[i];

if s=0 then begin s:=a[l];

j:=l;

for i:=2 to k do

if s<a[i] then begin

s:=a[i];

j:=i;

end;

b:=l;

end

else

for j:=l to k do begin b:=a[j]-(a[j] xor s) ;

if b>=0 then break; end;

a[j]:=a[j]-b;

print_xod(RED);

end;

begin

start;

ml : user;

s:=0;

for j:=l to k do s:=s+a[j];

if s=0 then begin

gotoxy(1,m);

write('Вы победили');

readln; readln;

exit; end;

computer; s:=0;

for j:=l to k do s:=s+a[j];

if s<>0 then goto ml;

gotoxy(l,m);

write('Победил компьютер');

readln;

readln;

end.

Задание 4.12. Игра "крестики-нолики"

Составить программу для игры в крестики-нолики на поле размером 3x3. Правила игры: играют двое, делая последовательные ходы в клетках игрового поля. Первый игрок ставит крестики, второй — нолики. Выигрывает тот, кому первому удастся разместить три своих символа на одной из восьми игровых линий (три горизонтали, три вертикали, две диагонали). Если на поле после девятого хода выигрышная ситуация не выстроена, то считается, что игра закончилась вничью. Многими докомпьютерными поколениями подтверждено, что при "правильном" поведении обоих игроков, каждому из них обеспечена, как минимум, ничья. И только при явной ошибке партнера создается выигрышная ситуация для его оппонента.




Содержание  Назад  Вперед