Veze varijabli u kanapu sa šećernom kockom: 10 koraka
Veze varijabli u kanapu sa šećernom kockom: 10 koraka
Anonim
Veze varijabli u kanapu sa šećernom kockom
Veze varijabli u kanapu sa šećernom kockom

Drago mi je što ste mi se ponovo pridružili! To znači da vas Wumpus još nije pojeo. Dobro!

Za one od vas koji niste upoznati, ovo je skup vodiča koje radim kako bih pomogao mojoj preslatkoj rođaci oochy-skootchy wdle sa njenim višim projektom. Ovi vodiči su zamišljeni kao referenca za ono što možete učiniti s nekim od programskih značajki Twine i Sugarcube. Ako želite pratiti, prvi vodič možete pronaći ovdje.

U prošlom vodiču sagradio sam mali skup soba koje igrač može istražiti. Dodao sam Wumpus objekt i napravio neki generički kod sobe da promijenim ono što je prikazano u svakoj prostoriji ovisno o tome gdje se Wumpus nalazi.

Korak 1: Kreirajte svoj player

Kreirajte svoj player
Kreirajte svoj player

Ovaj korak je vrlo jednostavan. U suštini samo koristim isti kôd kao i moj $ wumpus, ali umjesto toga s varijablom $ player.

Korak 2: Novi kod sobe

Novi kôd sobe
Novi kôd sobe

Promijenjen je vaš generički kôd sobe tako da je vrijednost $ player trenutna soba. Zatim uporedite $ wumpus sa $ playerom umjesto trenutne sobe.

Ovo je mala promjena i nije potpuno potrebna, ali volim držati svoj kôd organiziranim.

Korak 3: Kreiranje veze iz varijable

Stvaranje veze iz varijable
Stvaranje veze iz varijable

Konačno, želim zamijeniti vezu u mojoj početnoj sobi onom koja se mijenja na osnovu vrijednosti $ player. To se može učiniti pomoću funkcije "" u Sugarcube. Više o tome možete pročitati na stranici dokumentacije Sugarcube -a.

Prvi niz nakon naše naredbe je izraz koji će se pojaviti u našem odlomku. Drugi je naziv odlomka na koji želimo povezati. Koristim "Hunt the Wumpus!" kao moja fraza, ali umjesto toga bismo mogli koristiti našu varijablu ako želimo da igrač unaprijed zna kamo ide, ovako:

Korak 4: Testirajte

Test
Test
Test
Test

Kada testirate svoj kôd, trebali biste otkriti da je vaša veza zamijenjena bilo kojom frazom koju ste ranije napisali. Klikom na nju odlazite u slučajnu sobu u igri.

Nažalost, ovo vas može odvesti i ravno u sobu Wumpus! To sada nije važno, ali u pravoj igri to bi bilo instantno gotovo. Moramo to popraviti.

Korak 5: Dodajte listu soba

Dodajte listu soba
Dodajte listu soba

Prvo ćemo stvoriti popis soba kako bismo olakšali upravljanje prostorijama. Deklariranjem ovog niza možemo ga koristiti za postavljanje vrijednosti $ player i $ wumpus bez ponavljanja koda. Takođe ima još jednu prednost koju ćemo dalje istražiti.

Testiranje s ovim kodom trebalo bi se ponašati kao i prije.

Korak 6: Uklanjanje prostorija

Uklanjanje soba
Uklanjanje soba

Dodao sam jedan red koda od ranije (istaknuto).

Nizovi u Sugarcube imaju ugrađenu funkciju koja vam omogućuje brisanje elemenata iz njih po imenu. U ovom slučaju, nakon što dodijelimo sobu $ wumpus, možemo izbrisati tu sobu sa naše liste soba. Ova je funkcija, međutim, promjenjiva. Neće raditi ako izlaz funkcije nije dodijeljen ili korišten na neki način. Da bih to riješio, stvorio sam privremenu varijablu _temp.

U Sugarcube -u privremene varijable počinju donjim crtom (_) umjesto dolara ($). Korisni su jer se brišu nakon pokretanja odlomka, tako da ne morate brinuti o preklapanju imena varijabli.

