Игра Ним
Если считать, что начальная раскладка фишек соответствует схеме 3-4-5, то можно написать такой окончательный вариант главной программы:
Uses CRT; {Подключение библиотеки дополнительных процедур и функций для управления экраном}
| const | |
| MAXROW = 14; | {Максимальное количество рядов} |
| MAXCOL =20; | {Максимальное количество фишек в ряду} |
| type | |
| ColType = array | [1.. MAXROW] of Integer; |
| var | |
| exit: Boolean; | {Признак окончания работы} |
| change: Boolean; | {Признак изменения условий игры} |
| nrow: Integer; | {Количество рядов} |
| ncol: ColType; | {Максимальное колич-во фишек по рядам} |
| col: ColType; | {Текущее количество фишек по рядам} |
{------------------------}
Procedure Prepare; {Готовит экран к игре}
begin {Prepare}
end; {Prepare}
{------------------------}
Procedure GetPlayerMove;
{Получает, контролирует и отображает ход игрока}
begin {GetPlayerMove}
end; {Get PlayerMove}
{------------------------}
Procedure SetOwnerMove;
{Находит и отображает очередной ход программы}
begin {SetOwnerMove}
end; {SetOwnerMove}
{------------------------}
begin {Главная программа}
nrow: = 3; {Готовим игру… }
ncol [1]: = 3; { на поле из трех }
ncol [2]: = 4; { рядов фишек }
ncol [3]: = 5; { по схеме 3-4-5.}
repeat {Цикл изменения условий игры}
Prepare; {Подготовить экран}
repeat {Игровой цикл}
GetPlayerMove; {Получить ход пользователя}
if not (exit or change) then
SetOwnerMove {Определить собственный ход}
until exit or change
until exit
end.
Приступим к конструированию процедуры PREPARE. В ходе ее работы формируется значение переменной COL, соответствующее начальной раскладке фишек, и выводится информация о правилах игры. Чтобы было понятнее дальнейшее описание программной реализации, на рис. 2.4 показан вид экрана в начальном состоянии игры.

Рис. 2.4. Вид экрана в начале игры Ним
