март 10, 2021

Archer10 by Humberto Martinez Barbera

Добавить в
Мои игры
Торрент
Скачать

ARCHER10

Несколько недель назад я узнал о конкурсе по ретро-программированию, да, через одну из этих групп Wasap, 10-е издание конкурса BASIC 10 Liner Contest. Основная идея заключается в том, что вы разрабатываете игру на BASIC, используя не более 10 строк кода для устаревших 8-битных компьютеров. Существуют различные категории в зависимости от максимально допустимого количества символов в строке. Просто, не так ли? Я решил попробовать и сделал программу MSX-1, которую представил на конкурс. Подробное описание программы можно найти в Archer 10 (MSX). Представление для участия в конкурсе 10-лайнеров 2021 года. Закончив, я спросил себя: почему бы не портировать Apple II? Хотя в 80-е годы я разработал несколько программ для Apple II, в основном это были CP/M с Microsoft BASIC. Вы можете найти пример в Recuperación de código MBASIC para Apple II desde listados (он на испанском языке, но вы можете понять идею из множества изображений. Google Translate также может оказаться полезным). В любом случае, учиться никогда не поздно. И у меня был соответствующий материал для вступления в работу:

  • Д. Финнинган (2012 г.) Руководство пользователя нового Apple II. Mac GUI, Линкольн, Иллинойс (книга)
  • М.Л. Каллери, Р. Шварц (1984) Графические инструменты и методы Apple. Прентис-Холл (PDF)

Я решил максимально имитировать упомянутую выше программу MSX-1 и разработать программу AppleSoft BASIC. У меня был игровой процесс и образец исходного кода из 10 строк. Это должно быть большее более чем достаточно. Я хотел сохранить графику, цвета и звуки высокого разрешения, даже если они для MSX были немного странными (отказ от ответственности: я очень плохо разбираюсь в играх, цветах и ​​музыке. Идеальное сочетание :-).

Программирование

Первое, что я узнал, это то, что графика двойного высокого разрешения недоступна в BASIC. А графика стандартного разрешения просто сумасшедшая по цветопередаче, не говоря уже о маленькой доступной палитре. В любом случае, это не помешало мне идти вперед. Из-за небольшого размера программы сложные звуки также исключены. Что ж, давайте возьмем более простую и менее визуально привлекательную версию, но с тем же геймплеем, которую я выбрал для версии MSX-1.

Я начал программировать с самого начала, думая о программе из 10 строк, имея опыт работы с версией MSX. Но поскольку графических возможностей было меньше, я попробовал войти в категорию ПУР-120. Ни за что. Мне пришлось ещё больше сократить визуальные аспекты, а я хотел поддержать их минимум. Таким образом я оказался в категории EXTREME-256. Помимо всего лишь десяти строк кода, каждая строка не должна содержать более 256 символов. В целом код не может быть больше 2,5 Кб!!! Чтобы сжать код до такого размера, нужно использовать очень старые трюки. Интерпретатор BASIC использует лексический анализатор, основанный на обнаружении ключевых слов, а не на разделителях. По сути, это означает, что вы можете писать код без пробелов. Кого волнует читабельность!!! Затем вы используетепеременные электронной буквы и однозначные номера строк (ведь помните, нельзя использовать больше 10 :-).

Это стандартная вещь для 10-строчного текста. Когда вам действительно нужно написать код игрового процесса, у вас внезапно начинает болеть голова. Во-первых, в AppleSoft BASIC нет операторов ELSE. Типичная стратегия — оставлять условные выражения в конце строк и использовать ELSE для лучшего управления решениями (с точки зрения использования программного пространства и строк). Тааак... приходится декомпозировать решения и разбить их на разные строки. Сложно, не так ли? Давайте посмотрим.

Код

Строки с 0 по 3 инициализируют программу и выполняют все графические фоновые рисунки и определение форм. Порядок выполнения инструкций зависит от доступного строкового пространства. Я пробовал разные комбинации. Одна интересная и важная вещь заключается в том, что для воспроизведения необходима только строка 3, поэтому вы можете ПЕРЕХОДИТЬ К 3, когда игра закончится, чтобы начать новую.

