Taula de continguts:

Enllaços de variables en guita amb Sugarcube: 10 passos
Enllaços de variables en guita amb Sugarcube: 10 passos

Vídeo: Enllaços de variables en guita amb Sugarcube: 10 passos

Vídeo: Enllaços de variables en guita amb Sugarcube: 10 passos
Vídeo: 8 инструментов в Excel, которыми каждый должен уметь пользоваться 2024, Desembre
Anonim
Enllaços de variables en cordill amb Sugarcube
Enllaços de variables en cordill amb Sugarcube

Estic molt contenta de tornar a acompanyar-me! Això significa que el Wumpus encara no us ha menjat. Bé!

Per a aquells que no estigueu familiaritzats, aquest és un conjunt de tutorials que estic realitzant per ajudar la meva adorable cosina de widdle oochy-skootchy amb el seu projecte sènior. Aquests tutorials han de ser una referència per al que podeu fer amb algunes de les funcions de programació de Twine i Sugarcube. Si voleu seguir-ho, podeu trobar el primer tutorial aquí.

A l'últim tutorial, vaig construir un petit conjunt d'habitacions que el jugador pot explorar. He afegit un objecte de Wumpus i he creat un codi d'habitació genèric per canviar el que es mostrava a cada habitació en funció d'on es trobi el Wumpus.

Pas 1: creeu el vostre reproductor

Crea el teu reproductor
Crea el teu reproductor

Aquest pas és molt senzill. Essencialment, només estic fent servir el mateix codi que el meu $ wumpus, però amb una variable $ player.

Pas 2: nou codi d'habitació

Nou codi d'habitació
Nou codi d'habitació

S'ha canviat el codi d'habitació genèric, de manera que el valor de $ player és l'habitació actual. A continuació, compareu $ wumpus amb $ player en lloc de l'habitació actual.

Es tracta d'un canvi menor, i no del tot necessari, però m'agrada mantenir el meu codi organitzat.

Pas 3: Creació d’un enllaç a partir d’una variable

Creació d’un enllaç a partir d’una variable
Creació d’un enllaç a partir d’una variable

Finalment, vull substituir l'enllaç de la meva sala d'inici per un que canviï segons el valor de $ player. Això es pot fer amb la "" funció a Sugarcube. Podeu obtenir més informació sobre això a la pàgina de documentació de Sugarcube.

La primera cadena després del nostre comandament és la frase que apareixerà al nostre passatge. El segon és el nom del passatge al qual volem enllaçar. Estic fent servir "Hunt the Wumpus!" com la meva frase, però podríem fer servir la nostra variable allà si volem que el jugador sàpiga cap a on va abans, així:

Pas 4: prova

Prova
Prova
Prova
Prova

Quan proveu el codi, haureu de comprovar que el vostre enllaç s'ha substituït per qualsevol frase que hàgiu escrit anteriorment. En fer-hi clic, accedireu a una sala aleatòria del joc.

Malauradament, això també us pot portar directament a la sala Wumpus. Això no importa molt ara mateix, però en un joc real que seria un joc instantani acabat. Hem d’arreglar-ho.

Pas 5: afegiu una llista d'habitacions

Afegiu una llista d'habitacions
Afegiu una llista d'habitacions

En primer lloc, crearem una llista d’habitacions per facilitar la gestió de les habitacions. En declarar aquesta matriu, la podem utilitzar per establir els valors de $ player i $ wumpus sense repetir codi. També té un altre avantatge que explorarem a continuació.

Les proves amb aquest codi haurien de comportar-se com abans.

Pas 6: Eliminació d'habitacions

Eliminació d'habitacions
Eliminació d'habitacions

He afegit una sola línia de codi al codi anterior (ressaltada).

Les matrius de Sugarcube tenen una funció integrada que us permet suprimir els elements per nom. En aquest cas, un cop assignem $ wumpus a una habitació, podem suprimir-la de la nostra llista de $ room. Aquesta funció, però, és complicada. No funcionarà tret que la sortida de la funció estigui assignada o utilitzada d'alguna manera. Per tenir-ne cura, he creat la variable temporal _temp.

