Чтение онлайн

на главную - закладки

Жанры

Программирование игр и головоломок
Шрифт:

– Л, -В, НЛ

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

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

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

чтобы число роботов в игре оставалось более или менее постоянным.

В случае, изображенном на рис. 6, игрок может остаться неподвижным. Тогда робот, расположенный над игроком в том же столбце, уничтожается в западне, расположенной непосредственно ниже, но робот, расположенный левее и ниже игрока, приблизится к игроку, и последнему придется разрушить его на следующем ходе. Игрок может также начать с хода влево, но тогда два робота приблизятся к нему, и ему придется разрушить их на следующем ходе.

Игра оказывается более или менее трудной в зависимости от соотношения между числом препятствий и числом роботов. Я взял прямоугольник с 11 строками и 18 столбцами (число строк нечетно по причине особой роля, которую играет среднее поле), с 30 расщелинами и 20 роботами. Игрок имеет право разрушить 12 роботов. В начале игры игроку, как правило, трудно выйти из своего начального положения, потому что он находится поблизости от двух правых углов, из которых появляется немало свежих роботов. Когда же ему удается удалиться от правого края, выходящие из углов роботы его меньше стесняют и большая их часть падает в расщелины. Трудности возобновляются при приближении к левому краю. Именно поэтому нужно избегать растраты боеприпасов в начале партии. Попытайтесь, и вы увидите, что это требует немалой ловкости…

* Игра 11. Формула 1 [12] .

Задумывались ли вы когда-нибудь над тем, что переживает водитель, мчащийся на огромной скорости по извилистой дороге, обгоняя попутные машины и уклоняясь от встречных? Конечно, вы не преобразуете ваш компьютер в быстро мчащийся автомобиль, и с помощью используемых нами графических средств мы не сможем создать впечатление движения по расстилающейся перед вами дороге. Так как, наконец, я полагаю, что у вас нет средств управления вашим компьютером в реальном времени (этих средств нет не только у меня, но и в оборудовании учебных заведений) [13] , поэтому перед любым вашим действием вы сможете размышлять столько времени, сколько вам захочется, а это совсем не так в случае водителя на дороге. Но попытайтесь-ка в этой игре реагировать быстро и вы увидите, что эффект не так уж плох, несмотря на элементарность средств…

12

Так начинаются правила проведения автогонок. — Примеч. ред.

13

Напомним, что книга написана в начале 80-х годов. — Примеч. ред.

Автострада выводится на экран в виде последовательности строк, на которых поставлены точки, нули и звездочка. Точки реализуют 4 полосы движения и представляют свободные места. Выше транспортное средство пред- ставимо звездочкой. Нули суть неподвижные препятствия (скажем, что-то тяжеловесное и очень медлительное). Типичная ситуация изображена на рис. 7. Вы находитесь перед участком дороги (я выбрал 13 строк. Это дает мне хорошие результаты. Но вы можете взять больше, если вам позволяет ваш экран; это увеличивает возможности предвидения. Вы можете взять и меньше, что заставит вести машину в еще более стесненных условиях…).

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

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

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

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

Предположим сначала, что вы не меняете направления движения. Ваша машина спускается по вертикали на число строк, равное вашей скорости. Это может привести к тому, что вы пересечете поле, обозначенное 0. Тогда вы сталкиваетесь с грузовиком, вы пропали. Это может также привести вас к тому, что вы попадаете на не обозначенное поле. Вы покинули дорогу. Это — тяжелый несчастный случай. Вы пропали. Так, на рис. 8, если ваша скорость превосходит 2, то вы сталкиваетесь с грузовиком. Если бы вы исходили из крайнего левого поля того же ряда и ваша скорость превосходила бы 5, то вы покинули бы дорогу (внимание: вы пропали с того момента, как вы достигли нуля или не обозначенного поля. Оставшаяся часть вашей траектории движения не рассматривается).

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

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

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

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

Эту игру программировать не очень трудно, если не считать того, что нужно оказаться способным корректно дозировать число грузовиков, и что нельзя позволять дороге часто делать зигзаги, а также выходить за пределы экрана. Но здесь нет ничего, с чем вы не могли бы справиться.

Собственно игра оказывается гораздо труднее, чем можно было себе представить. Вы, конечно, можете затормозить до скорости 1. Вы оказались на краю. Но ничего смешного нет. Вы можете оказаться в самом рискованном положении, вы терпите удар за ударом. Благодаря воспроизводимым непредсказуемым последовательностям вы можете много раз возобновлять один и тот же пробег. Впрочем, здесь бывает трудно вспомнить, что же происходит на шестидесятом километре… Вы можете также попробовать маршрут, а затем предложить его вашим друзьям. И если вы на их глазах вылетели с трассы, но вовсе не факт, что они смогут на ней удержаться. Итак, желаю успеха!

Поделиться:
Популярные книги

Инцел на службе демоницы 1 и 2: Секса будет много

Блум М.
Инцел на службе демоницы
Фантастика:
фэнтези
5.25
рейтинг книги
Инцел на службе демоницы 1 и 2: Секса будет много

Весь цикл «Десантник на престоле». Шесть книг

Ланцов Михаил Алексеевич
Десантник на престоле
Фантастика:
альтернативная история
8.38
рейтинг книги
Весь цикл «Десантник на престоле». Шесть книг

Предатель. Цена ошибки

Кучер Ая
Измена
Любовные романы:
современные любовные романы
5.75
рейтинг книги
Предатель. Цена ошибки

Жандарм 2

Семин Никита
2. Жандарм
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Жандарм 2

Прогрессор поневоле

Распопов Дмитрий Викторович
2. Фараон
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Прогрессор поневоле

Всемирная энциклопедия афоризмов. Собрание мудрости всех народов и времен

Агеева Елена А.
Документальная литература:
публицистика
5.40
рейтинг книги
Всемирная энциклопедия афоризмов. Собрание мудрости всех народов и времен

Истребитель. Ас из будущего

Корчевский Юрий Григорьевич
Фантастика:
боевая фантастика
попаданцы
альтернативная история
5.25
рейтинг книги
Истребитель. Ас из будущего

Очешуеть! Я - жена дракона?!

Амеличева Елена
Фантастика:
юмористическая фантастика
5.43
рейтинг книги
Очешуеть! Я - жена дракона?!

Отмороженный 4.0

Гарцевич Евгений Александрович
4. Отмороженный
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Отмороженный 4.0

Треугольная шляпа. Пепита Хименес. Донья Перфекта. Кровь и песок.

Бласко Висенте Ибаньес
65. Библиотека всемирной литературы
Проза:
классическая проза
5.00
рейтинг книги
Треугольная шляпа.
Пепита Хименес.
Донья Перфекта.
Кровь и песок.

Измена. Жизнь заново

Верди Алиса
1. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Жизнь заново

Три `Д` для миллиардера. Свадебный салон

Тоцка Тала
Любовные романы:
современные любовные романы
короткие любовные романы
7.14
рейтинг книги
Три `Д` для миллиардера. Свадебный салон

Бастард Императора. Том 5

Орлов Андрей Юрьевич
5. Бастард Императора
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 5

Идеальный мир для Лекаря 21

Сапфир Олег
21. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 21