март 26, 2022

Sigils by Kim Slawson

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

# символов

Ким Слоусон, февраль – март 2022 г.

*NOMAM* Заявка на участие в конкурсе 10-Line BASIC 2022 (категория EXTREME-256)

Требуется 8-битная машина Atari или эмулятор под управлением TurboBASIC XL (минимум 800XL)

Прилагаемый образ диска содержит TurboBASIC XL и автоматически запускает игру.

## Шаг

Это связное, но более интересное. Во время игры вы формируете символы (сигилы). Кроме того, слышен беспричинный грохот.

## Для игры 🕹️

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

## Подождите, вы сказали редактор уровней ⁉️

Да, Вирджиния, редактор уровней есть. Когда вы освоите все включенные уровни, весело проведите время, создавая свои собственные. Рисуйте точки, пока не будете готовы играть, затем удерживайте огонь более секунды. Экран мигнет, показывая, что вы сейчас играете на домашнем уровне. Если вы застряли или просто хотите повторить свое творение, нажмите «Огонь».

## Колофон  🧰

Sigils была разработана на Macbook Pro и протестирована с использованием Atari800MacX и моей детской Atari 130XE. Приветствую следующих пользователей AtariAge: @dmsc для BasicParser, @skr для MacTurban, @luckybuck для интеграции Sublime Text и @mozzwald и @tschak909 для FujiNet /|\ 

## Исходный код  💻

Если вам интересно, ознакомьтесь с прокомментированным исходным кодом ниже. Вы также можете просмотреть запутанный исходный код (если осмелитесь). Пользуйся источником, Люк!

 Читабельный список с комментариями

