Игра Ним
{------------------} 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} {--------------------} Procedure ChooseMove; { Выбор очередного хода } const BIT = 6; {количество двоичных разрядов} type BitType = array [1..BIT] of Integer; var ncbit: array [1..MAXROW] of BitType; i,j,k: Integer; nbit: BitType; {------------------} Procedure BitForm(n: Integer; var b: BitType); { Формирует двоичное представление b целого числа n } var i: Integer; begin {BitForm} for i: = BIT downto 1 do begin if odd(n) then b[i]: = 1 else b[i]: = 0; n: = n shr 1 end end; {BitForm}