Просты кірылічны сінтаксіс для менюшных тэкставых квэстаў
Гэтая даведка напісана простымі сказамі. Кожнае правіла суправаджаецца прыкладам. Чытайце зверху ўніз, як урок.
Звязацца з аўтарам можна па спасылцы fantom199ii@gmail.com. Ліцэнзія вольная. Рабіце, што хочаце. Інструмент быў распрацаваны пры дапамозе нейрасеткі DeepSeek.
Першаасветнікі Кірыла і Мяфодзій прынеслі пісьменства на землі ўсходніх славян. У знак павагі да іх подзвігу я назваў сваю праграму «Кірыла», бо гэта праграма першая ці адна з першых дазваляе пісаць менюшныя тэкставыя гульні цалкам сродкамі кірылічнай клавіятуры.
У канвертары ёсць чатыры налады: мова інтэрфейсу, каляровая тэма, узоры гульняў і аўтаматычнае агучванне для скрынрыдэра. Усе яны захоўваюцца ў браўзеры, таму пры наступным адкрыцці застаюцца тымі ж.
У наладах можна выбраць беларускую ці рускую мову. Ад выбару залежыць:
Калі ў інвентары нічога няма, паказваецца «Інвентар пусты» ці «Инвентарь пуст» — таксама ў залежнасці ад мовы.
Пры першым запуску канвертар сам вызначае мову браўзера. Калі яна пачынаецца на «be» — бярэ беларускую. Калі на «ru» — рускую. Калі іншая — па змаўчанні беларускую. Пасля гэтага вы можаце выбраць мову ўручную, і яна запомніцца.
У наладах ёсць кнопка «Выбраць колеравую тэму з табліцы». Яна адкрывае табліцу з васьмю тэмамі. Кожная тэма — гэта набор колераў для ўсіх элементаў гульні: фону, звычайнага тэксту, загалоўкаў, клікабельных слоў, меню-слоў, кнопак.
Каб выбраць тэму, клікніце на яе назву ці на пераключальнік. Колеры канвертара зменяцца адразу. Выбраная тэма захоўваецца ў браўзеры.
Пры канвертацыі выбраная тэма трапляе ў згенераваную гульню. Гулец убачыць менавіта тыя колеры, што выбраў аўтар. Вось што перадаецца:
Такім чынам, аўтар можа выбраць палітру, што адпавядае атмасферы гісторыі. Начная гісторыя — цёмная тэма. Казачная — бледна-ліловая. Вясновая — бледна-салатавая. Вясковая — карычневая.
У канвертары ёсць восем тэм:
Яшчэ ў наладах ёсць дзве кнопкі, якія загружаюць гатовыя ўзоры гульняў: «Гай» і «Пячора». Націсніце — і ў полі кода з'явіцца поўны прыклад. Так зручна пабачыць, як выглядае гатовы код, а потым памяняць яго пад сябе. Пра тое, якія магчымасці рухавічка паказвае кожны з узораў, глядзіце ў наступным раздзеле.
У наладах ёсць сцяжок «Уключыць аўтаматычнае агучванне скрынрыдэрам». Калі ён уключаны, згенераваная гульня будзе сама агучваць для скрынрыдэра ўсе дзеянні: клікі на клікабельныя словы, адкрыццё меню, пераходы на іншыя лакацыі. Калі выключаны — гульня маўчыць, і гулец сам чытае экран звычайнымі сродкамі скрынрыдэра (стрэлкамі, Tab, гарачымі клавішамі).
Па змаўчанні сцяжок выключаны. Гэта лагічна: для відушчых гульцоў аўтаагучванне не мае сэнсу, а невідушчыя часта самі ведаюць, як ім зручней чытаць. Выбар захоўваецца ў браўзеры, як і ўсе астатнія налады.
Дзве гатовыя гульні ў наладах — гэта не проста цікавыя гісторыі, а паказы розных магчымасцяў рухавічка. Калі хочаце хутка зразумець, што ўмее Кірыла, адкрыйце абодва ўзоры і праглядзіце іх код.
У дэманстрацыйнай гульні «Гай» паказваюцца наступныя магчымасці рухавічка:
У дэманстрацыйнай гульні «Злавесная пячора» паказана выкарыстанне наступных магчымасцяў рухавічка:
Гульня — гэта набор месцаў у тэкставым файле. Кожнае месца называецца лакацыяй. Гулец пачынае ў адной лакацыі і пераходзіць у іншыя па кнопках.
Код пішацца ў нататніку і захоўваецца як тэкставы файл. Потым гэты файл загружаецца ў Кірылу, і Кірыла робіць з яго гульню.
Каб файл захоўваўся правільна, у нататніку пры захаванні выберыце кадаванне UTF-8. Калі гэтага не зрабіць, замест літар з'явяцца дзіўныя знакі.
Лакацыя пачынаецца з двукроп'я і назвы. Напрыклад: каб стварыць лакацыю «лес», напішыце:
:лес
Лакацыя сканчваецца словам кан. Гэта слова азначае «канец лакацыі».
Самая першая лакацыя абавязана называцца тытул. Гэта стартавы экран гульні.
Тытул — звычайная лакацыя. Ніякіх спецыяльных каманд для яго няма. Пішыце тыя ж радкі, што і ў любым іншым месцы.
:тытул загаловак Гай загаловак Уладзімір рад версія 1.0 інв +сякера кноп пачатак, Пачаць кан
На экране будзе два вялікія цэнтраваныя загалоўкі — «Гай» і «Уладзімір», потым звычайным тэкстам версія. І кнопка «Пачаць».
Тэкст паказваецца трыма камандамі. Кожная каманда пачынаецца са слова, пасля якога ідзе прабел і сам тэкст.
Прыклад:
:тытул загаловак Гай рад Уладзімір, версія 1.0 экр Ты стаіш на ўскрайку лесу. кноп пачатак, Пачаць кан
Часам трэба перанесці частку тэксту на новы радок, але пакінуць яго ў тым жа абзацы. Для гэтага пастаўце дзве кропкі. Усё, што ідзе пасля іх, пакажацца з новага радка.
экр Абходчык працягнуў далонь:.. -- Давай дазвол.
На экране будзе:
Абходчык працягнуў далонь: -- Давай дазвол.
Каб даць гульцу кнопку пераходу, напішыце слова кноп, потым назву лакацыі, потым коску, потым тэкст на кнопцы.
кноп лес, Увайсці ў лес
Гулец убачыць кнопку з надпісам «Увайсці ў лес». Калі націсне, гульня пяройдзе ў лакацыю лес.
Звычайная кнопка вядзе ў адну лакацыю. Але часам трэба, каб кнопка рабіла рознае ў залежнасці ад стану гульні. Для гэтага ёсць складаная кнопка.
Яна пачынаецца словамі скл кноп. Пасля ідзе тэкст кнопкі. Затым ідзе код, які вырашае, што рабіць. Сканчваецца ўсё словамі кан кноп.
Унутры можна пісаць умовы. Умова пачынаецца словам калі і сканчваецца словам то. Усё, што стаіць паміж імі — гэта пытанне. Калі адказ «так», выконваецца код пасля то. Калі «не», код прапускаецца.
Можна дадаць слова іначай. Гэта значыць «ва ўсіх астатніх выпадках». Яно ставіцца ў самым канцы, і яго код выконваецца, калі ніводная ўмова не спрацавала.
скл кноп Выйсці з гаю калі моц_бярозы =0 і дазвол_паказаў =1 то экр Абходчык павярнуўся і знік. пераход выйсце калі моц_бярозы =0 і няма дазвол_паказаў =1 то экр Абходчык трымае цябе за каўнер. пераход гай іначай пераход выйсце кан кноп
Каб даць гульцу магчымасць увясці тэкст, напішыце слова увод, потым назву зменнай. У гэтую зменную запішацца тое, што ўвядзе гулец.
экр Як цябе завуць? увод імя калі ёсць імя то кноп далей, Ісці далей
Гулец убачыць поле ўводу. Калі напіша сваё імя і націсне Enter, яно запішацца ў зменную імя. Пасля гэтага з'явіцца кнопка «Ісці далей».
Каб дадаць падказку да поля, пасля назвы зменнай пастаўце коску і напішыце падказку:
увод імя, Тваё імя
Каб вывесці ўведзены тэкст, напішыце ў тэксце двукоссе, знак пытання і назву зменнай:
экр Прывітанне, "?імя"!
Калі гулец увёў Уладзімір, на экране будзе «Прывітанне, Уладзімір!».
Асобнае слова ў тэксце можна зрабіць клікабельным. Калі гулец націсне на яго, унізе экрана з'явіцца дадатковы тэкст.
Каб зрабіць слова клікабельным, напішыце яго ў двукоссі, а перад ім знак плюс. Напрыклад:
экр Вакол шумяць "+бярозы".
Слова «бярозы» стане зялёным і клікабельным. Каб задаць, што пакажацца пры кліку, напішыце асобны радок з тым жа ключом:
"+бярозы" Бярозы высокія і зялёныя. Вецер калывае іх голле.
Калі гулец націсне на слова «бярозы», пад тэкстам з'явіцца гэтае апісанне.
Простае клікабельнае слова паказвае адзін тэкст. Калі трэба, каб па кліку быў выбар з некалькіх дзеянняў, выкарыстоўвайце меню.
У тэксце пішацца так:
экр Вакол шумяць "+меню бярозы".
Слова «бярозы» стане клікабельным, але пры кліку адкрыецца меню. Пункты меню задаюцца асобнымі радкамі:
"+меню бярозы, агледзець бярозы" Высокія зялёныя дрэвы. "+меню бярозы, ссекчы бярозу" Ты замахнуўся сякерай.
Кожны пункт пачынаецца з «+меню», потым назва меню, потым коска, потым назва пункта. Пасля закрываючага двукосся ідзе тэкст, які пакажацца, калі гулец выбера гэты пункт.
Можна зрабіць, каб пункт меню быў бачны толькі пры пэўнай умове. Тады перад ім ставіцца калі УМОВА то:
калі моц_бярозы +=1 і інв +сякера то "+меню бярозы, ссекчы бярозу" Я замахнуўся сякерай.
Эфект — гэта змяненне ў гульні, якое адбываецца пасля пэўнага дзеяння. Эфекты пішуцца ў дужках у канцы радка. Калі эфектаў некалькі, яны раздзяляюцца кропкай з коскай.
"+меню бярозы, ссекчы бярозу" Я замахнуўся сякерай. (моц_бярозы = 4; інв +бервяно; пераход секчы)
Тут тры эфекты. Першы запісвае ў зменную моц_бярозы значэнне 4. Другі дадае ў інвентар бервяно. Трэці пераносіць гульца ў лакацыю секчы.
моц_бярозы = 4.
Значэнне зменнай можна павялічыць ці паменшыць:
моц_бярозы = моц_бярозы - 1.інв +бервяно.інв -сякера.пераход секчы.Калі гулец мае рэч у інвентары, ён можа з ёй нешта зрабіць. Для гэтага трэба апісаць рэч асобнай лакацыяй.
Лакацыя для рэчы пачынаецца з двукроп'я, потым інв_ і назва рэчы. Напрыклад:
:інв_сякера экр Сякера рад Сякера з бліскучым дзяржальнам. "+меню сякера, агледзець сякеру" Дзяржальна гладкае ад бясконцых дотыкаў. "+меню сякера, выкінуць сякеру" Я кінуў сякеру ў траву. (сякера_выкінуў = 1; інв -сякера; пераход гай) кан
Калі гулец адкрые інвентар і націсне на сякеру, адкрыецца акно з апісаннем сякеры і кнопкамі меню, якія вы зрабілі для гэтай рэчы. Кожная кнопка — гэта пункт меню.
Калі назва рэчы складаецца з аднаго слова, дастаткова напісаць
інв +сякера. У інвентары гулец убачыць «сякера».
Калі ж назва складаецца з двух ці болей слоў, у кодзе гульні яна запісваецца праз падкрэсліванне замест прабелаў, а праз коску пасля яе — тое, што ўбачыць гулец. Напрыклад:
інв +зуб_кажана, зуб кажана
Тут «зуб_кажана» — гэта ўнутраная назва. Яна выкарыстоўваецца ва
ўмовах, эфектах і ў назве лакацыі, напрыклад
:інв_зуб_кажана. А «зуб кажана» — гэта тое, што гулец
убачыць у меню інвентара і ў паведамленнях скрынрыдэра.
Прыклады:
інв +палка інв +зуб_кажана, зуб кажана інв +шпунт_з_бочкі, шпунт з бочкі
Пры гэтым унутраную назву з падкрэсліваннем трэба ўжываць ва ўсіх праверках і эфектах:
калі ёсць зуб_кажана то экр У цябе ў кішэні ляжыць востры зуб. калі няма зуб_кажана то экр Зуба ў цябе няма. "+меню зуб кажана, выкінуць" Ты выкінуў зуб. (інв -зуб_кажана)
Калі другога тэксту пасля коскі няма, гулец убачыць унутраную назву разам з падкрэсліваннем. Гэта працуе, але выглядае не вельмі прыгожа.
Каб дадаць рэч з назвай з двух слоў пры дапамозе эфекту, выкарыстоўвайце такі ж запіс:
"+меню скрыня, адкрыць скрыню" Ты адкрыў скрыню. (інв +шпунт_з_бочкі, шпунт з бочкі)
Каб атрымаць выпадковы лік, напішыце назву зменнай, знак роўнасці, слова кідок і лік. Напрыклад:
кубік = кідок 6
Гэта запіша ў зменную кубік выпадковы лік ад 1 да 6. Кожны раз пры заходзе ў лакацыю кідок робіцца нанова.
Прыклад тэхнічнай лакацыі бою:
:бой кубік = кідок 6 рад Кубік выпаў "?кубік". калі кубік =1 то моц_гульца = моц_гульца -1 калі кубік =1 то экр Кажан праймчаўся міма. калі кубік =2 то экр Кажан ухіліўся ад удару. калі кубік +=3 то моц_кажана = моц_кажана -1 калі кубік +=3 то экр Ты папаў па праціўніку. калі моц_гульца =0 то пераход смерць калі моц_кажана =0 то пераход перамога калі моц_гульца +=1 і моц_кажана +=1 то пераход пячора кан
Увага. Знакі = -= += трэба пісаць ушчыльную да лічбы, калі пішацца параўнанне лічбаў.
Умова — гэта праверка. Яна задае пытанне і атрымлівае адказ «так» ці «не». Умовы выкарыстоўваюцца пасля слова калі. Калі адказ «так», выконваецца дзеянне пасля слова то. Калі «не» — дзеянне прапускаецца.
калі ёсць сякера то рад У цябе ёсць сякера. калі няма сякера то рад У цябе няма сякеры.
Словы ёсць і няма правяраюць, ці ёсць у гульца рэч у інвентары.
калі ёсць сякера то кноп ссекчы, Ссекчы бярозу калі няма сякера то рад Табе нечым ссекчы.
Можна пісаць і так: ёсць прадмет сякера ці няма прадмет сякера. Гэта тое самае, проста з дадатковым словам «прадмет» пасярэдзіне.
Зменная — гэта скрынка, у якую можна пакласці лік. Напрыклад: калі гулец ссек бярозу, у зменную моц_бярозы запісваецца пэўны лік.
калі няма моц_бярозы то рад Бяроза яшчэ стаіць. калі ёсць моц_бярозы то рад Бяроза пашкоджаная.
Важна ведаць: гульня лічыць, што зменная роўная нулю, калі вы яе нідзе не задавалі. Таму няма моц_бярозы праўдзіва на самым пачатку гульні — пакуль зменнай не прысвоена значэнне.
Мы працуем толькі ў кірылічнай раскладцы, таму не выкарыстоўваем знакі з англійскай. Замест іх ёсць свае умоўныя абазначэнні.
моц_бярозы =0 — праўда, калі зменная роўная
нулю.моц_бярозы -=1 — праўда, калі
зменная роўная адзінцы ці менш.моц_бярозы +=1 — праўда, калі
зменная роўная адзінцы ці больш.калі моц_бярозы =0 то рад Бяроза ўжо ляжыць на зямлі. калі моц_бярозы -=1 то рад Яшчэ адзін удар, і бяроза ўпадзе. калі моц_бярозы +=1 то кноп секчы, Ссекчы бярозу.
Калі трэба праверыць, што зменная знаходзіцца ў пэўным дыяпазоне, можна пісаць карацей. Другое імя зменнай у такім запісе можна не паўтараць:
калі кубік -=10 і +=6 то пераход лес
Гэта тое самае, што «кубік менш ці роўны дзесяці і кубік больш ці роўны шасці». Такі запіс зручны для праверкі выніку кубіка.
Дзве ўмовы можна злучыць словам і ці словам або.
калі моц_бярозы =0 і дазвол_паказаў =1 то кноп выйсце, Выйсці з гаю калі ёсць сякера або ёсць бервяно то кноп далей, Ісці далей
ёсць А — А не нуль няма А — А роўная нулю ці не існуе А =5 — А дакладна пяць А +=5 — А пяць ці больш А -=5 — А пяць ці менш ёсць прадмет А — рэч А у інвентары няма прадмета А — рэчы А няма ў інвентары У1 і У2 — абедзве ўмовы праўдзівыя У1 або У2 — хаця б адна праўдзівая
моц_бярозы = моц_бярозы - 1.Калі ў кодзе лакацыі вы напішаце:
экр Ты падняўся на ногі. пераход пакой
а ў лакацыі :пакой ёсць тэкст:
экр Дзверы адчыніліся і ў пакой уварваўся сябар.
гулец пабачыць на экране тэкст:
Ты падняўся на ногі. Дзверы адчыніліся і ў пакой уварваўся сябар.
Такім чынам, тэксты двух лакацый злучыліся ў адным экране.
Унутры складанай кнопкі каманда пераход здзяйсняе абумоўленае перамяшчэнне гульца ў іншую лакацыю.
Каманда укл (па-беларуску) або вкл (па-руску) убудоўвае ўсё змесціва іншай лакацыі ў тую, дзе яна напісана. Гэта зручна, калі трэба вынесці разлікі ці паўтаральны тэкст у асобнае месца, а вынік паказаць у бягучай лакацыі.
Напрыклад, ёсць лакацыя :самаадчуванне_героя з апісаннямі стану гульца:
:самаадчуванне_героя калі моц_гульца +=7 то экр Ты ў добрым стане. калі моц_гульца +=4 і --7 то экр Ты паранены. калі моц_гульца ==1 то экр Ты ледзь трымаешся на нагах. кан
Каб паказаць гэта ў лакацыі :пячора, дастаткова напісаць у ёй адзін радок:
:пячора укл самаадчуванне_героя экр Ты стаіш у цёмнай пячоры. кноп бой, Ударыць кан
Пры гэтым змесціва :самаадчуванне_героя цалкам убудоўваецца ў пачатак :пячора — як калі б вы напісалі гэтыя радкі непасрэдна ў пячоры.
Каманда працуе рэкурсіўна. Калі ў :самаадчуванне_героя ёсць свой укл яшчэ адной лакацыі, яна таксама разгорнецца. Калі паміж лакацыямі ўзнікае цыкл (А ўключае Б, Б уключае А), гэта будзе заўважана пры зборцы — у лог трапіць папярэджанне, і цыкл не разгорнецца.
Калі лакацыя, на якую спасылаецца укл, не існуе, будзе таксама папярэджанне. Радок проста праігнаруецца, гульня збярэцца далей.
Уключэнне не змяняе паводзіны гульца: ён па-ранейшаму знаходзіцца ў бягучай лакацыі. Укл проста капіюе тэкст і лагічныя радкі з іншай лакацыі ў бягучую на этапе зборкі. Гэта дазваляе спецыфічныя разлікі (напрыклад, разлік стану здароўя, узроўню, чаго заўгодна) вынесці ў асобную лакацыю і выкарыстоўваць у некалькіх месцах адразу.
Каментар пачынаецца з зорачкі і дэфіса. Усё, што напісана пасля, не ўплывае на гульню. Каментары патрэбныя, каб пакідаць сабе нататкі для памяці.
*- гэта каментар экр Гэта тэкст, які бачыць гулец. *- а гэта ўжо каментар, які гульцу не бачны.
:тытул загаловак Гай загаловак Уладзімір рад версія 1.0 моц_бярозы = 5 інв +сякера кноп пачатак, Пачаць кан :пачатак экр Як цябе завуць? увод імя, Тваё імя калі ёсць імя то кноп гай, Увайсці ў гай кан :гай экр "?імя", ты прыйшоў у гай. экр Вакол цябе шумяць зялёныя "+меню бярозы". скл кноп Выйсці з гаю калі моц_бярозы =0 то экр Ты выходзіш з гаю. пераход выйсце іначай экр Спачатку ссячы бярозу. пераход гай кан кноп *- канец складанай кнопкі "+меню бярозы, агледзець бярозы" Высокія зялёныя дрэвы. калі моц_бярозы +=1 і інв +сякера то "+меню бярозы, ссекчы бярозу" Я замахнуўся сякерай. (пераход секчы) кан *- канец лакацыі :секчы моц_бярозы = моц_бярозы - 1 калі моц_бярозы =4 то экр Першая засечка. ..Бяроза "?моц_бярозы". калі моц_бярозы =3 то экр Засечка глыбейшая. ..Бяроза "?моц_бярозы". калі моц_бярозы =2 то экр Ствол нахіліўся. ..Бяроза "?моц_бярозы". калі моц_бярозы =1 то экр Яшчэ ўдар. ..Бяроза "?моц_бярозы". калі моц_бярозы =0 то экр Бяроза пачала валіцца. ..Бяроза "?моц_бярозы". калі моц_бярозы +=1 то кноп секчы, Ссекчы яшчэ раз калі моц_бярозы =0 то кноп гай, Адскочыць ад бярозы кан :выйсце экр "?імя" выходзіць з гаю. рад Канец. кан