Give him the hook 10
Это мой третий 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, а также строки, используемой во время анимации при перемещении хука вверх, инициализация thе начальный уровень
– Сохранение верхней части клоуна (в 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:
- В случае, если крючок все еще не достиг вершины или горизонтальное положение крючка находится в диапазоне, продолжайте петлю, переходя к строке 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 - сохраняет состояние, если клоун прыгает
Развлекайтесь с другими играми, представленными на конкурс BASIC 10-Liner!
Спасибо https://lvllvl.com/c64/ за отличный пример JS.встраивание мулятора!
Посетите сайт www.commocore.com, чтобы узнать о других играх и проектах с открытым исходным кодом!
Бартош Жолинский
Как скачать Give him the hook 10 через торрент
Всего несколько простых шагов:
- Устанавливаем программу μTorrent, через которую мы будем скачивать торренты
- Выбираем и скачиваем подходящий торрент-файл репака Give him the hook 10
- Двойным кликом открываем скаченный файл, программа μTorrent запустится автоматически и предложит выбрать место для сохранения дистрибутива.
- После того как репак скачается, запускайте его. Начнется установка и... это все, приятной игры!