Indholdsfortegnelse:

Links fra variabler i garn med sukkerterning: 10 trin
Links fra variabler i garn med sukkerterning: 10 trin

Video: Links fra variabler i garn med sukkerterning: 10 trin

Video: Links fra variabler i garn med sukkerterning: 10 trin
Video: 🚀 RUTUBE и ТОЧКА. Разработка РУТУБА за 5 часов *БЕЗ ВОДЫ* [Next / React / Nest / PostgreSQL / Redux] 2024, Juli
Anonim
Links fra variabler i garn med sukkerterning
Links fra variabler i garn med sukkerterning

Jeg er så glad for at du har sluttet mig igen! Det betyder, at Wumpus ikke har spist dig endnu. Godt!

For dem af jer, der ikke er bekendt, er dette et sæt tutorials, jeg laver for at hjælpe min yndige oochy-skootchy widdle fætter med sit seniorprojekt. Disse selvstudier er beregnet til at være en reference til, hvad du kan gøre med nogle af programmeringsfunktionerne i garn og sukkerkube. Hvis du vil følge med, kan du finde den første vejledning her.

I den sidste tutorial byggede jeg et lille sæt værelser, som spilleren kan udforske. Jeg tilføjede et Wumpus -objekt og lavede en generisk rumkode til at ændre, hvad der blev vist i hvert værelse, afhængigt af hvor Wumpus er.

Trin 1: Opret din afspiller

Opret din afspiller
Opret din afspiller

Dette trin er meget enkelt. I det væsentlige bruger jeg bare den samme kode som min $ wumpus, men med en $ player -variabel i stedet.

Trin 2: Ny værelseskode

Ny værelseskode
Ny værelseskode

Ændrede din generiske værelseskode, så værdien af $ player er det aktuelle rum. Sammenlign derefter $ wumpus med $ player i stedet for det aktuelle værelse.

Dette er en mindre ændring og ikke helt nødvendig, men jeg kan godt lide at holde min kode organiseret.

Trin 3: Oprettelse af et link fra en variabel

Oprettelse af et link fra en variabel
Oprettelse af et link fra en variabel

Endelig vil jeg erstatte linket i mit startrum til et, der ændres baseret på værdien af $ player. Dette kan gøres med funktionen "" i Sugarcube. Du kan læse mere om det på Sugarcubes dokumentationsside.

Den første streng efter vores kommando er den sætning, der vises i vores passage. Den anden er navnet på den passage, vi vil linke til. Jeg bruger "Hunt the Wumpus!" som min sætning, men vi kunne bruge vores variabel der i stedet, hvis vi vil have spilleren til at vide, hvor de skal hen på forhånd, sådan her:

Trin 4: Test

Prøve
Prøve
Prøve
Prøve

Når du tester din kode, skal du opdage, at dit link er blevet erstattet med den sætning, du har skrevet før. Hvis du klikker på det, kommer du til et tilfældigt rum i dit spil.

Desværre kan dette også tage dig direkte til Wumpus -rummet! Det gør ikke så meget lige nu, men i et rigtigt spil ville det være et øjeblikkeligt spil slut. Det skal vi ordne.

Trin 5: Tilføj en rumliste

Tilføj en værelsesliste
Tilføj en værelsesliste

Først skal vi oprette en rumliste for at gøre det lettere at administrere værelser. Ved at deklarere dette array kan vi bruge det til at indstille vores $ player- og $ wumpus -værdier uden at gentage kode. Det har også en anden fordel, som vi vil udforske næste gang.

Test med denne kode skal opføre sig ligesom den havde før.

Trin 6: Fjernelse af værelser

Eliminerende værelser
Eliminerende værelser

Jeg har tilføjet en enkelt kodelinje til koden fra før (fremhævet).

Arrays i Sugarcube har en indbygget funktion, der lader dig slette elementer fra dem ved navn. I dette tilfælde kan vi, når vi tildeler $ wumpus et værelse, slette dette værelse fra vores $ roomlist. Denne funktion er dog finurlig. Det fungerer ikke, medmindre output fra funktionen er tildelt eller brugt på en eller anden måde. For at tage mig af det har jeg oprettet den midlertidige variabel _temp.

I Sugarcube starter midlertidige variabler med en understregning (_) i stedet for en dollar ($). De er nyttige, fordi de bliver slettet, når passagen er kørt, så du behøver ikke bekymre dig om overlappende variabelnavne.

Jeg sletter også $ player -rummet fra $ roomlist, bare som en selvfølge.

Trin 7: Test

Test
Test
Test
Test

Selvom vi kunne køre koden, som den er nu, ville det ikke være en meget grundig test. Hvis vi kører koden og finder ud af, at $ player og $ wumpus er tildelt forskellige rum, ved vi ikke, om det er fordi koden virker, eller om det bare er en tilfældighed. Sikker på, vi kunne køre koden mange gange og antage, at hvis det aldrig tildeler dem begge det samme rum, som det aldrig vil, men det vil tage evigt, og det er stadig ikke en 100% sikkerhed for, at det aldrig kan ske.

I stedet har vi brug for en måde at kontrollere.

Jeg har tilføjet tre linjer til toppen af vores intropassage, der lader os se værdierne for vores $ wumpus-, $ player- og $ roomlist -variabler. På grund af den måde, vi konfigurerede vores kode på, ved vi, at $ wumpus -rummet og $ spillerrummet bør elimineres fra $ roomlisten.

Når vi kører denne kode, kan vi kontrollere, om det er tilfældet.

Trin 8: Oddities With Sugarcube and Objects

Oddities With Sugarcube and Objects
Oddities With Sugarcube and Objects
Oddities With Sugarcube and Objects
Oddities With Sugarcube and Objects
Oddities With Sugarcube and Objects
Oddities With Sugarcube and Objects

Sugarcube -objekter er lidt underlige. Lad mig demonstrere dette.

Mens jeg oprindeligt byggede dette projekt, ville jeg gemme min $ roomlist til en $ saveroom -variabel, før jeg begyndte at slette værelser fra den. Jeg regnede med at det ville komme til nytte senere.

Da jeg fik en underlig adfærd fra denne kode, tilføjede jeg en anden linje til min intro -side for at lade mig se på min $ saveroom -variabel (andet billede).

Jeg var chokeret over at opdage, at de elementer, jeg havde slettet fra $ roomlist, også var blevet slettet fra min gemte liste! Du kan se dette i aktion på det tredje billede.

Dette skyldes, at når du kopierer et array som dette, fortæller du faktisk ikke Twine at kopiere arrayet, du fortæller Twine, at disse to variabler er det samme array. Når du gør noget ved arrayet ved hjælp af en variabel, ændrer det det samme array, som den anden variabel ser på!

Vi kan løse dette med funktionen klon ().

Trin 9: Funktionen Klon ()

Klonen () -funktionen
Klonen () -funktionen
Klonen () -funktionen
Klonen () -funktionen

Du kan læse om klon () -funktionen på Sugarcube -dokumentationssiden.

En "lav" kopi er, hvad vi lavede før. I stedet for at lave en komplet kopi af hele arrayet, antager det bare, at din variabel arbejder med det samme array. I stedet for en lav kopi laver klon () en "dyb" kopi, som opfører sig som du ville forvente. Hvert element i arrayet kopieres over til et nyt array og er totalt adskilt fra originalen.

Hvis vi tester denne nye kode, finder vi ud af, at den fungerer som forventet.

Selvfølgelig er det ligegyldigt, om du beholder $ roomlist eller ej. I forbindelse med mit projekt vil jeg ikke. Dette var bare for at demonstrere dybe vs. overfladiske kopier.

Trin 10: Sådan er det nu

Det er det for nu!
Det er det for nu!

Vi har tilføjet kode, der lader vores spiller starte i et tilfældigt rum. Ud over det har vi elimineret en fejl, hvor spilleren ville starte i samme rum som Wumpus.

Vi lærte om, hvordan man opretter links fra variabler, og hvordan array -kopiering behandles af Sugarcube.

Tingene stiger, men vi er lige begyndt!

God jagt!

Anbefalede: