Шумбрат товарищи!
Сразу скажу, я не программист, языков толком не знаю, только самые-самые минимальные знания. Ранее я показывал вам свои детские творческие потуги в программировании на ZX-Spectrum. В основном, - это была смена цвета бордюра, какие-то калькуляторы, и просто вывод какого-то текста на экран. Наставников в этом деле у меня не было, книжек особо тоже, так что изучал все это, как-то так. Переписывал программы из радиолюбительских журналов, рисовал им картинки, немного дорабатывал (делал менюшки и прочие украшательства), так немного и начинал что-то понимать. В общем, в какой-то момент, у меня возникло желание написать что-то самому, игровое. Насколько помню, основных проектов в голове было два:
1. Текстовая адвентура, про исследование и покорение планет, принцип игры которой был в том, что читая сюжет, нам предлагается выбор из нескольких вариантов дальнейших действий, и в зависимости от выбранного варианта, сюжетная линия двигается в ту или иную сторону. В то время были популярны такие квесты в книжках, выбираешь вариант или кидаешь кубик, переходишь на такую-то страницу и так далее. Вот на основе этих книг и была задумка с игрой про космос. Как написать такую игру на бейсике, мне было в принципе понятно. Оставалось самое главное - придумать сюжет и написать сценарий, но вот это как раз как-то не успелось. Было лишь нарисовано несколько картинок, реализовано бросание кубика, вот и все. Так, увы и забылась идея, оставшись только в картинках:
2. Что-то типа стрелялки, а-ля примитивная версия галаксиана. С ней то я и успел немного поморочиться. К сожалению, тогда доделать у меня её не получилось, я запнулся на циклах, как сейчас помню, и не мог правильно реализовать, желаемое действие в игре. Ну никак не получалось. Так и забросил, на дворе был 1999 год - время других компьютеров началось...
И вот проходит 20 лет, и я на волне ностальгии завожу проект - Lyusea MaNa, делаю какие-то ролики про спектрум, снова начинаю поигрывать на эмуляторах, прохожу игрушки, которые в детстве не успел пройти, восстанавливаю данные на своей дискетке и оцифровываю её, чтобы можно было на эмуляторах открывать. Конечно же, натыкаюсь на свои недоделанные проекты. А свербит же, особенно про игру-стрелялку, ведь я уже так близок был к реализации. Но конечно уже не помню как чего, синтаксис и тд. В целом, забил я на это, дискету оцифровал и ладно. И тут волею судеб, спустя еще пару-тройку лет, я чуть-чуть вернулся к программированию, поглядев курсы на пайтоне. И опять на глаза попался код этой игрушки… Захотелось закончить начатое. Короче говоря, есть код в текстовом блокноте, железа нет, клавиатуры с командами тоже. Ищем, как и через что реализовать: Неплохой онлайн-эмулятор с клавиатурой: https://zx.researcher.su/ru/, можно снять/загрузить образ написанного кода в *.sna. Но копировать туда текст нельзя. А ручками переписывать влом. Спектрумисты натолкнули на блог, уважаемого Валерия Лиса: https://neurofox.ru/service/zxbasic, где как раз в режиме онлайн-эмулятора есть возможность копировать код из текста в интерпретатор бейсика и сразу его проверить. Удобно, жаль выгрузить и сохранить в спековский формат нельзя. А что же в коде у нас? А там следующее: в момент когда мы делаем выстрел - процесс останавливается, а надо чтобы все продолжалось одновременно, дрон летел и снаряд.
Понимаю, что цикл 55 FOR k=18 TO 2 STEP -1 здесь реально лишний.
В общем крутил я код итак и эдак. Вроде как переменную надо добавить и по ней отслеживать движение снаряда, но что-то все равно никак не мог сообразить. Лукавить не буду, делать нечего, обратился за подсказкой. Через группу вконтакте написал владельцу онлайн-эмулятора - Лису, не отказал и подсказал, где собака порылась, спасибо тебе добрый человек! А всего лишь, надо было добавить дополнительную переменную и запихнуть изменение этой переменной внутрь общего цикла игрового процесса:
IF k = 2 AND l >= 24 AND l <= 28 THEN BEEP 0.2,-40: BEEP 0.1,-55: BORDER 2: PAUSE 5: BORDER 3: PRINT AT 0,0;"BOOM!": LET d = d + 1: LET f = d: PAUSE 10
Ура, все заработало как надо! Представляете, 25 лет прошло с момента как я начал писать эту игру. Дело за малым, надо это дело оформить как следует. Тут же, в блоге у Лиса, наткнулся на простенький графический редактор - которым и воспользовался, рисуешь - а он сразу в код бейсика записывает. Набросал заставку, добавил немного визуальных эффектов, счетчик попаданий, звук. Далее оформляем в нужный формат. Копируем код, далее, опять же в чатике, спектрумисты подсказали сайтец с утилитами vtrd. Берем оттуда утилиту BasinC v1.794 (по слухам, к ней, кстати, приложили руки разработчики ZX-Spectrum). Ставим на ПК. Вообще супер, вставляем код, в настройках делаем автозапуск, и экспортируем в tap-файл.
Вуаля. Наконец-то мой 25-летний гештальт закрыт! Теперь можно сравнить как было и как стало:
Всем спасибо за внимание!