Autorisation : Membre
Nb de messages : 3
Inscrit le : Ven 11 Mai 2012, 11:13
Posté le : Mer 02 Oct 2013, 21:36
Bonjour tout le monde,
Je suis en train de coder un genre de Cookie Clicker (ce jeu où on clique sur un cookie puis on achète des machines pour le faire à notre place pour en gagner de plus en plus)...
Le problème, c'est que je dois stocker le nombre de cookies et le rendement des machines à cookie (en fonction de leur nombre) entre chaque partie, on ne va pas recommencer à zéro à chaque fois...
Donc j'utilise une liste, que j'écris
Code
{K,S}->CK
(K c'est le nombre de cookies, S le rendement)
Et au début du programme j'appelle les valeurs de K et S et je le réassigne à leur Lettre respective.
Le problème: comment je fais, au premier lancement du jeu, pour que K=0 et S=0?
Là, la calculette me met ERR:INDEFINI, ce qui est logique...
Merci
---------------------- Prière de nourrir dans la limite du raisonnable le noob.
Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mer 02 Oct 2013, 22:58
Sur ti 82 tu ne peux pas définir de liste au nom personnalisé, tu n'as que L1 à L6.
Je ne comprends pas le contexte de ton erreur. Indique ce qui plante, pas seulement la ligne de création. Et éventuellement poste le code entier.
Utiliser le raccourcis en se passant du symbole L n'est pas une bone idée, il vaudrait mieux être explicite et écrire {KS}->lCK.
Pour vérifier si le programme a déjà été exécuté, tu dois stocker une information dans la liste qui servira à différencier une liste ancienne d'une liste nouvelle.
Le plus simple pour faire ça, c'est de créer une liste en la dimensionnant puis cherchant une valeur non-nulle prouvant que la liste existait déjà avant.
(En effet la création d'une liste par son dimensionnement cause l'écriture de zéros aux termes précédemment indéfinis.)
Tu peux utiliser une case exprès pour ça.
Moi j'aime réserver la première case à ça.
Mais tu peux utiliser une autre information ou encore utiliser une autre case que la première.
Code
3->dim(lCK // au début du programme
//Quand tu veux savoir si la liste est nouvelle et en supposant que le terme 1 est non-nul
If lCK(1
Then
//actions d'initialisation
End
// pour sauvegarder si tu as choisis la technique du premier terme réservé
{1,K,S->lCK
// réaffectation
lCK(2->K
lCK(3->S
Code
2->dim(lCK // au début du programme
//Quand tu veux savoir si la liste est nouvelle et en supposant que le terme 1 est non-nul
If lCK(2
Then
//actions d'initialisation
End
// pour sauvegarder si tu as choisis la technique du premier terme réservé
{K,S->lCK
// réaffectation
lCK(1->K
lCK(2->S
Tu peux ranger les termes comme tu veux tant que tu testes correctement.
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)