Table des matières:

Liens à partir de variables dans Twine avec Sugarcube : 10 étapes
Liens à partir de variables dans Twine avec Sugarcube : 10 étapes

Vidéo: Liens à partir de variables dans Twine avec Sugarcube : 10 étapes

Vidéo: Liens à partir de variables dans Twine avec Sugarcube : 10 étapes
Vidéo: Initiation à la création de jeu vidéo avec Twine (FR) 2024, Novembre
Anonim
Liens à partir de variables dans Twine avec Sugarcube
Liens à partir de variables dans Twine avec Sugarcube

Je suis tellement content que tu me rejoignes à nouveau ! Cela signifie que le Wumpus ne vous a pas encore mangé. Bon!

Pour ceux d'entre vous qui ne sont pas familiers, voici un ensemble de tutoriels que je suis en train de créer pour aider mon adorable cousine oochy-skootchy widdle avec son projet senior. Ces tutoriels sont censés être une référence pour ce que vous pouvez faire avec certaines des fonctionnalités de programmation de Twine et Sugarcube. Si vous voulez suivre, vous pouvez trouver le premier tutoriel ici.

Dans le dernier tutoriel, j'ai construit un petit ensemble de pièces que le joueur peut explorer. J'ai ajouté un objet Wumpus et créé un code de pièce générique pour modifier ce qui était affiché dans chaque pièce en fonction de l'endroit où se trouve le Wumpus.

Étape 1: Créez votre lecteur

Créez votre lecteur
Créez votre lecteur

Cette étape est très simple. Essentiellement, j'utilise simplement le même code que mon $wumpus, mais avec une variable $player à la place.

Étape 2: Nouveau code de chambre

Nouveau code de chambre
Nouveau code de chambre

Modification de votre code de salle générique afin que la valeur de $player soit la salle actuelle. Comparez ensuite $wumpus à $player au lieu de la salle actuelle.

C'est un changement mineur, et pas totalement nécessaire, mais j'aime garder mon code organisé.

Étape 3: Création d'un lien à partir d'une variable

Création d'un lien à partir d'une variable
Création d'un lien à partir d'une variable

Enfin, je veux remplacer le lien dans ma salle de départ par un autre qui change en fonction de la valeur de $player. Cela peut être fait avec la fonction "" dans Sugarcube. Vous pouvez en savoir plus à ce sujet dans la page de documentation de Sugarcube.

La première chaîne après notre commande est la phrase qui apparaîtra dans notre passage. Le second est le nom du passage vers lequel nous voulons établir un lien. J'utilise "Chasse le Wumpus !" comme ma phrase, mais nous pourrions utiliser notre variable à la place si nous voulons que le joueur sache à l'avance où il va, comme ceci:

Étape 4: Tester

Test
Test
Test
Test

Lorsque vous testez votre code, vous devriez constater que votre lien a été remplacé par la phrase que vous avez écrite auparavant. En cliquant dessus, vous accédez à une pièce aléatoire de votre jeu.

Malheureusement, cela peut aussi vous emmener directement dans la salle Wumpus ! Cela n'a pas beaucoup d'importance pour le moment, mais dans un vrai jeu, ce serait un jeu instantané. Nous devons régler cela.

Étape 5: Ajouter une liste de pièces

Ajouter une liste de chambres
Ajouter une liste de chambres

Tout d'abord, nous allons créer une liste de salles, pour faciliter la gestion des salles. En déclarant ce tableau, nous pouvons l'utiliser pour définir nos valeurs $player et $wumpus sans répéter le code. Il a également un autre avantage que nous explorerons ensuite.

Tester avec ce code devrait se comporter comme avant.

Étape 6: Élimination des pièces

Éliminer les pièces
Éliminer les pièces

J'ai ajouté une seule ligne de code au code d'avant (mis en surbrillance).

Les tableaux dans Sugarcube ont une fonction intégrée qui vous permet de supprimer des éléments par leur nom. Dans ce cas, une fois que nous avons attribué à $wumpus une pièce, nous pouvons supprimer cette pièce de notre $roomlist. Cette fonction est cependant capricieuse. Cela ne fonctionnera que si la sortie de la fonction est affectée ou utilisée d'une manière ou d'une autre. Pour m'en occuper, j'ai créé la variable temporaire _temp.

Dans Sugarcube, les variables temporaires commencent par un trait de soulignement (_) au lieu d'un dollar ($). Ils sont utiles car ils sont supprimés une fois le passage exécuté, vous n'avez donc pas à vous soucier du chevauchement des noms de variables.

Je supprime également la salle $player de $roomlist, tout naturellement.

Étape 7: Tester

Essai
Essai
Essai
Essai

Bien que nous puissions exécuter le code tel qu'il est actuellement, ce ne serait pas un test très approfondi. Si nous exécutons le code et trouvons que $player et $wumpus sont affectés à des pièces différentes, nous ne savons pas si c'est parce que le code fonctionne, ou si c'est juste par hasard. Bien sûr, nous pourrions exécuter le code plusieurs fois et supposer que s'il ne leur attribue jamais la même pièce, cela ne le fera jamais, mais cela prendra une éternité et ce n'est toujours pas une assurance à 100% que cela ne pourra jamais arriver.

Au lieu de cela, nous avons besoin d'un moyen de vérifier.

J'ai ajouté trois lignes en haut de notre passage d'introduction qui nous permettront de voir les valeurs de nos variables $wumpus, $player et $roomlist. En raison de la façon dont nous avons configuré notre code, nous savons que la salle $wumpus et la salle $player doivent être éliminées de la liste $room.

Lorsque nous exécutons ce code, nous pouvons vérifier que c'est le cas.

Étape 8: Bizarreries avec Sugarcube et objets

Bizarreries avec Sugarcube et objets
Bizarreries avec Sugarcube et objets
Bizarreries avec Sugarcube et objets
Bizarreries avec Sugarcube et objets
Bizarreries avec Sugarcube et objets
Bizarreries avec Sugarcube et objets

Les objets Sugarcube sont un peu étranges. Permettez-moi de le démontrer.

Pendant que je construisais ce projet à l'origine, je voulais enregistrer ma $roomlist dans une variable $saveroom avant de commencer à en supprimer des pièces. J'ai pensé qu'il serait utile plus tard.

Lorsque j'ai eu un comportement étrange de ce code, j'ai ajouté une autre ligne à ma page d'introduction pour me permettre de regarder ma variable $saveroom (deuxième image).

J'ai été choqué de constater que les éléments que j'avais supprimés de $roomlist avaient également été supprimés de ma liste enregistrée ! Vous pouvez le voir en action sur la troisième photo.

En effet, lorsque vous copiez un tableau comme celui-ci, vous ne dites pas à Twine de copier le tableau, vous dites à Twine que ces deux variables sont le même tableau. Lorsque vous faites quelque chose sur le tableau en utilisant une variable, cela change le même tableau que l'autre variable regarde !

Nous pouvons résoudre ce problème avec la fonction clone().

Étape 9: La fonction Clone()

La fonction Clone()
La fonction Clone()
La fonction Clone()
La fonction Clone()

Vous pouvez en savoir plus sur la fonction clone() sur la page de documentation de Sugarcube.

Une copie « superficielle » est ce que nous faisions auparavant. Au lieu de faire une copie complète de l'ensemble du tableau, cela suppose simplement que votre variable fonctionne avec le même tableau. Au lieu d'une copie superficielle, clone() effectue une copie "profonde", qui se comporte comme vous vous en doutez. Chaque élément du tableau est copié dans un nouveau tableau et est totalement séparé de l'original.

Si nous testons ce nouveau code, nous constatons qu'il fonctionne comme prévu.

Bien sûr, peu importe que vous gardiez $roomlist ou non. Pour les besoins de mon projet, je ne le ferai pas. C'était juste pour démontrer des copies profondes contre des copies peu profondes.

Étape 10: C'est tout pour l'instant

C'est tout pour le moment!
C'est tout pour le moment!

Nous avons ajouté un code qui permet à notre joueur de commencer dans une pièce aléatoire. En plus de cela, nous avons éliminé un bug où le joueur commençait dans la même pièce que le Wumpus.

Nous avons appris comment créer des liens à partir de variables et comment la copie de tableau est traitée par Sugarcube.

Les choses s'accélèrent, mais nous ne faisons que commencer !

Bonne chasse!

Conseillé: