Cuprins:

Legături din variabile în sfoară cu Sugarcube: 10 pași
Legături din variabile în sfoară cu Sugarcube: 10 pași

Video: Legături din variabile în sfoară cu Sugarcube: 10 pași

Video: Legături din variabile în sfoară cu Sugarcube: 10 pași
Video: 🔗Nodul marinaresc de legat ancora 2024, Noiembrie
Anonim
Legături din variabile în sfoară cu Sugarcube
Legături din variabile în sfoară cu Sugarcube

Mă bucur că m-ai alăturat din nou! Asta înseamnă că Wumpus nu te-a mâncat încă. Bun!

Pentru aceia dintre voi care nu sunt familiarizați, acesta este un set de tutoriale pe care le fac pentru a-i ajuta pe verișoara mea adorabilă oochy-skootchy cu proiectul ei senior. Aceste tutoriale sunt menite să fie o referință pentru ceea ce puteți face cu unele dintre caracteristicile de programare ale Twine și Sugarcube. Dacă doriți să continuați, puteți găsi primul tutorial aici.

În ultimul tutorial, am construit un mic set de camere pe care jucătorul le poate explora. Am adăugat un obiect Wumpus și am creat un cod de cameră generic pentru a schimba ceea ce era afișat în fiecare cameră, în funcție de locul unde se află Wumpus.

Pasul 1: Creați-vă jucătorul

Creați-vă jucătorul
Creați-vă jucătorul

Acest pas este foarte simplu. În esență, folosesc același cod ca $ wumpus, dar cu o variabilă $ player.

Pasul 2: Cod de cameră nou

Cod de cameră nou
Cod de cameră nou

V-am modificat codul de cameră generic, astfel încât valoarea $ player să fie camera curentă. Apoi comparați $ wumpus cu $ player în loc de camera curentă.

Aceasta este o schimbare minoră și nu este absolut necesară, dar îmi place să-mi păstrez codul organizat.

Pasul 3: Crearea unui link dintr-o variabilă

Crearea unui link dintr-o variabilă
Crearea unui link dintr-o variabilă

În cele din urmă, doresc să înlocuiesc linkul din camera mea de pornire cu unul care se schimbă pe baza valorii $ player. Acest lucru se poate face cu funcția "" din Sugarcube. Puteți citi mai multe despre asta în pagina de documentație a Sugarcube.

Primul șir după comanda noastră este expresia care va apărea în pasajul nostru. Al doilea este numele pasajului la care vrem să facem legătura. Folosesc „Hunt the Wumpus!” ca fraza mea, dar am putea folosi variabila noastră acolo în loc dacă vrem ca jucătorul să știe unde merg în prealabil, astfel:

Pasul 4: Testează

Test
Test
Test
Test

Când vă testați codul, ar trebui să constatați că linkul dvs. a fost înlocuit cu orice frază ați scris anterior. Dacă faceți clic pe acesta, veți ajunge la o cameră aleatorie din joc.

Din păcate, acest lucru vă poate duce direct în camera Wumpus! Asta nu contează prea mult acum, dar într-un joc real, care ar fi un joc instantaneu. Trebuie să remediem asta.

Pasul 5: Adăugați o listă de camere

Adăugați o listă de camere
Adăugați o listă de camere

În primul rând, vom crea o listă de camere, pentru a facilita administrarea camerelor. Prin declararea acestei matrice, o putem folosi pentru a seta valorile noastre $ player și $ wumpus fără a repeta codul. De asemenea, are un alt avantaj pe care îl vom explora în continuare.

Testarea cu acest cod ar trebui să se comporte la fel ca înainte.

Pasul 6: Eliminarea camerelor

Eliminarea camerelor
Eliminarea camerelor

Am adăugat o singură linie de cod la codul dinainte (evidențiat).

Tablourile din Sugarcube au o funcție încorporată care vă permite să ștergeți elemente din ele după nume. În acest caz, odată ce atribuim o cameră $ wumpus, putem șterge camera respectivă din lista noastră de camere $. Cu toate acestea, această funcție este fictivă. Nu va funcționa decât dacă ieșirea funcției este atribuită sau utilizată într-un fel. Pentru a avea grijă de asta, am creat variabila temporară _temp.

