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

дуть будет почти полностью определен (на рисунке препятствия занимают приблизительно 2/3 полей. Это — верхняя грань);

— когда это сделано, вы снимаете обозначения полей выбранного пути, заменяя их точками. Лабиринт готов к показу.

Остается обеспечить движение коня. Вот как действую я. Сначала я подсчитываю число полей на исходном пути, которые были выбраны случайно, и вывожу это число в качестве верхней границы числа ходов. Я свидетельствую, что всегда обнаруживался более короткий путь. Я не пытался объяснить этот экспериментальный факт…

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

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

Игра 5. Спящая красавица.

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

13-й эпизод.

Рыжий Тони входит в темную комнату. Несмотря на грохот мотоцикла, отчетливо воспринимается равномерный храп. Он зажигает фару и обнаруживает безмятежно спящую прекрасную Жюли. Ослепленный ее красотой, он приближается к ней и гладит ее по лицу. Ничего больше и не нужно. Жюли внезапно просыпается и, приходя в сознание с удивительной быстротой, восклицает: «Бежим отсюда скорее, в замке западня, все сейчас взорвется». Тони садится на мотоцикл. Жюли вскакивает на сиденье за Тони и пристегивается к нему. Но уже повсюду гремят взрывы, и огонь охватывает деревянный потолок. Тони мчится зигзагами среди обломков. Обрушиваются куски горящих балок, угрожая раздавить их в любой момент.

Удастся ли им выбраться из замка? Продолжение в следующем эпизоде.

Эта игра является вариантом предыдущей. Вы представляете замок тем же самым прямоугольным пространством, где точки обозначают свободные места, нули — препятствия, а звездочка сообщает местоположение Тони, В начале игры Тони находится в правом нижнем углу, а выход находится в левом верхнем углу. Препятствий вначале крайне мало. После каждого хода Тони компьютер случайным образом формирует новые препятствия и размещает их на игровом поле. Если Тони оказывается на месте одного из них, то он раздавлен и для него все кончено…

Чтобы оставить Тони хоть какой-то шанс, я предпочитаю устанавливать препятствия парами — поочередно вертикальными и горизонтальными. После небольшого наблюдения можно заметить, что движение большей частью идет в тесных коридорах, куда препятствия не могут попасть (нужно по крайней мере два смежных свободных поля, чтобы там могло разместиться препятствие).

Если не принимать мер предосторожности, то препятствия могут полностью загородить путь к выходу. Может быть, предпочтительнее условиться, чтобы хоть какой-то путь оставался свободным. Каким образом — на ваше усмотрение. В своей первой версии такой программы я этого не сделал. Чаще всего выход оказывался блокированным и игра могла быть выиграна лишь в исключительных случаях.

2. Игры с числами

Арифметические развлечения

Есть много примеров арифметических игр, головоломок и развлечений. Их можно найти в [BAL], [BER], [KUE]. Мы обращаемся и к другим источникам и добавляем некоторые задачи, которые представляют интерес собственно с точки зрения программирования. Многие арифметические головоломки можно сделать вручную: для чего составлять программу? Очень часто вам нужно сделать часть работы на руках, а машина сделает остальное. Это вы должны правильно распределить работу, иначе время вычисления может оказаться чрезмерным. Строгих правил здесь нет. Одна и та же задача может иметь много решений, и методы решения одной и той же задачи могут быть различными. Это и создает игровую ситуацию.