Техника - молодёжи 1988-07, страница 17Вверх по лестнице, бегущей вбок «Уважаемая редакция! Предлагаю на ваш суд свою последнюю разработку»,— так начинается письмо горьковского студента А. В. Ракова Однако, внимательно и всесторонне рассмотрев данный документ, а также другие вещественные математические доказательства, администрация КЭИ состава преступления в арифметических и иных действиях нашего корреспондента не обнаружила и приняла решение предать его работу не суду, а гласности. Игра называется «Пи-чо». Принципиальная ее особенность в том, что степень сложности изменяемая, она задается вначале, поэтому круг играющих может быть очень широк. Сущность игры состоит в следующем. Имеется цилиндр — игровое поле. Его высота 4 яруса, длина по окружности 9 клеточек. Вот его развертка: направо бегут квадратные ячейки. Поскольку это цилиндр, то за координатой 9 следует I. В начале игры на 1-м ярусе в квадратике сидит человечек. Задача играющего — вывести его на крышу цилиндра (или, что то же самое, на 5-й ярус). Для этого нужно его переправить сначала на 2-й ярус, затем на 3-й и 4-й. У каждой ячейки своя скорость. Управляя этими скоростями (каким образом, будет рассказано ниже), надо совместить координату квадратика 1-го яруса с координатой 2-го, тогда человечек поднимется на шаг выше. Но дальше задача усложняется: приходится следить, чтобы координата человечка не совпала с координатой ячейки на одном из нижних ярусов. Если такое происходит, человечек «проваливается». На каждом шагу на индикаторе высвечиваются одновременно скорости всех ячеек и их координаты, в регистре же У располагается номер яруса, на котором сейчас человечек. Теперь об управлении скоростями ячеек. Скорость квадратика — это целое число, показывающее, на сколько клеточек он переместится вправо, если ее не менять, за один ход. Управление производится так: вы набираете номер квадратика (яруса), а ПМК перераспределяет соответствующую скорость, разлагая ее на единички и прибавляя к скоростям следующих квадратиков (ярусов), причем после 4-го этажа снова идет 1-й. В результате такой операции каждый квадратик приобретает новую скорость, а новые координаты путем прибавления этих скоростей к прежним координатам. Такой способ задания скоростей очень удобен. Ввод исходных данных упрощен до предела: нажав всего одну кнопку, мы изменяем координаты сразу всех четырех квадратиков. Сумма их скоростей, как легко видеть, в процессе игры остается постоянной, поэтому, выбирая ее в начале игры, можно варьировать степень сложности стоящей перед нами задачи. Информация после каждого хода выводится на индикатор в виде восьмиразрядного числа, разделенного запятой. Слева от запятой располагаются последовательно скорости квадратиков, справа — их координаты. А в регистр У, как я уже упоминал, выводится номер яруса, которого достиг человечек. Если вам удастся на 4-м ярусе совместить координату с восьмеркой, то человек через обозначенный на рисунке люк выбирается на крышу, и в регистре У оказывается цифра 5. Вот программа этой игры для БЗ-34 (МК-54)
Перед началом в регистры заносятся числа: 5 П9 63 ПД 93 ПС Сх ПО. (От редакции: владельцам МК-61 и МК-52 придется сделать стандартное изменение — вместо команды по адресу 69 вписать фрагмент 69.ИПО 70.ПЕ 71.FO 72.КИПЕ, установив таким образом искусственную связь между регистрами О и Е, соответственно указать новые адреса переходов: 55.80 меняется на 55.83, 60.94 на 97, 62.80 на 83, 84.97 и 89.97 на AI, в регистр С вводится новый адрес 96 ПС.) В регистры 1—4 вводится степень сложности (число от 1 до 9, это одновременно и скорость квадратиков), в регистры 5—8 — начальные координаты ячеек (для простоты можно занести то же самое число). Допустим, 3 П1 П2 ПЗ П4 П5 П6 П7 П8. Теперь можно начинать. Сх С/П. Примерно через 20 с на индикаторе загорается начальная позиция: 3333, 3333. Координаты и скорости всех квадратиков равны 3. В регистре У единица — человечек находится на 1-м ярусе. Разберем первые ходы. Если набрать В/О 2 С/П, минуты через полторы на индикаторе появится: 4044, 7377. Что произошло? Скорость квадратика № 2 равнялась 3. После нашей команды она перераспределилась: единичка добавилась к скорости квадратика № 3, вторая — к № 4, третья — к № 1. Таким образом, скорости всех квадратиков, кроме № 2 (а она теперь равна нулю), приняли значение 4, что мы и видим слева от запятой. А справа — новые координаты: три квадратика сместились в положение 7, а № 2 остался на месте. Ход сделан, можно приступать к следующему. Наберем, например, 3 С/П. Скорость 3-го квадратика равна 4. Единичка будет отдана № 4, вторая — № 1, третья — № 2, четвертая достанется самому № 3. Таким образом, новые скорости равны 5115, а новые координаты — 3483. И действительно, на индикаторе загорается 5115, 3483. Теперь попробуйте самостоятельно совмести ib координаты квадратиков 1-го и 2-го ярусов. Если это покажется сложным, то можно упростить игру. Для этого занесем в регистры 1—8 число 2, скомандуем Сх В/О С/П. На экране 2222, 2222. Делаем следующие ходы (в скобках — ответы ПМК): 2 С/П (2033, 4255) 1 С/П (0143, 4398) 3 С/П (1214, 5513). Как видим, координаты квадратиков № 1 и № 2 совпадают. Заглянем в регистр У. На индикаторе 2. Стало быть, наш человечек сделал первый шаг в «высшее общество». Скажу пару слов о сервисных качествах программы. Если индикация случайно стерлась, то ее легко можно восстановить, нажав Сх С/П. Аналогичная команда отдается При переходе во время игры от одного уровня сложности к другому. Программа запрещает нажимать номер квадрата, скорость которого равна нулю. Она попросту не обращает внимания на неправильную команду. Если скорость превышает 9, что иногда случается, то ее, видимо, нельзя правильно отобразить на экране, так как он содержит всего 8 разрядов, в каждом из которых может находиться только однозначное число. В этом случае, как только скорость после очередной команды превысит 9, программа останавливается, и на экране появляется отрицательное число, показывающее, на сколько единиц содержимое ячейки скорости превышает предельное значение. Тем самым программа сигнализирует, что индикация будет неверна, и для получения правильной информации придется «вручную» просматривать регистры 1—8. |