Inhoudsopgave:
- Stap 1: Maak uw speler
- Stap 2: Nieuwe kamercode
- Stap 3: Een link maken vanuit een variabele
- Stap 4: Testen
- Stap 5: Voeg een kamerlijst toe
- Stap 6: Kamers elimineren
- Stap 7: Testen
- Stap 8: Eigenaardigheden met Sugarcube en objecten
- Stap 9: De Clone()-functie
- Stap 10: Dat is het voor nu
Video: Links van variabelen in touw met Sugarcube - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:15
Ik ben zo blij dat je weer bij me bent! Dit betekent dat de Wumpus je nog niet heeft opgegeten. Mooi zo!
Voor degenen onder u die niet bekend zijn, dit is een reeks tutorials die ik maak om mijn schattige oochy-skootchy widdle neef te helpen met haar senior project. Deze tutorials zijn bedoeld als referentie voor wat u kunt doen met enkele programmeerfuncties van Twine en Sugarcube. Als je mee wilt doen, kun je hier de eerste tutorial vinden.
In de laatste tutorial heb ik een kleine set kamers gebouwd die de speler kan verkennen. Ik heb een Wumpus-object toegevoegd en een generieke kamercode gemaakt om te veranderen wat in elke kamer werd weergegeven, afhankelijk van waar de Wumpus zich bevindt.
Stap 1: Maak uw speler
Deze stap is heel eenvoudig. In wezen gebruik ik gewoon dezelfde code als mijn $wumpus, maar in plaats daarvan met een $player-variabele.
Stap 2: Nieuwe kamercode
Je algemene kamercode gewijzigd, zodat de waarde van $player de huidige kamer is. Vergelijk dan $wumpus met $player in plaats van de huidige kamer.
Dit is een kleine verandering, en niet helemaal noodzakelijk, maar ik hou mijn code graag georganiseerd.
Stap 3: Een link maken vanuit een variabele
Ten slotte wil ik de link in mijn startkamer vervangen door een link die verandert op basis van de waarde van $player. Dit kan met de functie "" in Sugarcube. Op de documentatiepagina van Sugarcube lees je daar meer over.
De eerste string na onze opdracht is de zin die in onze passage zal verschijnen. De tweede is de naam van de passage waarnaar we willen linken. Ik gebruik "Hunt the Wumpus!" als mijn zin, maar we zouden in plaats daarvan onze variabele daar kunnen gebruiken als we willen dat de speler van tevoren weet waar ze naartoe gaan, zoals dit:
Stap 4: Testen
Wanneer u uw code test, zou u moeten ontdekken dat uw link is vervangen door de zin die u eerder hebt geschreven. Als je erop klikt, ga je naar een willekeurige kamer in je spel.
Helaas kan dit je ook rechtstreeks naar de Wumpus-kamer brengen! Dat maakt op dit moment niet veel uit, maar in een echte game zou dat een instant game-over zijn. Dat moeten we oplossen.
Stap 5: Voeg een kamerlijst toe
Eerst gaan we een kamerlijst maken om het beheren van kamers gemakkelijker te maken. Door deze array te declareren, kunnen we deze gebruiken om onze $player- en $wumpus-waarden in te stellen zonder code te herhalen. Het heeft ook nog een ander voordeel dat we hierna zullen onderzoeken.
Testen met deze code zou zich net zo moeten gedragen als voorheen.
Stap 6: Kamers elimineren
Ik heb een enkele regel code toegevoegd aan de code van eerder (gemarkeerd).
Arrays in Sugarcube hebben een ingebouwde functie waarmee u elementen op naam kunt verwijderen. In dit geval kunnen we, zodra we $wumpus een kamer hebben toegewezen, die kamer van onze $roomlijst verwijderen. Deze functie is echter kieskeurig. Het werkt niet tenzij de uitvoer van de functie op een of andere manier wordt toegewezen of gebruikt. Om daarvoor te zorgen, heb ik de tijdelijke variabele _temp gemaakt.
In Sugarcube beginnen tijdelijke variabelen met een onderstrepingsteken (_) in plaats van een dollar ($). Ze zijn handig omdat ze worden verwijderd zodra de passage is uitgevoerd, dus u hoeft zich geen zorgen te maken over overlappende variabelenamen.
Ik verwijder ook de $player room van $roomlist, gewoon als een vanzelfsprekendheid.
Stap 7: Testen
Hoewel we de code zouden kunnen uitvoeren zoals deze nu is, zou dat geen erg grondige test zijn. Als we de code uitvoeren en ontdekken dat $player en $wumpus aan verschillende kamers zijn toegewezen, weten we niet of dat komt omdat de code werkt, of dat het gewoon toeval is. Natuurlijk kunnen we de code vele malen uitvoeren en aannemen dat als het hen nooit allebei dezelfde kamer toewijst, dit nooit zal gebeuren, maar dat zal een eeuwigheid duren en het is nog steeds geen 100% zekerheid dat het nooit kan gebeuren.
In plaats daarvan hebben we een manier nodig om te controleren.
Ik heb drie regels toegevoegd aan de bovenkant van onze intro-passage die ons de waarden van onze $wumpus-, $player- en $roomlist-variabelen laat zien. Door de manier waarop we onze code hebben opgezet, weten we dat de $wumpus room en $player room van de $roomlijst moeten worden verwijderd.
Wanneer we deze code uitvoeren, kunnen we controleren of dat het geval is.
Stap 8: Eigenaardigheden met Sugarcube en objecten
Sugarcube-objecten zijn een beetje vreemd. Laat me dit aantonen.
Terwijl ik dit project oorspronkelijk aan het bouwen was, wilde ik mijn $roomlist opslaan in een $saverroom-variabele voordat ik kamers ervan begon te verwijderen. Ik dacht dat het later wel van pas zou komen.
Toen ik vreemd gedrag van deze code kreeg, voegde ik nog een regel toe aan mijn intropagina om me naar mijn $saverroom-variabele te laten kijken (tweede afbeelding).
Ik was geschokt toen ik ontdekte dat de elementen die ik van $roomlist had verwijderd, ook waren verwijderd uit mijn opgeslagen lijst! Je kunt dit in actie zien op de derde foto.
Dit komt omdat wanneer je een array als deze kopieert, je Twine niet echt vertelt om de array te kopiëren, je vertelt Twine dat deze twee variabelen dezelfde array zijn. Wanneer u iets doet aan de array met behulp van één variabele, verandert het dezelfde array waar de andere variabele naar kijkt!
We kunnen dit oplossen met de clone() functie.
Stap 9: De Clone()-functie
U kunt meer lezen over de clone()-functie op de Sugarcube-documentatiepagina.
Een "ondiepe" kopie is wat we eerder deden. In plaats van een volledige kopie van de hele array te maken, wordt er gewoon vanuit gegaan dat je variabele met dezelfde array werkt. In plaats van een ondiepe kopie, maakt clone() een "diepe" kopie, die zich gedraagt zoals je zou verwachten. Elk element van de array wordt gekopieerd naar een nieuwe array en staat volledig los van het origineel.
Als we deze nieuwe code testen, merken we dat deze werkt zoals verwacht.
Het maakt natuurlijk niet uit of je $roomlist bijhoudt of niet. Voor de doeleinden van mijn project ga ik dat niet doen. Dit was allemaal alleen om diepe versus ondiepe kopieën te demonstreren.
Stap 10: Dat is het voor nu
We hebben code toegevoegd waarmee onze speler in een willekeurige kamer kan beginnen. Daarnaast hebben we een bug geëlimineerd waarbij de speler in dezelfde kamer als de Wumpus zou beginnen.
We hebben geleerd hoe je links van variabelen kunt maken en hoe het kopiëren van arrays wordt behandeld door Sugarcube.
Het gaat steeds beter, maar we zijn nog maar net begonnen!
Goede jacht!
Aanbevolen:
ASL robothand (links) - ASL 9 stappen (met afbeeldingen)
ASL Robotic Hand (Links): Het project dit semester was het creëren van een 3D-geprinte robotische linkerhand die in staat is om het Amerikaanse gebarentaalalfabet te demonstreren voor doven en slechthorenden in een klaslokaal. De toegankelijkheid om American Sign Langu
Links Rechts Spel: 4 Stappen
Left Right Game: het is een spel dat is ontworpen om kinderen te helpen hun links en rechten al vroeg te leren
Genereer Banggood Affiliate (Referral) Links eenvoudiger dan ooit: 4 stappen
Genereer Banggood Affiliate (Referral) Links eenvoudiger dan ooit: een verkorte versie van deze instructable is te vinden op mijn persoonlijke blog. Affiliate-verkopen zijn een geweldige bron van extra inkomsten voor makers van inhoud, en veel mensen op instructables gebruiken ze. affiliate programma is Ban
Live bewaking van de waarde van uw sensor van overal ter wereld: 4 stappen
Live monitoring van de waarde van uw sensor van overal ter wereld: ik kreeg een bericht op het WhatsApp-nummer van techneuten met betrekking tot hulp bij het maken van één project. Het project was om de druk op de druksensor te meten en deze op een smartphone weer te geven. Dus ik hielp bij het maken van dat project en besloot een bijlesdocent te maken
Hoe u gebruikersniveaus van NUMA toevoegt aan uw exemplaar van N met behulp van NumADD Firefox AddOn: 4 stappen
Gebruikersniveaus van NUMA toevoegen aan uw exemplaar van N NumADD Firefox-add-on gebruiken: Elke gebruiker van Metanet's N-database op gebruikersniveau NUMA weet hoe onhandig de interface is voor het kopiëren van door gebruikers gemaakte niveaus naar uw exemplaar van het spel. NumADD, elimineert de noodzaak van kopiëren en plakken en maakt het overzetten van niveaus het werk van één muisklik