Мазмұны:

Sugarcube бар шпагаттағы айнымалылардан сілтемелер: 10 қадам
Sugarcube бар шпагаттағы айнымалылардан сілтемелер: 10 қадам

Бейне: Sugarcube бар шпагаттағы айнымалылардан сілтемелер: 10 қадам

Бейне: Sugarcube бар шпагаттағы айнымалылардан сілтемелер: 10 қадам
Бейне: Twine 2.1: SugarCube 2.0: UIBar and UI API 2024, Шілде
Anonim
Sugarcube бар шпагаттағы айнымалылардан сілтемелер
Sugarcube бар шпагаттағы айнымалылардан сілтемелер

Сіз маған қайтадан қосылғаныңызға өте қуаныштымын! Бұл Wumpus сізді әлі жеген жоқ дегенді білдіреді. Жақсы!

Сізге таныс емес адамдар үшін бұл менің сүйкімді окичи-скотчикалық немере ағамның үлкен жобасына көмектесу үшін мен жасайтын оқулықтар жиынтығы. Бұл оқулықтар Twine мен Sugarcube бағдарламалаудың кейбір мүмкіндіктерімен не істеуге болатынын анықтауға арналған. Егер сіз жалғастырғыңыз келсе, мұнда бірінші оқулықты таба аласыз.

Соңғы оқулықта мен ойыншы зерттей алатын бөлмелердің шағын жиынтығын құрдым. Мен Wumpus нысанын қостым және Wumpus қайда орналасқанына байланысты әр бөлмеде көрсетілетін нәрсені өзгерту үшін жалпы бөлме кодын жасадым.

1 -қадам: Ойнатқышты жасаңыз

Ойнатқышты жасаңыз
Ойнатқышты жасаңыз

Бұл қадам өте қарапайым. Негізінде мен $ wumpus сияқты кодты қолданамын, бірақ оның орнына $ player айнымалысы бар.

2 -қадам: Жаңа бөлме коды

Жаңа бөлме коды
Жаңа бөлме коды

Бөлменің жалпы кодын өзгертті, сондықтан $ player мәні - қазіргі бөлме. Содан кейін $ wumpus -ты қазіргі ойыншының орнына $ player -пен салыстырыңыз.

Бұл шамалы өзгеріс, және мүлде қажет емес, бірақ мен өзімнің кодты реттегенді ұнатамын.

3 -қадам: Айнымалыдан сілтеме жасау

Айнымалыдан сілтеме жасау
Айнымалыдан сілтеме жасау

Ақырында, менің бастапқы бөлмемдегі сілтемені $ player мәніне байланысты өзгеретініне ауыстырғым келеді. Мұны Sugarcube ішіндегі «» функциясының көмегімен жасауға болады. Сіз бұл туралы Sugarcube құжаттамасы бетінен оқи аласыз.

Біздің бұйрықтан кейінгі бірінші жол - бұл біздің үзіндіде пайда болатын сөйлем. Екіншісі - біз байланыстырғымыз келетін үзіндінің аты. Мен «Wumpus Hunt!» Қолданамын менің сөз тіркесі ретінде, бірақ егер біз ойыншының қайда бара жатқанын алдын ала білгісі келсе, онда біз айнымалы мәнді пайдалана аламыз:

4 -қадам: Тест

Сынақ
Сынақ
Сынақ
Сынақ

Сіз кодты тексергенде, сіздің сілтеме бұрын жазылған кез келген фразамен ауыстырылғанын білуіңіз керек. Оны басу сізді ойынның кездейсоқ бөлмесіне апарады.

Өкінішке орай, бұл сізді тікелей Wumpus бөлмесіне апаруы мүмкін! Бұл қазірдің өзінде маңызды емес, бірақ нақты ойында бұл тез аяқталатын ойын еді. Біз оны түзетуіміз керек.

5 -қадам: Бөлмелер тізімін қосыңыз

Бөлме тізімін қосыңыз
Бөлме тізімін қосыңыз

Біріншіден, біз бөлмелерді басқаруды жеңілдету үшін бөлмелер тізімін жасаймыз. Бұл массивті жариялау арқылы біз оны $ player және $ wumpus мәндерін кодты қайталамай орнату үшін қолдана аламыз. Оның тағы бір артықшылығы бар, біз оны әрі қарай қарастырамыз.

Бұл кодпен тестілеу бұрынғыдай болуы керек.

6 -қадам: Бөлмелерді жою

Бөлмелерді жою
Бөлмелерді жою

Мен кодқа кодтың бір жолын бұрыннан қостым (ерекшеленген).

Sugarcube массивтерінде элементтерді аты бойынша жоюға мүмкіндік беретін кіріктірілген функция бар. Бұл жағдайда $ wumpus бөлмесін тағайындағаннан кейін, біз $ roomlist тізімінен осы бөлмені жоя аламыз. Дегенмен, бұл функция күрделі. Функцияның шығысы қандай да бір түрде тағайындалмаса немесе қолданылмаса, ол жұмыс істемейді. Бұған қамқорлық жасау үшін мен уақытша _temp айнымалысын құрдым.