Brišem i $ player room sa $ roomlist, samo po sebi razumljivo.

Korak 7: Testiranje

Testiranje
Testiranje
Testiranje
Testiranje

Iako bismo mogli pokrenuti kôd kakav je sada, to ne bi bio baš temeljit test. Ako pokrenemo kôd i ustanovimo da su $ player i $ wumpus dodijeljeni različitim prostorijama, ne znamo je li to zato što kôd radi ili je to samo slučajnost. Naravno, mogli bismo pokrenuti kôd mnogo puta i pretpostaviti da ako im oboje nikada ne dodijeli istu prostoriju, to nikada neće ni učiniti, ali to će potrajati vječno i još uvijek nije 100% garancija da se to nikada neće dogoditi.

Umjesto toga, potreban nam je način provjere.

Dodao sam tri retka na vrh našeg uvodnog odlomka koji će nam omogućiti da vidimo vrijednosti naših varijabli $ wumpus, $ player i $ roomlist. Zbog načina na koji smo postavili naš kôd, znamo da bi $ wumpus sobu i $ player sobu trebali eliminirati sa $ roomlist.

Kada pokrenemo ovaj kôd, možemo provjeriti da li je to tačno.

Korak 8: Čudnosti sa šećernom kockom i predmetima

Neobičnosti sa šećernom kockom i predmetima
Neobičnosti sa šećernom kockom i predmetima
Neobičnosti sa šećernom kockom i predmetima
Neobičnosti sa šećernom kockom i predmetima
Neobičnosti sa šećernom kockom i predmetima
Neobičnosti sa šećernom kockom i predmetima

Objekti šećerne kocke su malo čudni. Dozvolite mi da ovo demonstriram.

Dok sam prvotno gradio ovaj projekt, želio sam spremiti svoju $ roomlist u varijablu $ saveroom prije nego što sam počeo brisati prostorije iz nje. Mislio sam da će mi kasnije dobro doći.

Kad sam dobio neko čudno ponašanje iz ovog koda, dodao sam još jedan red na uvodnu stranicu kako bih pogledao svoju varijablu $ saveroom (druga slika).

Bio sam šokiran kada sam otkrio da su elementi koje sam izbrisao sa $ roomlist također izbrisani sa moje sačuvane liste! To možete vidjeti na djelu na trećoj slici.

To je zato što kada kopirate ovakav niz, zapravo ne govorite Twineu da kopira niz, već govorite Twineu da su ove dvije varijable isti niz. Kada učinite nešto s nizom koristeći jednu varijablu, ona mijenja isti niz koji druga varijabla gleda!

To možemo popraviti pomoću funkcije clone ().

Korak 9: Funkcija Clone ()

Funkcija Clone ()
Funkcija Clone ()
Funkcija Clone ()
Funkcija Clone ()

O funkciji clone () možete pročitati na stranici dokumentacije Sugarcube.

"Plitka" kopija je ono što smo ranije radili. Umjesto potpune kopije cijelog niza, samo pretpostavlja da vaša varijabla radi s istim nizom. Umjesto plitke kopije, clone () radi "duboku" kopiju, koja se ponaša kako biste očekivali. Svaki element niza je kopiran u novi niz i potpuno je odvojen od originala.

Ako testiramo ovaj novi kôd, ustanovit ćemo da radi kako se očekuje.

Naravno, nije važno hoćete li zadržati $ roomlist ili ne. Za potrebe mog projekta, ja to neću učiniti. Ovo je sve samo radi demonstracije dubokih naspram plitkih kopija.

Korak 10: To je to za sada

To je to za sada!
To je to za sada!

Dodali smo kôd koji omogućava našem igraču da počne u nasumičnoj prostoriji. Osim toga, uklonili smo grešku u kojoj bi igrač počinjao u istoj prostoriji kao i Wumpus.

Naučili smo o tome kako stvoriti veze od varijabli i kako Sugarcube tretira kopiranje niza.

Stvari se ubrzavaju, ali tek počinjemo!

Sretan lov!

Preporučuje se: