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


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


Процедура начинает свою работу с очистки экрана от имеющейся на нем информации. Это достигается обращением к стандартной процедуре без параметров CLRSCR. Затем выводятся три строчки с названием игры и кратким описанием ее правил. Кроме того, слева и справа на экране формируются заголовки для двух колонок цифр, в которых затем будут отображаться номер ряда (слева) и текущее количество фишек в ряду (справа). Эта информация поможет игроку сообщить программе свой ход. Для размещения информации на нужных участках экрана используется процедура GOTOXY(X,Y) , с помощью которой курсор перемещается нужным образом. Параметры X и Y этой процедуры задают новые координаты курсора. Начало координат соответствует точке (1,1) и размещается в левом верхнем углу экрана, поэтому горизонтальная координата увеличивается слева направо, а вертикальная - сверху вниз.

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

Procedure Prepare;

{Подготовка данных и экрана к игре}

const

Header0 = 'ИГРА НИМ';

Headerl = 'Вы можете взять любое число фишек из любого ряда.';

Header2 = 'Выигрывает тот, кто возьмет последнюю фишку.';

Headers = 'Номер ряда';

Header4 = 'Количество фишек';

var

i : Integer; begin {Prepare}

ClrScr; {Очищаем экран}

{Выводим строки заголовка:}

GotoXY((80-Length(Header0)) div 2,1);

Write(HeaderO) ;

GotoXY((80-Length(Headerl)) div 2,2);

Write(Headerl);

GotoXY((80-Length(Header2)) div2,3); 

Writeln(Header2);

Write(Header3); 

GotoXY(80-Length(Header4),4); 

Write(Header4); 

{Готовим начальную раскладку:} 

for i := 1 to nrow do

col [i] := ncol[i] 

end; {Prepare}

Для вывода верхних строк строго посередине экрана используется задание горизонтальной координаты курсора для процедуры GotoXY как половины от разницы между полной длиной экрана (80 позиций) и длиной выводимой строки (определяется с помощью функции LENGTH).

В процедуре GetPlayerMove осуществляются ввод, контроль и отображение на экране очередного хода игрока. Предварительно нужно показать игроку текущее состояние игрового поля. Поскольку поле будет обновляться как минимум дважды (после хода игрока и после хода программы), действия, связанные с изображением поля на экране, следует вынести в отдельную процедуру. Назовем ее ShowField и займемся ее реализацией.




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



Книжный магазин