Описание
компьютера Радио-86РК
|
Журнал
РАДИО
|
Играем в "РАЛЛИ".
Любой компьютер может быть не только помощником в проведении необходимых вам расчетов, но и хорошим партнером в электронных играх. Создавая на экране дисплея различные динамически меняющиеся игровые ситуации, компьютер развивает быстроту реакции, комбинационное мышление и координацию движений.
Все игровые программы можно условно разделить на два больших класса: интеллектуальные, написанные на языках высокого уровня и, как правило, реализующие алгоритм какой-либо из известных игр (шахматы, шашки и т. п.), и динамические, составленные на языке АССЕМБЛЕРа и работающие в реальном времени. Примером динамических программ может служить уже известная читателям программа "ПИТОН".
Основным недостатком большинства игр, реализуемых на микро-ЭВМ, является неизменность игровой ситуации и правил игры, что приводит к быстрому надоеданию программ и даже раздражению, вызванному предсказуемостью действий электронного "партнера". Выходом из этой ситуации может стать более широкое распространение игр человека с человеком, в которых партнеры могут применить присущие им умение, ловкость и даже хитрость, а на компьютер возлагается роль беспристрастного электронного "арбитра", сначала создающего игровую ситуацию, а затем "зорко" следящего за неукоснительным выполнением правил игры. Две игровые программы, реализующие подобный принцип - "РАЛЛИ" и "ТРЕК", и предлагаются в настоящей статье.
Для возможности участия в игре двух партнеров необходимо, прежде всего, изготовить два пульта управления, с которых в микро-ЭВМ будут вводиться команды игроков.
Каждый пульт состоит из пяти не фиксируемых в нажатом положении клавиш, расположенных в порядке, показанном на рис.1. Поскольку в динамических программах, имеющих весьма большую скорость изменения игровой ситуации, времени для "рассматривания" клавиш практически не бывает, такая конфигурация пульта признана наиболее удобной для осязательной идентификации необходимой клавиши. Тип используемых клавиш может быть любым, важно лишь, чтобы они обладали максимальной износоустойчивостью и надежностью, поскольку интенсивность эксплуатации их будет весьма высокой. В состав каждого пульта входит пять клавиш, из которых четыре формируют различные направления движения объектов игры - "гоночных машин" (причем, в отличие от "ПИТОНа", движение возможно не только по направлению осей координат, но и по диагоналям, что обеспечивается одновременным нажатием двух клавиш), и одна (центральная) - резервная, предназначена для дальнейшего усовершенствования игр.
Схема игровых пультов приведена на рис.2. Кабели, соединяющие пульты с компьютером, содержат по семь проводов и могут иметь длину до трех метров. Подключают пульты к РК через соответствующие разряды микросхемы D14 порта связи с внешними устройствами КР580ВВ55.
Обе предлагаемые читателю игры (таблица кодов, исходные тексты основных частей на языке АССЕМБЛЕР, а также комментарии по использованию программы будут приведены во второй части статьи) формируют на экране ситуации двух основных видов автомобильных соревнований - трековых гонок и ралли. После запуска программы на экране дисплея появляется следующий текст:После ответа на запрос нажатием на соответствующую клавишу компьютер запоминает вид игры и выводит новый текст;
ВВЕДИТЕ СКОРОСТЬ ГОНКИ (1-9):
Аналогичным образом вводится скорость, с которой гонщики будут двигаться по трассе. Далее на экране формируются изображения игровых полей (различных для обеих игр) и гоночных машин, обозначаемых символами "$" и "Ж".
Рассмотрим игровые ситуации и порядок взаимодействия микро-ЭВМ и игроков при различных видах гонок.
Ралли. После запуска программы на экране формируется изображение, показанное на рис. 3 RallP3.jpg. Стартовое положение машин -в нижних углах поля. Основные элементы игрового поля крестики-препятствия (начальное количество - 21 шт.), в случайном порядке разбросанные по трассе гонок, а также флажок-цель (символ "забой"), сквозь который нужно проехать машиной раньше соперника. Цель игры - первым набрать 21 флажок (проезд "через" символ забой). При столкновении с препятствием или бортом автомобиля соперника раздается звуковой сигнал и вместо символа машины формируется звездочка, показывающая, что автомобиль поврежден. Управление им на несколько ходов блокируется, что позволяет более удачливому партнеру первым достигнуть цели.
Аналогичная ситуация возникает при наезде на другую машину или ее "обломки" (звездочку). При столкновении двух машин всегда виноват тот, кто "стукнул" первым (он и штрафуется простоем). При ударе машин "в лоб" возникает сразу две звездочки. При известном навыке можно "повредить" машину партнера, подставив ему свою (например, "тормознуть", если за тобой устремились в погоню).
После каждого прохождения одной из машин через флажок он возникает на новом месте. Одновременно с этим на трассе появляются три новых препятствия, что постепенно усложняет игру (при равном классе партнеров к концу заезда на трассе может находиться до 140 препятствий). Количество очков, набранных партнерами, выводится на экран. При сборе 21 флажка одной из машин игра прекращается, на экране возникает надпись:При ответе на запрос можно либо повторить заезд (клавиша "1"), либо сменить игру или скорость (клавиша "2"), либо выйти в МОНИТОР (клавиша "3").
Трек. После запуска программы на экран выводится игровое поле, примерный вид которого показан на рис.4. Рисунок трека может быть любым и задаваться владельцем компьютера (о том, как это сделать, будет рассказано во второй, части статьи).
Автомобили при трековых гонках установлены в левой верхней части трека. В левой нижней его части формируется финишная линия, состоящая из двух символов ": :". Задача играющих, стартовав в направлении слева направо, быстрей партнера проехать пять кругов (напомним, что машины могут двигаться и по диагонали), как можно тщательнее "вписываясь" в повороты трека. При столкновении с "обочиной" трека, а также с другой машиной гонщик штрафуется так же, как в ралли. Направление движения может быть любым, что позволяет вести весьма разнообразную тактическую борьбу на трассе с использованием большего числа приемов (разворот и движение навстречу приближающемуся партнеру с целью психологического прессинга, выезд из-за "угла" и т. п.).
При прохождении финишной линии символ машины на мгновение гаснет и раздается звуковой сигнал. В тот момент, когда один из играющих достигнет финиша в пятый раз, игра прекращается, и на экране появляются сообщения, аналогичные приведенным для ралли.
Следует заметить, что при некорректном ведении игры одним из партнеров возможно достижение победы благодаря пятикратному пересечению линии финиша прыжками вперед-назад. Программная защита от такой ситуации значительно увеличивает размер программы, что в данном случае нецелесообразно. Существенно проще заключить соглашение между играющими о честном ведении игры.
Машинные коды программы обеих игр занимают в ОЗУ компьютера область адресов с 0000Н по 0454Н и приведены в табл.1. Их вводят в компьютер по директиве МОНИТОРа "М". После проверки корректности набора программу запускают по адресу 0000Н и, выбрав, например, игру "РАЛЛИ", оценивают правильность реагирования машин на команды с пультов. Направление движения должны соответствовать сочетаниям нажимаемых клавиш. При запрещенных комбинациях (например, одновременной подаче команд влево - вправо или вверх-вниз), и также при трех или четырех нажатых клавишах машины должны оставаться на месте. При неверном реагировании на управляющие команды следует проверить правильность монтажа и подключения к порту ввода клавиши, соответствующей этому направлению.
После освоения игры "РАЛЛИ" и приобретения определенного навыка в обращении с пультами управления можно приступить к построению рисунка игрового поля для трековых гонок. Для этой цели служит программа, исходный текст которой приведен в табл.2.
В начале программы производится стирание экрана и установка элементов игры, положение которых на экране фиксировано (двух машин и финишной линии). Затем в цикле построения собственно рисунка трека поочередно выполняются подпрограммы МОНИТОРа ВВОД (0F803H) и ВЫВСИМ (вывод символа, 0F809H), Нажатие на любую клавишу будет непосредственно отображаться на экране (этот режим аналогичен директиве "К" МОНИТОРа микро-ЭВМ "МИКРО-80"1). После нажатия на клавишу "F4"> весь рисунок трека, построенный на экране, циклом перезаписи будет скопирован в служебную область ОЗУ программы.
Практически работа с программой производится в следующем порядке. В компьютер вводят программы РЕДАКТОР ТЕКСТА АССЕМБЛЕР и с клавиатуры набираются исходный текст программы построения рисунка трека, который переводят в машинные коды программой АССЕМБЛЕР и переносят затем директивой "Т" МОНИТОРа в область ОЗУ с начальным адресом 2000Н. После запуска программы с этого адреса и стирания экрана с помощью клавиш управления курсором, а также клавиш "+", "X", "*" (любой из этих символов является препятствием для машин) "строят трек". При этом следует избегать стирания символов машин и финишной линии. В качестве примера можно воспользоваться рис. 4. После построения рисунка трека нажимают клавишу "F4" - рисунок трека перепишется в служебную область ОЗУ (начиная с адреса 500Н) и произойдет выход в МОНИТОР без стирания экрана. Рисунок трека может быть записан на магнитную ленту (адреса с 500Н по 0CFFH). Таким образом, при использовании игры в "ТРЕК" в компьютер сначала вводят собственно игровую программу, а затем один из треков (на ленте их может быть несколько).
При необходимости можно изменить количество флажков в "РАЛЛИ" и число заездов в "ТРЕКЕ", необходимых для достижения победы. Эти значения находятся в ячейках ОЗУ по адресам 028СН (код 21 Н) и 028ВН (код 05Н) соответственно.
Для тех читателей, которые захотят самостоятельно использовать возможности, вложенные в соревновании двух партнеров, приводим сходный текст подпрограммы, использованной в приведенных играх. Подпрограмма считывания информации из пультов (табл.3) возвращает в регистровой паре DE значение, которое складывается с текущей координатой машины (предварительно она должна быть записана в регистровой паре HL) и дает новый адрес символа машины в ОЗУ экрана. При не нажатых клавишах и запрещенных ситуациях содержимое регистровой пары DE равно 0. Перед использованием подпрограммы необходимо выполнение двух условий. Во-первых, в регистр РУС порта параллельно интерфейса КР580ВВ55А, должен быть записан код 9ВН (все регистры порта настраиваются на чтение). Адрес порта РУС - 0А0А3Н. Во-вторых, при чтении подпрограммой информации из регистра "В" порта в аккумулятор предварительно следует записать ноль, а при чтении с регистра "А" - число, отличное от нуля.
В заключение следует сказать несколько слов о командах чтения информации из портов ввода "IN", используемых в начале подпрограммы. При получении такой команды микропроцессор считывает информацию из порта ввода (или ячейки памяти), расположенного по адресу, шестнадцатеричное значение которого состоит из двух одинаковых байтов, эквивалентных второму байту команды. Поэтому при получении команды IN 0А0Н информация будет считана с регистра "А" порта ввода, поскольку адресный дешифратор компьютера, подключенный к старшим разрядам шины адресов микропроцессора, активизирует для обмена соответствующий порт. Выбор необходимого регистра внутри БИС осуществляется внутренним дешифратором, использующим младшие разряды адресной шины.
А. ПЕКИН, Ю. СОЛНЦЕВ
г. Москва
Описание
компьютера Радио-86РК
|
Журнал
РАДИО
|