Иллюстрированный самоучитель по Tirbo Pascal


Игра ним - часть 9


Procedure GetPlayerMove;

{Получает, контролирует и отображает ход игрока}

var

correctly : Boolean; {Признак правильности сделанного хода} 

xl,x2 : Integer; {Вводимый ход} 

begin {GetPlayerMove}

{Показываем начальное состояние игрового поля}

ShowField;

{Сообщаем, игроку правила ввода хода}

repeat

{Приглашаем игрока ввести ход}

ReadLn(xl,x2); {Вводим очередной ход} 

exit := xl=0; {Контроль команды выхода} 

change := xl=-l; {Контроль команды изменения} 

if not (exit or change) then

{Проверить правильность хода и установить нужное значение переменной CORRECTLY. Если ход правильный, сделать нужные изменения в раскладке фишек и показать поле.}  

else

correctly := true {Случай EXIT или CHANGE} 

until correctly; if change then

{ Изменить условия игры }  

end; {GetPlayerMove}

В этом варианте в процедуре GetPlayerMove нет описания процедуры SHOWFIELD. Сделано это не случайно: процедура ShowField может понадобиться

также и при реализации процедуры SetOwnerMove, поэтому она должна быть глобальной по отношению и к GetPlayerMove, и к SetOwnerMove, т.е. ее описание должно в тексте программы предшествовать описаниям двух использующих ее процедур.

Действия

{ Сообщить игроку правила ввода хода } ,

{ Пригласить игрока ввести ход } 

и

{Проверить правильность хода и установить нужное значение

переменной Correctly. Если ход правильный, сделать нужные

изменения в раскладке фишек и показать поле.}

не очень сложны в реализации, поэтому их можно осуществить непосредственно в теле процедуры GETPLAYERMOVE. Иное дело - изменение условий игры. Это действие полезно реализовать в отдельной процедуре GETCHANGE. С учетом этого второй вариант процедуры GETPLAYERMOVE примет такой вид:

Procedure GetPlayerMove;

{Получает, контролирует и отображает ход игрока}  

const

ТЕХТ1 = 'Введите Ваш ход в формате РЯД КОЛИЧ ';

ТЕХТ01= ' (например, 2 3- взять из 2 ряда 3 фишки) ' ;

ТЕХТ2 = 'или введите 0 0 для выхода из игры; ' ; . 




- Начало -  - Назад -  - Вперед -