Строка 9 выполняет обновление текста. Он закодирован в виде подпрограммы, которая вызывается при инициализации игры и всякий раз, когда происходит попадание или сбой.

Строки с 4 по 8 реализуют игровой процесс. Они управляют движением стрел и мишеней, пользовательским вводом и подсчетом очков. Попадание или провал стрелы проверяется в строках 6 (попадание) и 7 (провал). Строка 8 просто замыкает игровой цикл. Если доступны операторы ELSE, эта строка, состоящая из одного оператора, не понадобится. Строка 7 играет хороший трюк. Когда игра окончена, игровой циклпродолжается, но метание стрел отключено. Пока не нажмешь пробел и игра не инициализируется заново.

Строки с 8 по 9 содержат определения ДАННЫХ для графических фигур, закодированных в десятичном формате. Эти операторы помещаются в конце фактического кода, поэтому мы можем использовать символы, доступные в этих строках. Я пытался избавиться от любого символа, который не соответствует стандарту ASCII. Поскольку я занимаюсь разработкой как на своем Mac, так и на своем Apple IIe, в противном случае у меня возникло бы много головной боли при попытке сохранить кодировку символов.

Состояние игры кодируется с использованием следующих переменных:

  • YY (с плавающей запятой): вертикальное положение цели в пикселях. Варьируется в диапазоне 34..125
  • S (Float): количество в пикселях, которое добавляется/вычитается из Y на каждом временном шаге. Он контролирует скорость цели. Его начальное значение равно 1,0. Каждый раз, когда происходит попадание, оно увеличивается на 0,25.
  • X (Целое число): горизонтальное положение стрелки в пикселях. Варьируется в диапазоне 200..32.
  • D (Целое число): линейное расстояние между положением стрелки y и целевым положением y.
  • G (целое число): общее количество полученных баллов.
  • F (Целое число): количество неудачных попыток.
  • H (Целое число): оценка последнего попадания, полученная из D.
  • B (Целое число): переменная состояния, указывающая, движется ли стрелка (B=1) или нет (B=0).
  • Вопрос (яnteger): переменная состояния, показывающая, активна ли игра (Q=0) или нет (Q=1).

Наконец-то у меня появился код размером 1,7 Кб, в 10 строках BASIC, со стандартной кодировкой символов ASCII. Хороший. Цель достигнута.

<р> Инструкции

Вы первоклассный лучник в «Мировой серии по стрельбе из лука на открытом воздухе. Движущаяся мишень». Вы бросаете стрелу, нажимая клавишу пробела, и не можете бросить новую, пока она либо не попадет, либо не потерпит неудачу. Мишень движется, поэтому вам нужно тщательно синхронизировать бросок стрелы с движением цели. Скорость цели увеличивается с каждым ударом. Вы получаете очки за каждое попадание в зависимости от того, насколько близко стрела подойдет к центру цели. Вам разрешено максимум 3 неудачи, и в этом случае соревнование завершается, и вы получаете окончательный результат. Чтобы начать новую игру, нажмите пробел.

Вы готовы? Сможете ли вы заработать больше ста очков? Давай попробуем.

Загрузите файл archer10.dsk с GitHub и перетащите его на значок Диск 1 на эмуляторе Virtual II (фантастическое приложение Джерарда Путтера, которое стоит цена платной версии). После загрузки диска введите в консоли следующую команду и нажмите INTRO:

ЗАПУСК ARCHER10.BAS

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

Наслаждайтесь игрой!!

<р>

Как скачать Archer10 by Humberto Martinez Barbera через торрент

Всего несколько простых шагов:

  • Устанавливаем программу μTorrent, через которую мы будем скачивать торренты
  • Выбираем и скачиваем подходящий торрент-файл репака Archer10 by Humberto Martinez Barbera
  • Двойным кликом открываем скаченный файл, программа μTorrent запустится автоматически и предложит выбрать место для сохранения дистрибутива.
  • После того как репак скачается, запускайте его. Начнется установка и... это все, приятной игры!