Игра Ним
Если считать, что начальная раскладка фишек соответствует схеме 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. Вид экрана в начале игры Ним