бой кнопки. Критерием успешного завершения игры является равенство всех указателей стеков 9-12 значению 13. Для выхода из игры в случае невозможности или нежелания ее завершения необходимо поместить курсор в нижнюю часть игрового поля и нажать любую кнопку мыши.

5.8. РЕВЕРСИ

Перейдем к играм, в которых участвуют двое игроков. Притом каждый из них имеет полную информацию о состоянии на игровом поле, но не имеет таковой в части стратегии партнера, при помощи которой тот намеревается выиграть. В качестве примера рассмотрим игру "Реверси", в которой используется доска, расчерченная на 64 квадратных поля (8Х8), и 64 плоских фишки. "Лицевая" сторона каждой из фишек окрашена в один цвет, а "изнаночная" (то есть противоположная) — в другой (например, красный и зеленый). Правила этой игры очень простые:

• первоначально на четырех ближайших к центру доски полях ставятся две пары фишек таким образом, что на одной из диагоналей они имеют один цвет, а на другой — другой;

• каждому из игроков необходимо поставить на доску как можно больше фишек того цвета, который был выбран им перед началом игры;

• ходы делаются поочередно, если есть возможность поставить фишку своего цвета, в противном случае ходит соперник;

• игра считается законченной в тот момент, когда ни один из ее участников не может сделать очередной ход;

• фишка может быть поставлена на свободное поле только в том случае, если по соседству с ним (по вертикали, горизонтали или диагонали) находится фишка чужого цвета и на продолжении этого направления находится фишка своего цвета, причем все поля этого направления вплоть до фишки своего цвета заняты фишками чужого цвета;

• при установке новой фишки все фишки чужого цвета, для которых выполнено вышеизложенное условие, переворачиваются ("реверс"), то

есть приобретают цвет устанавливаемой фишки.

В качестве математической модели доски с фишками используется двумерный массив, содержащий 8Х8 целых чисел. Пустому полю приписывается числовое значение 0, а полю, на котором установлена фишка, — значение +1 или -1 в зависимости от того поставлена ли она (либо перевернута) первым или вторым игроком. Для изображения доски с фишками (а также для показа их количества одной и другой окраски) используется подпрограмма showscore, которая в свою очередь обращается к подпрограмме вывода на экран заданного поля drsqr.

Разумеется, с точки зрения удобства игры весьма желательно чтобы программа по командам игроков сама осуществляла перебор и показ всех возможных ходов, а после выбора хода исполняла изменение состояния модели. Для составления списка возможных ходов используется подпрограмма getlst, а для изменения состояния в результате очередного хода — chng. Обе эти подпрограммы используют подпрограм-