```базовый

REM-сигилы REM написан для соревнований NOMAM Ten-line BASIC 2022 года. REM построен с помощью Turban (TURboBAsic Nifty) REM запутан с помощью tbxlparser Для REM требуется Turbo-BASIC XL. REM от Кима Слоусона Рем 2022-02-22 ОПИСАНИЕ: продолжу настройку rem   кодировать строки временное название rem  получить номер уровня рем цикл все ясно уровень игры rem     если редактор уровней rem       уровень сборки, начальный уровень приостановлен rem       уровень сохранения в массиве рем     иначе, если нормальный уровень rem       уровень отрисовки (вызов из массива, если он создан пользователем) rem       уровень игры, повторите уровень в огне rem       уровень приращения после завершения rem повторно запустите настройку и меню еще раз poke 580,1:rem убедитесь, что RESET выполняет холодный, а не теплый старт. тыкаем 82,0:rem без маржи rem размер строки для хранения уровней rem размер 2D-массива для запоминания созданных пользователем уровней rem размер массивов для хранения ширины уровней и начальных позиций x,y уровень яркости$(255),l(16,8),wid(10),x(10),y(10) rem кодирует уровни в строку, к которой добавляется длина подстроки по уровню rem size, startx, starty, затем столбцы с битовой кодировкой в ​​виде символов (8 бит в высоту по размеру в битах) rem lvl: 1 2 3 4 5 6 78                 9              10 level$=["<8<<<<<\1C\14\1C\08\1C\14\1C\38\1C\3C\38\30\38\2C\7E\7E\20\FF\FF \FF\FE\FE\FE\FC\FC\FC\1C\1C\7F\77\7F\1C\1C\1C\36\3E\1C\1C\04\1C\1C\04\1C\7E \5A\7E\7E\5A\7E\0F\3B\2E\3B\0F\0C\0C\0E\1B\7F\CE\80\FC\FE\FE\7E\78\40\CE\82 \FE"] Гр.3: режим удаления 3 с текстовым окном для заголовков и инструкций poke 710,0:rem черное текстовое окно название розыгрыша рем цвет 1 для у = от 0 до 2 для х = от 0 до 9 график x*2+11,y*2 следующий х в следующем году цвет 0: сюжет 25,0: сюжет 25,2 цвет 2 повторить rem получить координаты заголовка из DATA прочитать х,у rem отрицательная координата x означает график, положительная означает отрисовку (плюс смещение x к центру) если x<0:постройте abs(x)+11,y:else:drawto x+11,y:endif пауза 5: рем замедлить последовательность титров до тех пор, пока (x=16 и y=4) Выбери уровень или отредактируй свой собственный! rem перезапустить при неверном вводе ловушка #беги ? ["  ~{lbar}1~{lbar}Легкий ~{lbar}2~{lbar}Очки ~{lbar}3~{lbar}Дом ~{lbar}4~{lbar}Четыре"] ? ["  ~{lbar}5~{lbar}Город ~{lbar}6~{lbar}Крест ~{lbar}7~{lbar}Ключ ~{lbar}8~{lbar}Отверстия"] ? ["  ~{lbar}9~{lbar}Череп ~{lbar}10~{lbar}Йоргл ~{lbar}0~{lbar}Редактор уровней"] введите «Уровень»;уровень:cls rem начальные позиции уровня чтения в массивы x и y для i=1 до 10: прочитайте w,x,y:wid(i)=w:x(i)=x:y(i)=y:next i rem основной игровой цикл делать Очисти экран Гр.3: режим удаления 3 с текстовым окном для заголовков и инструкций poke 710,0:rem черное текстовое окно тыкаем 752,1:rem избавляемся от курсора rem пользователь выбрал редактор уровней? если уровеньl=0 и остаток=0 ? ,"Создайте свой собственный уровень!" ? [" ~{lbar}FIRE~{lbar}чтобы построить/удалить, удерживайте~{lbar}FIRE~{lbar}чтобы воспроизвести"] установить начальную точку пауза 30 x=4:y=4:btime=time:mtime=time:oc=0:rem инициализировать курсор и время пока 2-сделано-б рем моргни курсором если time-btime>10:btime=time:b=1-b:color b*2-oc*b:plot x,y:endif REM получить положение джойстика S=ПАЛКА(0) dy=((S=13)-(S=14))*2 dx=((S=7)-(S=11))*2 рем, посмотри на следующее место ny=y+dy:nx=x+dx ny=y+dy*((ny>3) и (ny<19)):nx=x+dx*((nx>3) и (nx<35)) рем синхронизировать движение синхронно с таймером если время-mtime>20 и (dx или dy) рем перерисовывает исходное место и рисует следующее место цвет oc:plot x,y х=nx:y=ny найти x,y,oc цвет 2: график x,y мвремя=время конец если стриг(0)=0 mtime=time:oc=1-oc:remaining=remaining+(oc*2-1):rem сбросить таймер перемещения, увеличить количество точек повторять:до стриг(0) if time-mtime>60:rem, если пользователь держит огонь более секунды, все готово готово=1 тыкать 712,180:тыкать 710,180:пауза 10:тыкать 712,0:тыкать 710,0:rem мигать на экране, чтобы подтвердить, что пользователь закончил конец конец идти помни, что позиция х(0)=х:у(0)=у rem уровень чтения в массив в случае сброса пользователя для х = от 0 до 15 для у = от 0 до 7 найдите 4+x*2,4+y*2,oc l(x,y)=oc>0 в следующем году следующий х конец рем рисовать уровень осталось=0:о=0 если уровень=0 rem вспомнить созданный пользователем уровень из 2D array для х = от 0 до 15 для у = от 0 до 7 ок=l(х,у) цвет ок участок 4+x*2,4+y*2 rest=remaining+oc:rem увеличивает количество точек в следующем году следующий х позиция повторного вызова х=х(0):у=у(0) кл:? [" ~{lbar}FIRE~{lbar}для повтора уровня, ~{lbar}RESET~{lbar}для меню"] еще смещение rem в строке уровня для текущего уровня = размер уровня для i=0 до уровня-1 о=о+ширина(я) следующий я строка декодирования rem цвет 1 ширина=ширина(уровень) для y=1 в ширину oc=asc(уровень$(o+y)) бит=0,5 для х = от 0 до 7 бит=бит*2 if (oc & bit = бит):plot y*2+18-wid,x*2+3:remaining=remaining+1:endif следующий х в следующем году установить начальную точку x=x(уровень)*2+20-wid:y=y(уровень)*2+3 конец рем играть в уровень btime=time:mtime=time:original=remaining:rem инициализировать курсор и время пауза 30: небольшая пауза для драматического эффекта оставаясь>1 if time-btime>60:btime=time:b=1-b:color b*2:plot x,y:endif:rem моргает курсором REM получить положение джойстика S=ПАЛКА(0) dy=((S=13)-(S=14)) dx=((S=7)-(S=11)) рем, посмотри на следующее место ny=y+dy:nx=x+dx n2y=y+dy*2:n2x=x+dx*2 найти nx,ny,c:найти n2x,n2y,c2 рем синхронизировать движение синхронно с таймером если время-mtime>20 если c2=1 и c=0:rem, может ли игрок двигаться в этом направлении? Тыкаем 77,0:rem отключить режим притяжения цвет 2:plot x,y:plot nx,ny:plot n2x,n2y:rem переход к следующей точке x=n2x:y=n2y:remaining=remaining-1:mtime=time:rem обновить позицию, уменьшить точки, сбросить таймер перемещения рем, сделаю немногошум! расширить высоту звука в пределах 0...255 шаг=255-(255/исходный)*осталось звук 0, высота, 10,1 else:rem спойлер: игрок не может двигаться в этом направлении рем святой грохот бэтмен if dx или dy:poke 712,6:poke 710,6:пауза 5:poke 712,0:poke 710,0:mtime=time:sound 0,pitch,2,8:пауза 10:endif звук конец конец if strig(0)=0:exit:endif:rem выйдет из цикла, если игрок нажмет кнопку огня (повторите уровень) идти звук: рем, выключи звук на всякий случай логика rem для конца уровня. перезапустите, если все сделано. если осталось = 1 ?:? ," Отличная работа!" для x = от 0 до 255: тыкайте 709, x: пауза 1: следующий x: rem oo, причудливые цвета. может мне стоит сделать десятистрочный световой синтезатор, а-ля llamasoft if level=0:run:endif:rem если мы закончили наш собственный уровень, созданный пользователем, все готово, поэтому перезапустите игру level=(level+1) mod 11:rem увеличивает уровень, в конце переходя к редактору уровней (уровень 0) конец цикл:rem конец основного игрового цикла рем, заполни эту строку данью уважения HSW «Все уважение Говарду Скотту Уоршоу, которому посвящено мое пасхальное яйцо Йоргла. Удачи всем участникам НОМАМ 2022 года!» сюда попадают перехваченные ошибки, перезапуск игры и повторное отображение меню #бегать бегать данные rem должны находиться в конце строки, поэтому заполните ими последнюю строку. данные -2,0,0,0,0,2,2,2,2,4,0,4,-4,0,4,4,-8,0,6,0,6,4,8, 4,8,2,-10,0,10,4,-12,0,12,4,14,4,-18,0,16,0,16,2,18,2,18,4,16 ,4,7,2,2,7,2,2,4,1,4,6,5,5,9,0,0,7,5,3,10,4,3,6,0,1 ,5,0,0,16,4,2 ремданные имеют ширину уровня и начальную позицию x и y (ширина,x,y для каждого уровня)                       начиная здесь|1     2     3     4     5            7      8     9     10```

 Запутанный список из 10 строк

```базовый

0_=%1+%3:A2=%3+_:Z=%3+A2:A0=%1+Z:A3=255:A1=710:A4=%2+A1:POKE580,%1:POKE82 ,%0:DIMA$(A3),A(16,8),B(Z),C(Z),D(Z):A$="<уровни в кодировкеatascii>":GR.%3:POKEA1 ,%0:C.%1:F.A=%0TO%2:F.B=%0TO9 1PL.B*%2+A0,A*%2:N.B:N.A:C.%0:PL.25,%0:PL.25,%2:C.%2:REP.:READB,A:IFB <%0:PL.ABS(B)+A0,A:EL.:DR.B+A0,A:END.:PA.5:UB=16ANDA=_:T.#A:?"  _1_Easy _2_Glasses _3_House _4_Four ":?"  _5_Город _6_Крест _7_Ключ _8_Отверстия":?"  _9_Череп _10_Йоргл _0_Редактор уровней" 2I."Уровень";C:CLS:F.D=%1TOZ:READE,B,A:B(D)=E:C(D)=B:D(D)=A:N.D:DO:GR.%3 :POKEA1,%0:POKE752,%1:IFC=%0ANDF=%0:?,"Создайте свой собственный уровень!":?" _Fire_ для построения/стирания, удерживайте _Fire_ для воспроизведения":PA.30:B=_ :A=_:G=TIME:H=TIME:I=%0:W.%2-J-K:IFTIME-G>Z:G=TIME:K=%1-K:C.K*%2-I*K 3PL.B,A:END.:L=СТИК(%0):M=((L=13)-(L=14))*%2:N=((L=A2)-(L=A0) )*%2:O=A+M:P=B+N:O=(O>%3ANDO<19)*M+A:P=(P>%3ANDP<35)*N+B:IFTIME-H >20AND(N ORM):C.I:PL.B,A:B=P:A=O:LOC.B,A,I:C.%2:PL.B,A:H=TIME:END.:IFSTRIG (%0)=%0:H=TIME:I=%1-I:F=I*%2-%1+F:REP.:U.STRIG(%0) 4IFTIME-H>60:J=%1:POKEA4,180:POKEA1,180:PA.Z:POKEA4,%0:POKEA1,%0:END.:END.:WE.:C(%0)=B: D(%0)=A:F.B=%0TO15:F.A=%0TOA2:LOC.B*%2+_,A*%2+_,I:A(B,A)=I>%0:Н.А: N.B:END.:F=%0:Q=%0:IFC=%0:F.B=%0TO15:F.A=%0TOA2:I=A(B,A):C.I:PL.B*%2+_, A*%2+_:F=F+I:N.A:N.B:B=C(%0) 5A=D(%0):CLS:?" _Fire_ для повторной попытки уровняel, _Reset_ для меню":EL.:F.D=%0TOC-%1:Q=B(D)+Q:N.D:C.%1:R=B(C):F.A=%1TOR:I=ASC( A$(Q+A)):S=.5:F.B=%0TOA2:S=S*%2:IFI&S=S:PL.A*%2+18-R,B*%2+%3:F =F+%1:END.:N.B:N.A:B=C(C)*%2+20-R:A=D(C)*%2+%3:END.:G=TIME:H=TIME: Т=Ф 6PA.30:W.F>%1:IFTIME-G>60:G=TIME:K=%1-K:C.K*%2:PL.B,A:END.:L=STICK(%0):M= (L=13)-(L=14):N=(L=A2)-(L=A0):O=A+M:P=B+N:U=M*%2+A:V=N *%2+B:LOC.P,O,W:LOC.V,U,X:IFTIME-H>20:IFX=%1ANDW=%0:POKE77,%0:C.%2:PL.B, A:PL.P,O:PL.V,U:B=V:A=U:F=F-%1:H=TIME 7Y=A3-A3/T*F:SO.%0,Y,Z,%1:EL.:IFN ORM:POKEA4,6:POKEA1,6:PA.5:POKEA4,%0:POKEA1,%0: H=TIME:SO.%0,Y,%2,8:PA.Z:END.:SO.:END.:END.:IFSTRIG(%0)=%0:EX.:END.:WE.: SO.:IFF=%1:?:?,"     Молодец!":F.B=%0TOA3:POKE709,B:PA.%1:N.B:IFC=%0:RUN:END.:C=(C+%1 )MODA0:END.:LOOP 8?"Все уважение Говарду Скотту Уоршоу, которому посвящено мое пасхальное яйцо Йоргла. Удачи всем участникам НОМАМ 2022 года!" 9#A:RUN:D.-2,0,0,0,0,2,2,2,2,4,0,4,-4,0,4,4,-8,0,6,0 ,6,4,8,4,8,2,-10,0,10,4,-12,0,12,4,14,4,-18,0,16,0,16,2,18, 2,18,4,16,4,7,2,2,7,2,2,4,1,4,6,5,5,9,0,0,7,5,3,10,4, 3,6,0,1,5,0,0,16,4,2х```

## Свяжитесь с нами 📩

  * [OxC0FFEE на AtariAge](https://atariage.com/forums/profile/50996-oxc0ffee/)

  * [OxC0FFEE в Твиттере](https://twitter.com/OxC0FFEE)

  * [kimslawson@gmail.com]

Как скачать Sigils by Kim Slawson через торрент

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

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