Съдържание:

Връзки от променливи в канап със захарна куба: 10 стъпки
Връзки от променливи в канап със захарна куба: 10 стъпки

Видео: Връзки от променливи в канап със захарна куба: 10 стъпки

Видео: Връзки от променливи в канап със захарна куба: 10 стъпки
Видео: Еп13 - Епоха на колонизация (15 - 17 век) с Александър Стоянов 2024, Юли
Anonim
Връзки от променливи в канап със захар
Връзки от променливи в канап със захар

Много се радвам, че отново се присъединихте към мен! Това означава, че Wumpus все още не ви е изял. Добре!

За тези от вас, които не са запознати, това е набор от уроци, които правя, за да помогна на очарователната си братовчедка oochy-skootchy wdle с нейния старши проект. Тези уроци са предназначени да бъдат справка за това, което можете да направите с някои от функциите за програмиране на Twine и Sugarcube. Ако искате да продължите, можете да намерите първия урок тук.

В последния урок изградих малък набор от стаи, които играчът може да проучи. Добавих обект Wumpus и направих общ код на стаята, за да променя това, което се показва във всяка стая, в зависимост от това къде се намира Wumpus.

Стъпка 1: Създайте своя плейър

Създайте своя плейър
Създайте своя плейър

Тази стъпка е много проста. По същество просто използвам същия код като моя $ wumpus, но вместо това с променлива на $ player.

Стъпка 2: Нов код на стаята

Нов код на стаята
Нов код на стаята

Променихте общия си код на стаята, така че стойността на $ player е текущата стая. След това сравнете $ wumpus с $ player вместо текущата стая.

Това е малка промяна и не е напълно необходима, но обичам да поддържам кода си организиран.

Стъпка 3: Създаване на връзка от променлива

Създаване на връзка от променлива
Създаване на връзка от променлива

И накрая, искам да заменя връзката в началната ми стая с такава, която се променя въз основа на стойността на $ player. Това може да стане с функцията "" в Sugarcube. Можете да прочетете повече за това на страницата с документация на Sugarcube.

Първият низ след нашата команда е фразата, която ще се появи в нашия пасаж. Второто е името на пасажа, към който искаме да се свържем. Използвам "Hunt the Wumpus!" като моя фраза, но вместо това бихме могли да използваме нашата променлива, ако искаме играчът да знае къде отива предварително, по следния начин:

Стъпка 4: Тествайте

Тест
Тест
Тест
Тест

Когато тествате кода си, трябва да установите, че връзката ви е заменена с която и да е фраза, която сте написали преди. Щракването върху него ще ви отведе до произволна стая в играта ви.

За съжаление, това също може да ви отведе направо до стаята Wumpus! Това няма голямо значение в момента, но в истинска игра, която би приключила мигновено. Трябва да поправим това.

Стъпка 5: Добавете списък със стаи

Добавете списък със стаи
Добавете списък със стаи

Първо, ще създадем списък със стаи, за да улесним управлението на стаите. Като декларираме този масив, можем да го използваме, за да зададем нашите $ player и $ wumpus стойности, без да повтаряме кода. Той има и друго предимство, което ще разгледаме по -нататък.

Тестването с този код трябва да се държи точно както преди.

Стъпка 6: Премахване на стаите

Премахване на стаите
Премахване на стаите

Добавих един ред код към кода от преди (подчертано).

Масивите в Sugarcube имат вградена функция, която ви позволява да изтривате елементи от тях по име. В този случай, след като зададем $ wumpus стая, можем да изтрием тази стая от нашия $ roomlist. Тази функция обаче е нестабилна. Той няма да работи, освен ако изходът на функцията не бъде назначен или използван по някакъв начин. За да се погрижа за това, създадох временната променлива _temp.

В Sugarcube временните променливи започват с подчертаване (_) вместо долар ($). Те са полезни, защото се изтриват, след като пасажът бъде изпълнен, така че не е нужно да се притеснявате за припокриване на имената на променливите.

Изтривам стаята $ player и от $ roomlist, разбира се.

Стъпка 7: Тестване

Тестване
Тестване
Тестване
Тестване

Въпреки че можем да пуснем кода такъв, какъвто е сега, това не би било много задълбочен тест. Ако стартираме кода и установим, че $ player и $ wumpus са разпределени в различни стаи, не знаем дали това е така, защото кодът работи, или това е просто случайност. Разбира се, можем да изпълним кода много пъти и да приемем, че ако никога не им присвои една и съща стая, че никога няма да го направи, но това ще отнеме завинаги и все още не е 100% гаранция, че никога няма да се случи.

Вместо това се нуждаем от начин за проверка.

Добавих три реда в началото на нашия интро пасаж, който ще ни позволи да видим стойностите на нашите променливи $ wumpus, $ player и $ roomlist. Поради начина, по който настройваме нашия код, знаем, че стаята $ wumpus и $ player room трябва да бъдат елиминирани от $ roomlist.

Когато стартираме този код, можем да проверим, за да се уверим, че е така.

Стъпка 8: Странности с Sugarcube и обекти

Странности с Sugarcube и обекти
Странности с Sugarcube и обекти
Странности с Sugarcube и обекти
Странности с Sugarcube и обекти
Странности с Sugarcube и обекти
Странности с Sugarcube и обекти

Обектите от захарна куба са малко странни. Позволете ми да демонстрирам това.

Докато първоначално изграждах този проект, исках да запазя моя списък със стая в $ променлива на $ saveroom, преди да започна да изтривам стаи от него. Реших, че по -късно ще ми е от полза.

Когато получих някакво странно поведение от този код, добавих още един ред към моята интро страница, за да ми позволи да разгледам променливата си $ saveroom (втора снимка).

Бях шокиран да открия, че елементите, които бях изтрил от $ roomlist, също бяха изтрити от моя запазен списък! Можете да видите това в действие на третата снимка.

Това е така, защото когато копирате масив като този, всъщност не казвате на Twine да копира масива, вие казвате на Twine, че тези две променливи са един и същ масив. Когато правите нещо с масива, използвайки една променлива, той променя същия масив, който гледа другата променлива!

Можем да поправим това с функцията clone ().

Стъпка 9: Функцията Clone ()

Функцията Clone ()
Функцията Clone ()
Функцията Clone ()
Функцията Clone ()

Можете да прочетете за функцията clone () на страницата с документация на Sugarcube.

"Плитко" копие е това, което правихме преди. Вместо да прави пълно копие на целия масив, той просто приема, че вашата променлива работи със същия масив. Вместо плитко копие, clone () прави „дълбоко“копие, което се държи така, както бихте очаквали. Всеки елемент от масива се копира в нов масив и е напълно отделен от оригинала.

Ако тестваме този нов код, откриваме, че работи според очакванията.

Разбира се, няма значение дали запазвате $ roomlist или не. За целите на моя проект няма да го направя. Всичко това беше само за демонстрация на дълбоки срещу плитки копия.

Стъпка 10: Това е засега

Това е За сега!
Това е За сега!

Добавихме код, който позволява на нашия играч да започне в произволна стая. В допълнение към това елиминирахме грешка, при която играчът би започнал в същата стая като Wumpus.

Научихме как да създаваме връзки от променливи и как копирането на масиви се третира от Sugarcube.

Нещата се ускоряват, но тепърва започваме!

Приятно ловуване!

Препоръчано: