Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-23 15:02
Jeg er så glad for at du ble med meg igjen! Dette betyr at Wumpus ikke har spist deg ennå. God!
For de av dere som ikke er kjent, er dette et sett med opplæringsprogrammer jeg lager for å hjelpe min yndige oochy-skootchy widdle fetter med sitt seniorprosjekt. Disse opplæringsprogrammene er ment å være en referanse for hva du kan gjøre med noen av programmeringsfunksjonene til Twine og Sugarcube. Hvis du vil følge med, kan du finne den første opplæringen her.
I den siste opplæringen bygde jeg et lite sett med rom som spilleren kan utforske. Jeg la til et Wumpus -objekt og laget en generisk romkode for å endre det som ble vist i hvert rom, avhengig av hvor Wumpus er.
Trinn 1: Lag spilleren din
Dette trinnet er veldig enkelt. I hovedsak bruker jeg bare den samme koden som min $ wumpus, men med en $ player -variabel i stedet.
Trinn 2: Ny romkode
Endret den generiske romkoden slik at verdien til $ player er gjeldende rom. Sammenlign deretter $ wumpus med $ player i stedet for det nåværende rommet.
Dette er en liten endring, og ikke helt nødvendig, men jeg liker å holde koden organisert.
Trinn 3: Opprette en kobling fra en variabel
Til slutt vil jeg erstatte lenken i startrommet mitt til en som endres basert på verdien av $ player. Dette kan gjøres med "" -funksjonen i Sugarcube. Du kan lese mer om det på Sugarcubes dokumentasjonsside.
Den første strengen etter kommandoen vår er setningen som vil vises i passasjen vår. Den andre er navnet på passasjen vi vil koble til. Jeg bruker "Hunt the Wumpus!" som min setning, men vi kan bruke variabelen vår der i stedet hvis vi vil at spilleren skal vite hvor de skal på forhånd, slik:
Trinn 4: Test
Når du tester koden din, bør du finne ut at lenken din er erstattet med hvilken setning du skrev før. Hvis du klikker på den, kommer du til et tilfeldig rom i spillet ditt.
Dessverre kan dette også ta deg rett til Wumpus -rommet! Det spiller ingen rolle akkurat nå, men i et ekte spill ville det være et øyeblikkelig spill. Vi må fikse det.
Trinn 5: Legg til en romliste
Først skal vi lage en romliste for å gjøre det enklere å administrere rom. Ved å deklarere denne matrisen kan vi bruke den til å angi verdiene $ player og $ wumpus uten å gjenta koden. Det har også en annen fordel som vi vil utforske neste.
Testing med denne koden skal oppføre seg akkurat som den hadde før.
Trinn 6: Eliminering av rom
Jeg har lagt til en enkelt kodelinje i koden fra før (uthevet).
Arrays i Sugarcube har en innebygd funksjon som lar deg slette elementer fra dem ved navn. I dette tilfellet, når vi tildeler $ wumpus et rom, kan vi slette dette rommet fra $ romlisten. Denne funksjonen er imidlertid fin. Det vil ikke fungere med mindre utdataene til funksjonen er tilordnet eller brukt på en eller annen måte. For å ta vare på det har jeg opprettet den midlertidige variabelen _temp.
I Sugarcube starter midlertidige variabler med en understreking (_) i stedet for en dollar ($). De er nyttige fordi de blir slettet når passasjen er kjørt, så du trenger ikke å bekymre deg for overlappende variabelnavn.
Jeg sletter $ spillerommet fra $ roomlist også, bare som en selvfølge.
Trinn 7: Testing
Selv om vi kunne kjøre koden slik den er nå, ville det ikke være en veldig grundig test. Hvis vi kjører koden og finner ut at $ player og $ wumpus er tilordnet forskjellige rom, vet vi ikke om det er fordi koden fungerer, eller om det bare er en tilfeldighet. Visst, vi kan kjøre koden mange ganger, og anta at hvis det aldri tildeler dem begge det samme rommet at det aldri vil gjøre det, men det vil ta evigheter, og det er fortsatt ikke 100% forsikring om at det aldri kan skje.
I stedet trenger vi en måte å sjekke på.
Jeg har lagt til tre linjer øverst i intropassasjen som lar oss se verdiene til $ wumpus-, $ player- og $ roomlist -variabler. På grunn av måten vi konfigurerte koden vår på, vet vi at $ wumpus -rommet og $ spillerommet bør fjernes fra $ roomlisten.
Når vi kjører denne koden, kan vi kontrollere at det er tilfelle.
Trinn 8: Odditeter med sukkerbit og objekter
Sugarcube -objekter er litt rare. La meg demonstrere dette.
Mens jeg bygde dette prosjektet opprinnelig, ønsket jeg å lagre $ roomlisten min i en $ saveroom -variabel før jeg begynte å slette rom fra den. Jeg tenkte at det ville komme godt med senere.
Da jeg fikk en merkelig oppførsel fra denne koden, la jeg til en annen linje på min intro -side for å la meg se på min $ saveroom -variabel (andre bilde).
Jeg ble sjokkert over å finne at elementene jeg hadde slettet fra $ roomlist også hadde blitt slettet fra min lagrede liste! Du kan se dette i aksjon på det tredje bildet.
Dette er fordi når du kopierer en matrise som denne, forteller du faktisk ikke Twine å kopiere matrisen, du forteller Twine at disse to variablene er samme matrise. Når du gjør noe med matrisen ved hjelp av en variabel, endrer den samme matrisen som den andre variabelen ser på!
Vi kan fikse dette med klonen () -funksjonen.
Trinn 9: Klonen () -funksjonen
Du kan lese om klone () -funksjonen på dokumentasjonssiden for Sugarcube.
En "grunne" kopi er det vi gjorde før. I stedet for å lage en fullstendig kopi av hele matrisen, antar det bare at variabelen din jobber med samme matrise. I stedet for en grunne kopi, gjør klon () en "dyp" kopi, som oppfører seg som du ville forvente. Hvert element i matrisen blir kopiert til en ny matrise, og er helt atskilt fra originalen.
Hvis vi tester denne nye koden, finner vi ut at den fungerer som forventet.
Selvfølgelig spiller det ingen rolle om du beholder $ roomlist eller ikke. Når det gjelder prosjektet mitt, skal jeg ikke. Dette var bare for å demonstrere dype kontra grunne kopier.
Trinn 10: Det er det for nå
Vi har lagt til kode som lar spilleren vår starte i et tilfeldig rom. I tillegg til det har vi eliminert en feil der spilleren skulle starte i samme rom som Wumpus.
Vi lærte om hvordan du oppretter lenker fra variabler, og hvordan matrisekopiering behandles av Sugarcube.
Ting stiger, men vi har nettopp begynt!
God jakt!
Anbefalt:
Generiske rom i garn med sukkerbit: 11 trinn
Generic Rooms in Twine With Sugarcube: Hei hei og velkommen til min opplæring i å bygge Wumpus Hunt i garn med Sugarcube! Twine er et veldig enkelt verktøy, designet for å lage teksteventyrspill! Min favoritt lille fetter har valgt å lage et spill med Twine for sitt seniorprosjekt, en
Robot fra tauklatring fra en ødelagt 3D-penn: 12 trinn (med bilder)
Robot fra tauklatring fra en ødelagt 3D-penn: 3D-penner er flotte verktøy for å utvikle kreativiteten til barna dine. Men hva kan du gjøre når 3D Doodler Start slutter å fungere og ikke kan repareres? Ikke kast 3D -pennen din til søpla! Fordi i denne instruksen vil jeg lære deg hvordan du skal forandre
Garn Globe Meditasjonslampe: 5 trinn
Garn Globe Meditasjonslampe: I denne opplæringen vil jeg vise deg hvordan du bygger en garnklosselampe med noen lysdioder, kobberbånd, berøringssensor og ATtiny45. Lampen vil slås på og ha falmende effekt når du holder sensoren. Nødvendige materialer: 3 lysdioder, hvilken som helst farge du vil
Sett opp fra scratch en Raspberry Pi for å logge data fra Arduino: 5 trinn
Sett opp fra scratch en Raspberry Pi for å logge data fra Arduino: Denne opplæringen er for de som ikke har erfaring med å installere en ny maskinvare eller programvare, enn si Python eller Linux. La oss si at du har bestilt Raspberry Pi (RPi) med SD kort (minst 8 GB, jeg brukte 16 GB, type I) og strømforsyning (5V, minst 2
Garn-dekket USB! Kan tilpasses: 5 trinn
Garn-dekket USB! Kan tilpasses: Vil du tilpasse USB -en din? Er fargen på USB -en din ikke din favoritt?