Sugarcube -де уақытша айнымалылар доллардың ($) орнына астын сызудан басталады (_). Олар пайдалы, себебі олар үзінді іске қосылғаннан кейін жойылады, сондықтан айнымалы атаулардың қабаттасуы туралы алаңдамаудың қажеті жоқ.

Мен $ playerlist бөлмесін $ roomlist тізімінен де алып тастаймын, әрине.

7 -қадам: тестілеу

Сынақ
Сынақ
Сынақ
Сынақ

Біз кодты дәл қазіргідей іске қоссақ та, бұл өте мұқият тест болмас еді. Егер біз кодты іске қоссақ және $ player мен $ wumpus әр түрлі бөлмелерге тағайындалғанын білсек, бұл код жұмыс істегендіктен бе, әлде бұл жай ғана мүмкіндік пе, білмейміз. Әрине, біз кодты бірнеше рет іске қосамыз және егер ол екеуіне де ешқашан болмайтын бір бөлмені тағайындамаса, бірақ бұл мәңгілікке созылады деп ойлаймыз, бірақ бұл ешқашан болмайтынына 100% кепілдік емес.

Оның орнына бізге тексеру әдісі қажет.

Мен кіріспе үзіндісінің жоғарғы жағына $ wumpus, $ player және $ roomlist айнымалыларының мәндерін көруге мүмкіндік беретін үш жолды қостым. Біз кодты орнатудың арқасында $ wumpus бөлмесі мен $ ойыншы бөлмесін $ бөлме тізімінен алып тастау керектігін білеміз.

Біз бұл кодты іске қосқан кезде, біз оның дұрыс екеніне көз жеткізе аламыз.

8 -қадам: Sugarcube мен объектілердегі оғаштықтар

Sugarcube мен объектілердегі ерекшеліктер
Sugarcube мен объектілердегі ерекшеліктер
Sugarcube мен объектілердегі ерекшеліктер
Sugarcube мен объектілердегі ерекшеліктер
Sugarcube мен объектілердегі ерекшеліктер
Sugarcube мен объектілердегі ерекшеліктер

Sugarcube нысандары сәл оғаш. Осыны көрсетуге рұқсат етіңіз.

Мен бұл жобаны бастапқыда құрып жатқанда, бөлмелерді жоюды бастамас бұрын $ roomlist -ті $ saveroom айнымалысына сақтағым келді. Мен бұл кейінірек пайдалы болады деп ойладым.

Мен осы кодтан біртүрлі мінез -құлық алған кезде, $ saveroom айнымалысын қарауға рұқсат ету үшін кіріспе бетіме басқа жолды қостым (екінші сурет).

Мен $ roomlist тізімінен жойылған элементтер менің сақталған тізімімнен жойылғанын көргенде қатты таң қалдым! Сіз мұны үшінші суретте әрекетте көре аласыз.

Себебі, сіз массивті осылай көшіргенде, сіз Twine -ге массивті көшіруді айтпайсыз, сіз Twine -ге бұл екі айнымалының бір массив екенін айтасыз. Бір айнымалы көмегімен массивке бірдеңе жасаған кезде, ол басқа айнымалы қарайтын массивті өзгертеді!

Біз мұны clone () функциясымен түзете аламыз.

9 -қадам: Clone () функциясы

Clone () функциясы
Clone () функциясы
Clone () функциясы
Clone () функциясы

Сіз clone () функциясы туралы Sugarcube құжаттамасы бетінен оқи аласыз.

«Тайыз» көшірме - бұл біз бұрын істеген нәрсе. Бүкіл массивтің толық көшірмесін жасаудың орнына, ол сіздің айнымалыңыз сол массивпен жұмыс істейді деп есептейді. Таяз көшірменің орнына clone () сіз күткендей әрекет ететін «терең» көшірмені жасайды. Массивтің әрбір элементі жаңа массивке көшіріледі және түпнұсқадан мүлдем бөлек.

Егер біз бұл жаңа кодты тексеретін болсақ, ол күтілгендей жұмыс істейді.

Әрине, сіз $ roomlist -ді сақтайсыз ба, жоқ па, маңызды емес. Менің жобамның мақсаттары үшін, мен келмеймін. Мұның бәрі терең және таяз көшірмелерді көрсету үшін болды.

10 -қадам: бұл әзірше

Бұл әзірге!
Бұл әзірге!

Біз ойыншыны кездейсоқ бөлмеден бастауға мүмкіндік беретін кодты қостық. Бұған қоса, біз ойыншы Вумпуспен бір бөлмеде басталатын қатені жойдық.

Біз айнымалылардан сілтеме жасауды және Sugarcube массивті көшіруге қалай қарау керектігін білдік.

Іс қарқын алуда, бірақ біз енді бастаймыз!

Бақытты аңшылық!

Ұсынылған: