Выбрать главу

Размер игры значит очень мало. Я предпочитаю игру с тремя строками, но 4 и 5 — тоже очень хорошие числа. Длина строк несущественна. Выберите ее так, чтобы игра хорошо смотрелась.

На экране вы можете воспользоваться техникой, которая нам так часто служила. Пусть свободные клетки будут представлены точками, шашки одного из игроков — звездочками, а другого — 0. На рис. 13 воспроизведено начальное положение (4 строки, 9 полей на строке). Ход компьютера состоит просто в перемещении одной из его шашек (внимание: если ответ будет слишком быстрым, его, может статься, будет трудно воспринимать. Подумайте, как использовать цикл ожидания). Ход игрока может быть дан компьютеру в вг-де указания, на какой строке нужно переставить шашку и число полей при перемещении; положительное число указывает на приближение к противнику, отрицательное число означает отход к краю игрового поля. Все это очень просто,

?* Игра 21. Игра Кейлеса.

В наиболее простой форме эта игра разыгрывается со спичками, положенными в один ряд. Каждый игрок на своем ходе вынимает либо какую-то одну спичку из строки, либо две смежные спички. Это может разломать исходный ряд на несколько меньших рядов. Вот, например, начальная конфигурация (спички обозначены нулями), а затем — состояние игры через несколько ходов (точки обозначают места, оставшиеся пустыми).

Вначале:

0000000000000

После нескольких ходов;

.000..00.0000..

Выигрывает тот, кто берет последнюю спичку.

Игру можно легко распространить на случай нескольких исходных линий спичек. На каждом ходе игрок берет либо одну спичку, либо две соседние спички на линии, которую он выбрал.

Как и в предыдущих играх, подумайте о применении цикла, ожидания, чтобы у вас было время увидеть ответ компьютера. Как и в играх Нима и Норткотта, эта игра не очень-то справедлива. Компьютер выигрывает все партии, до крайней мере, если его противник не знает выигрывающей стратегии…

* Игра 22. Игра Сима.

Еще одна игра, тоже совершенно не равноправная для двух игроков — для компьютера и для вас.

Игра разыгрывается на листе бумаги, на котором обозначены 6 точек, являющихся вершинами правильного шестиугольника, помеченные буквами A, B, C, D, E, F. Естественно ожидать, что вашим партнером будет компьютер, и ему никакой бумаги не нужно, так что 6 точек появятся на экране.

Каждый игрок при своем ходе проводит отрезок прямой, соединяющий еще не соединенные вершины. Нужно, чтобы следы отрезков, проведенных различными игроками, можно было отличить. На рис. 14 следы одного — сплошные, а у другого — штриховые. В запрограммированной игре именно компьютер берет на себя проведение отрезков. Скажите ему только названия вершин, которые вы хотите соединить. Он и проведет отрезок, причем такого типа, который вам присвоен. Затем он выберет вершины, которые он захочет соединить, и проведет свой собственный отрезок.

Проигрывает тот, кто первым построит треугольник из своих собственных отрезков. Так, на рис. 14 тот, кто проведет отрезок из тире между D и E, проигрывает, потому что он образует отрезок AED из тире, между тем как отрезок AC из тире безопасен: он образует, конечно, треугольник ACD, но одна из его сторон — сплошная, и поэтому он безвреден для обоих игроков.

Сумеете ли вы показать, что в этой игре всегда есть проигравший? (Нельзя так расположить все возможные отрезки, чтобы никакие три стороны их, одинаковым образом выполненные, не образовывали бы треугольника.) Сумеете ли вы предложить хорошую стратегию для компьютера? Если компьютер и игрок играют в равную силу и не совершают никаких ошибок, кто тогда выиграет? Начинающий? Или другой?

На моем микрокомпьютере, не имеющем графических средств, я был вынужден удовлетвориться проведением отрезков с помощью выстраивания в ряд букв там, где компьютер считал нужным их поставить. Картина получалась не очень красивой, но игра оставалась осуществимой и интересной. С графическим да еще с цветным экраном у вас должно получиться просто загляденье, Но не забывайте поговорку Анри Ледгара [LED]:

Не занимайтесь формой вывода результатов, пока ваша программа не окажется правильной.

Когда ваша программа окажется правильной, тщательно отработайте форму вывода результатов.

? Игра 23. Спички Бергсона.