ход неправильный: дать звуковой сигнал
begin
correctly := (x1>0) and (x1<=nrow) and
(x2<=col [x1] ) and (x2>0) ;
if correctly then
begin {ход правильный: }
col [x1] := col[x1]-x2; {изменить раскладку фишек}
ShowField {показать поле}
end
else
write (#7) { ход неправильный: дать звуковой сигнал }
end
else
correctly := true {случай EXIT или CHANGE}
until correctly;
if change then
GetChange
end; {GetPlayerMove}
{--------------------------------}
Procedure SetOwnerMove;
{ Найти и отобразить очередной ход программы }
{------------------}
Function CheckField : Integer;
{ Проверка состояния игры. Возвращает 0, если нет ни одной
фишки (победа игрока) , 1 - есть один ряд (победа машины) и
количество непустых рядов в остальных случаях }
var
i,j : Integer;
begin {CheckField}
j := 0;
for i := 1 to nrow do if col[i]>0 then inc(j);
CheckField := j
end; {CheckField}
{--------------------}
Procedure CheckPlay;
{ Контроль окончания игры }
var
i : Integer;
begin {CheckPlay}
GotoXY(1,25) ;
write ( 'Введите 1, если хотите сыграть еще раз, 0 - выход:');
readln(i);
if i=l then change := true else exit := true
end; {CheckPlay}
{--------------------}
Procedure PlayerVictory;
{ Поздравить игрока с победой и усложнить игру }
const
t1 = 'ПОЗДРАВЛЯЮ С ОТЛИЧНОЙ ПОБЕДОЙ!'; var i : Integer; begin
GotoXY( (80-Length(t1) ) div 2,24);
writeln(t1,#7) ;
for i : = 1 to nrow do
if ncol [i] <MAXROW then inc (ncol [i] ) ;
CheckPlay
end; {PlayerVictory}
{---------------------}
Procedure OwnVictory;
{ Победа машины }
const
t1 = 'ВЫ ПРОИГРАЛИ: СЛЕДУЮЩИМ ХОДОМ Я БЕРУ ВЕСЬ РЯД';
var
i : Integer;
begin {OwnVictory}
i := 1;
while col[i]=0 do inc(i);
GotoXY( (80-Length(t1) ) div 2,24);
write(t1,i,#7);
delay (2000); {задержка на 2 секунды}
col [i] := 0;
ShowField;
CheckPlay
end; {OwnVictory}
{--------------------}
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий