



















Trick Shot TEN by Jim Happel

Базовый вкладыш 10
Название игры:
Trick Shoot-TEN
Категория:
ПУР-80
Компьютер/БАЗОВЫЙ:
Commodore PET 2001 BASIC 1 (исходные ПЗУ с ошибками)
Описание игры:
Соревнование по трюковой стрельбе! Поднимите мяч на нужную высоту, бросьте его на рампу и забросьте в корзину. По мере того, как вы делаете все больше и больше бросков, корзины становятся все меньше и появляются в более случайных местах. Сколько трюковых бросков вы можете сделать подряд?
Инструкции по игре:
Удерживайте клавишу пробела, пока не будет достигнута желаемая высота мяча, а затем отпустите! Смотрите, как мяч падает на рампу и отскакивает к корзине. После подсчета очков нажмите пробел, чтобы начать следующий раунд. Ваш текущий счет отображается вверху по центру экрана, а самый высокий балл отображается вверху слева. Чтобы начать новую игру, нажмите пробел.
Особенности игры:
- Отображает как текущий балл, так и высокий балл
– Увеличение сложности — корзина становится меньше, а расположение становится более случайным
– Истинные параболические расчеты
– Красивая графика PETSCII
– Уникальные игровые звуки движения мяча, подсчета очков и окончания игры.
Видео игры на настоящем ПЭТ 2001 (дизайн 1977 года):
Код:
Ни одна строка не длиннее 80 символов при вводе с использованием стандартных экранных кодов commodore и сокращенных команд.
- В VICE:
Список программ PET 2001 screen.png
– В ASCII с описанием кода экрана
0 POKE59466,15:POKE59467,16:L=(-10+S)*(10-S>0)+3:X=0:Y=12:T=24:IFBПеременная, имя, описание
B, лучший, высокий балл
C, Char, Экранный код символа для печати на экране
H, H, значение формулы параболы
I, I temp, временная переменная цикла
J, J temp, временная переменная цикла
К, К, значение формулы Параболы
L, длина, длина корзины
O, Смещение, Смещение корзины слева
P, Позиция, Текущая позиция мяча в памяти экрана
S, Счет, Счет текущей игры
T, T Pos, Последнее нарисованное местоположение Y
X, X Pos, X местоположение для рисования персонажа
Y, Y Pos, Y место для рисования персонажа
Z, Z Pos, последнее нарисованное X местоположение
Как это работает:
Код сильно зависит от подпрограммы в строках 8 и 9, поэтому я начну с нее (по строке №):
8: рисует указанный символ (экранный код) C на экране в точках X,Y. Он также очищает (space=32) последнее место, нарисованное в (Z,T), чтобы анимация мяча не оставляла следов. GOSUB к строке 8 не возвращается, но переходит к строке 9 перед RETURN.
9: Воспроизведение короткого сигнала в зависимости от последней точки Y. В нем используется звуковая модификация CB2, которая была обычным хаком пользователей для PET 2001 — commodore принял это соглашение в более поздних PET. Символ, находящийся выше на экране (нижний Y), получает более высокий тон, так что дуга шара издает приятный звук подъема и опускания в зависимости от положения мяча. Строка 9 также вызывается напрямую, когда нужно воспроизвести звук без рисования.на экран (например, звуки подсчета очков и окончания игры)
0: Устанавливает звук CB2, вычисляет длину (L) для следующей корзины (цель), устанавливает X, Y на 0,12 и символ на 223 (наклон), и проверяет, если высокий балл (B ) необходимо обновить. Длина (L) должна уменьшаться на единицу в каждом раунде до 3, а затем оставаться на этом уровне. Поскольку commodore BASIC 1 не поддерживает ELSE в операторах IF THEN (нет L=L-1:IF L<3 THEN L=3 ELSE), необходимы инновационные средства. Уравнение (10-S>0) используется для остановки уменьшения на нуле. Он оценивается как ИСТИНА (-1) или ЛОЖЬ (0). Следовательно, если оценка равна 9 или меньше, (10-S>0)=-1; но если оценка 10 или более, (10-S>0)=0. (-10+S) начнется с -10 и начнет обратный отсчет (фактически вверх, поскольку он отрицательный) по мере увеличения счета (S). Примеры: Если S=0; (-10+S)*(10-S>0)=(-10)*(-1)=10. Если S=8; (-10+S)*(10-S>0)=(-2)*(-1)=2. Если S=11; (-10+S)*(10-S>0)=(1)*(0)=0. Добавлена константа 3, чтобы ширина корзины не была меньше трех символов. Таким образом, ширина начинается с 13 и уменьшается до 3.
1: очищает экран и печатает высокий балл (B) и текущий счет (S), устанавливает наименьшую позицию Y (T) в безвредное значение для стирания в строке 8, вызывает процедуру в 8 для рисования символа рампы, присваивает C значение 102 (шахматная доска), вычисляет смещение (O) корзины (цели) от левого края экрана и вычисляет значение Y корзины (цели). Для смещения RND(0)*S создает случайное значение вплоть до текущего значения S и, следовательно, рандom размещение растет по мере роста вашего счета. Выполнение И с 15 ограничивает значение 15. Добавляется константа 9, так что смещения могут варьироваться от 9 до 24. Для значения Y RND(0)*S создает случайное значение вплоть до текущего значения S и, следовательно, случайный место растет по мере роста вашего счета. И с 7 ограничивает значение 7. Добавляется константа 14, так что значение Y корзины может варьироваться от 14 до 21.
2: FOR J циклически рисует две линии корзины (цель), FOR X рисует от смещения (O) до смещения плюс длина (O+L), последний Y устанавливается в безопасное место (T = 24), нарисуйте процедуру и петлю, увеличивая Y (следующая строка) между двумя петлями J. Устанавливает X, Y = 0,12, T = 24 (последний безопасный Y) и C = 81 и вызывает процедуру рисования, чтобы нарисовать мяч на рампе. Ждет пробел.
3: перемещает мяч вверх (Y-1), пока нажата клавиша пробела (PEEK(515)=6). ABS предотвращает превращение значения Y мяча в отрицательное число и создает веселое подпрыгивание в верхней части экрана. Третья строка короткая, но зацикливается на самой себе. Как только пробел будет отпущен, код упадет до строки 4.
4: Константы уравнения параболы (H.K) рассчитываются на основе значения Y, когда клавиша пробела была отпущена. Цикл FOR NEXT перемещает мяч обратно на рампу. Уравнение параболы было получено из: https://www.radfordmathematics.com/functions/quadratic-functions-parabola/vertex...
5: Теперь мяч движется по параболической дуге. X увеличивается на единицу, а значение Y равно cвычисляется по уравнению. ONSGN(22-Y)+2GOTO7 переходит к строке 7 (игра окончена), если значение Y мяча больше 22. Поскольку commodore BASIC 1 не поддерживает ELSE в операторах IF THEN (без IF Y>22 THEN 7 ELSE), нужны инновационные средства. SGN(22-Y) проверяет знак 22-Y. Когда он отрицательный (22> Y), он дает значение -1. ON разветвляется со значением 1. Таким образом, SGN(22>Y)+2 = -1+2 = 1, когда Y>22. ONABS(PEEK(P+40)-101)GOTO6 переходит к строке 6, когда символ под мячом представляет собой шахматную доску. PEEK(P+40) получает экранный код символа под мячом. Мы ищем 102, символ шахматной доски. ON разветвляется со значением 1. Таким образом, PEEK(P+40)-101=102-101=1, если символ под шаром представляет собой шахматную доску. Ошибка команды ON при отрицательных значениях, поэтому для защиты от этого используется ABS (например, пробел = 32, поэтому PEEK(P+40)-101=32-101=-69 без ABS).
<р>6. Это процедура подсчета очков. Эта строка выводит красивое сообщение, добавляет единицу к счету, устанавливает значение Y на что-то низкое (2), выполняет цикл FOR J, который вызывает звуковую процедуру 4 раза, уменьшая Y между циклами, создавая приятный чирикающий звук, сигнализирующий о счете, ждет для нажатия пробела, а затем GOTOs 0. <р>7. Это игра над рутиной. Эта строка выводит сообщение о завершении игры, устанавливает значение Y в какое-то высокое значение (14), выполняет цикл FOR J, который вызывает звуковую процедуру, увеличивая Y в 12 раз между циклами, создавая уменьшающийся низкий звук, сигнализирующий об окончании игры.ждет нажатия пробела, устанавливает счет равным 0, а затем переходит к 0.


Как скачать Trick Shot TEN by Jim Happel через торрент
Всего несколько простых шагов:
- Устанавливаем программу μTorrent, через которую мы будем скачивать торренты
- Выбираем и скачиваем подходящий торрент-файл репака Trick Shot TEN by Jim Happel
- Двойным кликом открываем скаченный файл, программа μTorrent запустится автоматически и предложит выбрать место для сохранения дистрибутива.
- После того как репак скачается, запускайте его. Начнется установка и... это все, приятной игры!