A Sugarcube, les variables temporals comencen amb un guió baix (_) en lloc d'un dòlar ($). Són útils perquè s’eliminen un cop s’executa el passatge, de manera que no us heu de preocupar de la superposició de noms de variables.

També estic suprimint la sala de reproductors de $ roomlist, com és natural.

Pas 7: proves

Proves
Proves
Proves
Proves

Tot i que podríem executar el codi tal com és ara, no seria una prova molt completa. Si executem el codi i trobem que $ player i $ wumpus estan assignats a diferents sales, no sabem si això és perquè el codi funciona o si és només casualitat. Per descomptat, podríem executar el codi moltes vegades i suposar que si mai no els assigna la mateixa habitació que mai, però això trigarà per sempre i encara no és una garantia del 100% que mai no pot passar.

En el seu lloc, necessitem una manera de comprovar-ho.

He afegit tres línies a la part superior del nostre fragment d'introducció que ens permetran veure els valors de les variables $ wumpus, $ player i $ roomlist. A causa de la forma en què configurem el nostre codi, sabem que la sala $ wumpus i la sala de jugadors $ s'han d'eliminar de la llista d'habitacions $.

Quan executem aquest codi, podem comprovar que aquest sigui el cas.

Pas 8: Raritats amb el Sugarcube i els objectes

Curiositats amb el Sugarcube i els objectes
Curiositats amb el Sugarcube i els objectes
Curiositats amb el Sugarcube i els objectes
Curiositats amb el Sugarcube i els objectes
Curiositats amb el Sugarcube i els objectes
Curiositats amb el Sugarcube i els objectes

Els objectes de sucre són una mica estranys. Permeteu-me demostrar-ho.

Mentre estava construint aquest projecte originalment, volia desar la llista de $ room en una variable $ saveroom abans de començar a suprimir-ne les habitacions. Vaig pensar que després seria útil.

Quan vaig tenir un comportament estrany d'aquest codi, vaig afegir una altra línia a la meva pàgina d'introducció per deixar-me veure la meva variable $ saveroom (segona imatge).

Em va sorprendre veure que els elements que havia esborrat de $ roomlist també havien estat esborrats de la llista desada. Podeu veure-ho en acció a la tercera imatge.

Això es deu al fet que quan copieu una matriu com aquesta, en realitat no esteu dient a Twine que copiï la matriu, sinó a Twine que aquestes dues variables són la mateixa matriu. Quan feu alguna cosa a la matriu mitjançant una variable, canvia la mateixa matriu que està mirant l'altra variable.

Ho podem solucionar amb la funció clone ().

Pas 9: la funció Clone ()

La funció Clon ()
La funció Clon ()
La funció Clon ()
La funció Clon ()

Podeu llegir sobre la funció clone () a la pàgina de documentació Sugarcube.

Una còpia "superficial" és el que estàvem fent abans. En lloc de fer una còpia completa de tota la matriu, només assumeix que la vostra variable funciona amb la mateixa matriu. En lloc d'una còpia poc profunda, clone () fa una còpia "profunda", que es comporta com s'esperava. Cada element de la matriu es copia a una matriu nova i està totalment separat de l'original.

Si provem aquest nou codi, trobarem que funciona com s’esperava.

Per descomptat, no importa si mantingueu $ roomlist o no. Als efectes del meu projecte, no ho faré. Tot això només era per demostrar còpies profundes vs. superficials.

Pas 10: Això és tot per ara

Això és tot per ara!
Això és tot per ara!

Hem afegit un codi que permet que el nostre jugador comenci en una sala aleatòria. A més, hem eliminat un error en què el jugador començaria a la mateixa sala que el Wumpus.

Hem après sobre com crear enllaços a partir de variables i sobre com tracta Sugarcube de tractar la còpia de matriu.

Les coses augmenten, però tot just comencem!

Feliç caça!

Recomanat: