Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-23 15:10
Jag är så glad att du gick med mig igen! Det betyder att Wumpus inte har ätit dig än. Bra!
För er som inte är bekanta är det här en uppsättning självstudier som jag gör för att hjälpa min förtjusande oochy-skootchy widdle-kusin med sitt seniorprojekt. Dessa självstudier är avsedda att vara en referens för vad du kan göra med några av programmeringsfunktionerna i Twine och Sugarcube. Om du vill följa med kan du hitta den första självstudien här.
I den senaste handledningen byggde jag en liten uppsättning rum som spelaren kan utforska. Jag lade till ett Wumpus -objekt och gjorde en generisk rumskod för att ändra vad som visas i varje rum beroende på var Wumpus är.
Steg 1: Skapa din spelare
Detta steg är mycket enkelt. I huvudsak använder jag bara samma kod som min $ wumpus, men med en $ player -variabel istället.
Steg 2: Ny rumskod
Ändrade din generiska rumskod så att värdet på $ player är det aktuella rummet. Jämför sedan $ wumpus med $ player istället för det aktuella rummet.
Detta är en mindre förändring, och inte helt nödvändig, men jag gillar att hålla min kod organiserad.
Steg 3: Skapa en länk från en variabel
Slutligen vill jag byta ut länken i mitt startrum till en som ändras baserat på värdet på $ player. Detta kan göras med "" -funktionen i Sugarcube. Du kan läsa mer om det på Sugarcubes dokumentationssida.
Den första strängen efter vårt kommando är frasen som kommer att visas i vår passage. Den andra är namnet på passagen som vi vill länka till. Jag använder "Hunt the Wumpus!" som min fras, men vi kan använda vår variabel där istället om vi vill att spelaren ska veta vart de ska på förhand, så här:
Steg 4: Testa
När du testar din kod bör du upptäcka att din länk har ersatts med vilken fras du än skrev tidigare. Genom att klicka på den tar du dig till ett slumpmässigt rum i ditt spel.
Tyvärr kan detta också ta dig direkt till Wumpus -rummet! Det spelar ingen större roll just nu, men i ett riktigt spel skulle det vara ett omedelbart spel över. Vi måste fixa det.
Steg 5: Lägg till en rumslista
Först ska vi skapa en rumslista för att göra hanteringen av rum enklare. Genom att deklarera denna array kan vi använda den för att ställa in våra $ player- och $ wumpus -värden utan att upprepa kod. Det har också en annan fördel som vi kommer att utforska härnäst.
Att testa med den här koden borde bete sig precis som den hade tidigare.
Steg 6: Eliminera rum
Jag har lagt till en enda kodrad i koden från tidigare (markerad).
Arrays i Sugarcube har en inbyggd funktion som låter dig ta bort element från dem med namn. I det här fallet kan vi när vi tilldelar $ wumpus ett rum ta bort det rummet från vår $ roomlista. Den här funktionen är dock knepig. Det kommer inte att fungera om inte utmatningen från funktionen tilldelas eller används på något sätt. För att ta hand om det har jag skapat den tillfälliga variabeln _temp.
I Sugarcube börjar tillfälliga variabler med en understrykning (_) istället för en dollar ($). De är användbara eftersom de raderas när passagen körs, så du behöver inte oroa dig för överlappande variabelnamn.
Jag tar bort $ player room från $ roomlist också, bara som en självklarhet.
Steg 7: Testning
Även om vi kunde köra koden som den är nu, skulle det inte vara ett mycket noggrant test. Om vi kör koden och upptäcker att $ player och $ wumpus tilldelas olika rum vet vi inte om det beror på att koden fungerar, eller om det bara är en slump. Visst, vi kan köra koden många gånger och anta att om det aldrig tilldelar dem båda samma rum som det aldrig kommer att göra, men det kommer att ta evigheter och det är fortfarande inte en 100% försäkran om att det aldrig kan hända.
Istället behöver vi ett sätt att kontrollera.
Jag har lagt till tre rader högst upp i vår intropassage som låter oss se värdena för våra $ wumpus-, $ player- och $ roomlist -variabler. På grund av vårt sätt att sätta upp vår kod vet vi att $ wumpus -rummet och $ -rummet bör elimineras från $ roomlistan.
När vi kör den här koden kan vi kontrollera att det är så.
Steg 8: Odditeter med Sugarcube och Objects
Sugarcube -objekt är lite udda. Låt mig visa detta.
Medan jag byggde detta projekt ursprungligen ville jag spara min $ roomlista till en $ saveroom -variabel innan jag började ta bort rum från den. Jag tänkte att det skulle komma till nytta senare.
När jag fick något konstigt beteende från den här koden lade jag till en annan rad på min intro -sida för att låta mig titta på min $ saveroom -variabel (andra bilden).
Jag blev chockad över att upptäcka att elementen som jag hade tagit bort från $ roomlist också hade tagits bort från min sparade lista! Du kan se detta i aktion på den tredje bilden.
Detta beror på att när du kopierar en array så här, säger du faktiskt inte till Twine att kopiera matrisen, du säger till Twine att dessa två variabler är samma array. När du gör något med matrisen med en variabel, ändras samma matris som den andra variabeln tittar på!
Vi kan fixa detta med funktionen klon ().
Steg 9: Klonen () -funktionen
Du kan läsa om funktionen klon () på dokumentationssidan för Sugarcube.
En "ytlig" kopia är vad vi gjorde tidigare. Istället för att göra en fullständig kopia av hela matrisen antar det bara att din variabel arbetar med samma array. I stället för en grund kopia gör klon () en "djup" kopia, som beter sig som du skulle förvänta dig. Varje element i matrisen kopieras över till en ny matris och är helt separat från originalet.
Om vi testar den här nya koden tycker vi att den fungerar som förväntat.
Naturligtvis spelar det ingen roll om du behåller $ roomlista eller inte. För mitt projekt kommer jag inte att göra det. Detta var bara för att visa djupa kontra grunda kopior.
Steg 10: Det är det för nu
Vi har lagt till kod som låter vår spelare börja i ett slumpmässigt rum. Utöver det har vi eliminerat ett fel där spelaren skulle börja i samma rum som Wumpus.
Vi lärde oss hur man skapar länkar från variabler och hur array -kopiering behandlas av Sugarcube.
Saker och ting ökar, men vi har precis börjat!
Glad jakt!
Rekommenderad:
Generiska rum i garn med sockerrör: 11 steg
Generic Rooms in Twine With Sugarcube: Hej hej och välkommen till min handledning om att bygga Wumpus Hunt i garn med Sugarcube! Twine är ett mycket enkelt verktyg, utformat för att skapa textäventyrsspel! Min favorit lilla kusin har valt att göra ett spel med Twine för sitt seniorprojekt, en
Skapa Banggood Affiliate (hänvisning) länkar enklare än någonsin: 4 steg
Generera Banggood -länkar (hänvisning) Länkar enklare än någonsin: En sammanfattad version av denna instruerbara finns på min personliga blogg. Affiliate -försäljning är en stor inkomstkälla för innehållsskapare, och många på instruktörer använder dem. På en mer populär webbplats som har affiliateprogram är Ban
Garn Globe Meditation Lampa: 5 steg
Garn Globe Meditation Lamp: I denna handledning kommer jag att visa dig hur du bygger en garnklotlampa med några lysdioder, koppartejp, pekssensor och ATtiny45. Lampan tänds och har en blekande effekt när du håller sensorn. Material som behövs: 3 lysdioder, vilken färg du vill
Konfigurera från scratch en Raspberry Pi för att logga data från Arduino: 5 steg
Konfigurera från scratch en Raspberry Pi för att logga data från Arduino: Denna handledning är för dem som inte har erfarenhet av att installera en ny maskinvara eller programvara, än mindre Python eller Linux. Låt säga att du har beställt till Raspberry Pi (RPi) med SD kort (minst 8 GB, jag använde 16 GB, typ I) och strömförsörjning (5V, minst 2
En annan strömförsörjning från bänkskivan från datorns strömförsörjning: 7 steg
En annan strömförsörjning från en bänkskiva från datorns strömförsörjning: Den här instruktionsboken visar hur jag byggde min nätaggregat från strömförsörjningsenheten i en gammal dator. Detta är ett mycket bra projekt att göra av flera skäl:- Det här är mycket användbart för alla som arbetar med elektronik. Det supp