În Sugarcube, variabilele temporare încep cu un subliniere (_) în loc de un dolar ($). Sunt utile, deoarece sunt șterse odată ce pasajul este rulat, deci nu trebuie să vă faceți griji cu privire la suprapunerea numelor variabilelor.

Șterg și camera $ player din lista de camere $, de la sine înțeles.

Pasul 7: Testarea

Testarea
Testarea
Testarea
Testarea

Deși am putea rula codul așa cum este acum, nu ar fi un test foarte amănunțit. Dacă rulăm codul și constatăm că $ player și $ wumpus sunt alocați diferitelor camere, nu știm dacă asta se întâmplă deoarece codul funcționează sau dacă este doar întâmplare. Sigur, am putea rula codul de multe ori și să presupunem că dacă nu le atribuie niciodată ambelor aceeași cameră pe care nu o va face niciodată, dar asta va dura pentru totdeauna și tot nu este o asigurare 100% că nu se poate întâmpla niciodată.

În schimb, avem nevoie de o modalitate de verificare.

Am adăugat trei linii în partea de sus a pasajului introductiv care ne va permite să vedem valorile variabilelor noastre $ wumpus, $ player și $ roomlist. Datorită modului în care ne-am configurat codul, știm că $ $ wumpus room și $ player room ar trebui eliminate din $ roomlist.

Când rulăm acest cod, putem verifica pentru a ne asigura că acesta este cazul.

Pasul 8: Ciudățenii cu Sugarcube și obiecte

Ciudățenii cu Sugarcube și obiecte
Ciudățenii cu Sugarcube și obiecte
Ciudățenii cu Sugarcube și obiecte
Ciudățenii cu Sugarcube și obiecte
Ciudățenii cu Sugarcube și obiecte
Ciudățenii cu Sugarcube și obiecte

Obiectele de zahăr sunt puțin ciudate. Permiteți-mi să demonstrez acest lucru.

În timp ce construiam inițial acest proiect, am vrut să-mi salvez lista $ room într-o variabilă $ saveroom înainte să încep să șterg camere din acesta. M-am gândit că va fi util mai târziu.

Când am primit un comportament ciudat din acest cod, am adăugat o altă linie la pagina mea introductivă pentru a mă permite să mă uit la variabila mea $ saveroom (a doua imagine).

Am fost șocat când am aflat că elementele pe care le ștersesem din $ roomlist fuseseră șterse și din lista mea salvată! Puteți vedea acest lucru în acțiune în a treia imagine.

Acest lucru se datorează faptului că atunci când copiați un tablou de genul acesta, nu îi spuneți de fapt lui Twine să copieze tabloul, ci îi spuneți lui Twine că aceste două variabile sunt aceeași matrice. Când faceți ceva matricei folosind o variabilă, aceasta schimbă aceeași matrice pe care o privește cealaltă variabilă!

Putem repara acest lucru cu funcția clone ().

Pasul 9: Funcția Clonare ()

Funcția Clonare ()
Funcția Clonare ()
Funcția Clonare ()
Funcția Clonare ()

Puteți citi despre funcția clone () pe pagina de documentare Sugarcube.

O copie „superficială” este ceea ce făceam înainte. În loc să faceți o copie completă a întregului tablou, presupune doar că variabila dvs. funcționează cu același tablou. În loc de o copie superficială, clone () face o copie „profundă”, care se comportă așa cum v-ați aștepta. Fiecare element al matricei este copiat într-o matrice nouă și este complet separat de original.

Dacă testăm acest nou cod, vom găsi că funcționează conform așteptărilor.

Desigur, nu contează dacă păstrați $ roomlist sau nu. În scopul proiectului meu, nu mă duc. Totul a fost doar pentru a demonstra copii adânci vs.

Pasul 10: Asta este deocamdată

Atât deocamdată!
Atât deocamdată!

Am adăugat cod care permite jucătorului nostru să înceapă într-o cameră aleatorie. În plus, am eliminat o eroare în care jucătorul ar începe în aceeași cameră cu Wumpus.

Am aflat despre cum să creăm legături din variabile și despre modul în care copierea matrice este tratată de Sugarcube.

Lucrurile se intensifică, dar abia începem!

Vanatoare placuta!

Recomandat: