Give him the Hook 10 by Commocore
Дайте ему крючок
============
Это мой третий 10-строчный текст, написанный на BASIC для Commodore 64.
Эта игра была представлена на конкурс Basic 10-Liner Contest 2022 в категории PUR-80.
Вдохновлен польским плакатом 70-х годов под названием "Klowni" Яна Млодоженьца для фильма "Клоуны" режиссера Федерико Феллини.
Сюжет
----
Это первая игра из серии The Trick Triptych. Перспективный клоун (хотя именно так о нем говорили 20 лет назад) немного ошалел, попивая во время циркового представления какое-то подозрительное зелье из фляги. Поскольку его выступление в лучшем случае можно было охарактеризовать как скучное, нетворческое и размытое, люди начали кричать, а неопознанные летающие объекты (НЛО) начали летать туда-сюда.
Осталось только убрать клоуна со сцены...
К счастью, у вас есть подходящий инструмент для работы: крючок Vaudeville. Имейте в виду, что это часть традиции использовать крючок при необходимости!
Как директор цирка "Искусство, трюки, жонглирование, акробатика и спасение животных", вы точно знаете, что должны делать.
Попробуйте оттащить клоуна со сцены: "Дайте ему крючок!", кричат зрители.
Однако он упрямый парень, так что не удивляйтесь, когда он попытается вернуться на сцену. И когда он это сделает, вам придется начинать эту комедию заново!
Экран
-------
В левом верхнем углу вы можете увидетье текущий уровень. По мере продвижения расстояние крюка увеличивается.
Элементы управления
--------
Используйте джойстик в порту 2. Чтобы управлять положением крюка, перемещайте джойстик влево или вправо. Чтобы освободить крюк, нажмите кнопку огня.
Советы и рекомендации
--------
Попробуйте прицелиться клоуну в заднюю ногу.
Описание кода
----------------
Большая проблема с этим 10-строчным текстом заключалась в том, что у меня не было места для операторов IF (поскольку в таком случае дальнейший код не может быть выполнен после). Это заставило меня задуматься
для записи всех условий в состояниях, где каждое состояние представляет собой комбинацию математических выражений, где одна часть может быть исключена или включена на основе
умножение условия. Всегда интересно посмотреть на вещи по-другому, и это то, что мне понравилось в этом вызове. Например,
Определение следующего игрового уровня в одном условии было довольно удобной задачей:
```
V=-(G=-1)*(V*-(G=-1))+1
```
Если G равно 0, уровень будет сброшен на 0. Если он равен -1, уровень увеличится на 1.
Это так забавно, что я стал жертвой подсчета с нуля. Когда я подумал, что игра закончена, я понял, что не было
10, но 11 строк, начиная с 0! Поэтому мне нужно было сократить одну полную строку кода BASIC. Из-за этого я не смог добавить ни одного звука,
что-то, что я хотел иметь изначально. Тем не менее, я надеюсь, что в эту игру по-прежнему интересно играть!
Построчный обзор кода
--------------------------
– Строка 0:
- Построение хука с использованием цикла FOR, также строка, используемая во время анимации при перемещении хука вверх, инициализация начального уровня
— Сохранение верхней части клоуна (в A$), которая хранится в DATA (строка 9)
— Определение строки, используемой для управления вертикальным положением крючка (в долларах США)
- Установка адреса памяти экрана (в S)
– Строка 1:
- Настройка средней части клоуна (в B$)
– Строка 2:
- Установка нижней части клоуна в нормальное состояние (в C$(0))
— Настройка нескольких переменных (описано в обзоре переменных ниже)
– Строка 3:
- Настройка нижней части клоуна в состоянии прыжка (в C$(1))
— Настройка нескольких переменных (описано в обзоре переменных ниже)
— Очистка экрана
- Отображение текущего уровня
– Строка 4:
– здесь начинается цикл игры
- Настройка нижней части клоуна в состоянии извлечения из состояния сцены (в C$(2))
- Чтение джойстика в порту 2
- Настройка цвета фона и границы экрана (не осталось места, чтобы поставить его перед игровым циклом)
– Строка 5:
- Чтение адреса порта 2 джойстика
- Установка горизонтального положения крюка (в L), также включает ограничение и то, что крюк нельзя перемещать после его отпускания (если M равно -1, то кнопка огня быланажал)
- Для переменной E (вертикальное положение крюка), если была нажата кнопка огня, это значение уменьшится, поэтому крюк будет двигаться вверх, пока не достигнет E = 0
– Строка 6:
- В случае, если E = 0, это означает, что крючок уже был отпущен и достиг вершины, поэтому горизонтальное положение также будет скорректировано, чтобы воспроизвести анимацию перемещения крючка вправо
- Отображение клоуна в правильном положении на экране
— Отображение хука
– Строка 7:
- Рандомизация следующей позиции клоуна
- Регулировать следующее положение клоуна только в том случае, если оно удовлетворяет а) пределам горизонтального положения (X > 5 и X < 20) б) прыжок не выполняется (переменная U) в) крюк не достиг сверху (переменная E)
- Сохранение состояния в переменной G, если крюк зацепил клоунскую лапку (когда X = L)
– Строка 8:
- Очистка следующей строки хука в случае, если выполняется анимация перемещения хука вверх
- При установке G клоун будет стягиваться с крючком (X увеличится)
- U содержит состояние, если клоун прыгает (когда крюк был близко к клоуну по горизонтали (ABS(X-L)<5) и крюк уже сверху (E=0))
- Рассчитать состояние, в котором должна отображаться нижняя часть клоуна (зависит от U для прыжка клоуна и G для вытягивания клоуна)
– Строка 9:
- В случае, если крюк все еще не достиг вершины или горизонтальное положение крюка находится в диапазоне, conпродолжить цикл, перейдя к строке 4
- В противном случае вычислить следующий уровень (если клоуна притянули, уровень повысится, иначе сбросится на 1), перейти к строке 2 для инициализации уровня
- В конце DATA, содержащие верхнюю часть клоуна, которая читается в строке 0
Обзор переменных и некоторые хитрости
-------------------------------------------------------
- P$ - строка с крючком
- G$ - строка, очищающая старую позицию хука
- V - начальный уровень
- A$ - верхняя часть клоуна
- U$ - строка, используемая для вертикального положения крючка
- S - адрес памяти экрана, используемый для POKE'ов
- B$ - средняя часть клоуна
- C$(0-2) - графика нижней части клоуна для каждого состояния (см. описание состояний в переменной A)
- A - состояние анимации нижней части клоуна: 0 - нормально, 1 - клоун прыгает, 2 - клоун стаскивается со сцены
- E - вертикальное положение крючка, а также текущий уровень, настройка в зависимости от результата из строки 9
- G - сохраняет состояние, если клоуна вытащили со сцены
- L - горизонтальное положение крюка
- M - сохраняет состояние, если была нажата кнопка фаер джойстика
- X - горизонтальное положение клоуна
- J - чтение адреса порта 2 джойстика (56320)
- K - используется для определения следующего положения крючка, а также повторно используется для рандомизации следующего горизонтального положения клоуна (-1, 0 или 1)
- U - сохраняет состояние, есликлоун прыгает
Как скачать Give him the Hook 10 by Commocore через торрент
Всего несколько простых шагов:
- Устанавливаем программу μTorrent, через которую мы будем скачивать торренты
- Выбираем и скачиваем подходящий торрент-файл репака Give him the Hook 10 by Commocore
- Двойным кликом открываем скаченный файл, программа μTorrent запустится автоматически и предложит выбрать место для сохранения дистрибутива.
- После того как репак скачается, запускайте его. Начнется установка и... это все, приятной игры!