Autorisation : Membre
Nb de messages : 19
Inscrit le : Jeu 12 Jan 2012, 20:15
Posté le : Sam 17 Nov 2012, 20:21
Salut à tous!
J'ai concocté un programme assez sympa, bien qu'assez court, qui permet de tester votre mémoire. Il n'est pas trés gros, environ 2000 octets, je pense que l'on peut l'optimiser, mais je suis assez débutant, donc j'attend vos conseils!
Lien de téléchargement : http://www.mediafire.com/?ji6xox05e8z8358
Désolé, je ne donne pas le code, sinon vous avez les réponses
Autorisation : Membre
Nb de messages : 295
Inscrit le : Lun 14 Mai 2012, 18:51
Posté le : Sam 17 Nov 2012, 21:56
Hmmm
Tu peux placer aléatoirement les mots dans les menus en utilisant les chaînes de caractères, ça fera plus de challenge la deuxième fois qu'on joue.
Et aussi les
Autorisation : Membre
Nb de messages : 19
Inscrit le : Jeu 12 Jan 2012, 20:15
Posté le : Sam 17 Nov 2012, 22:04
Salut! Je m'y connait pas trop en chaîne... Mais merci pour les factoriels 69, c'est vrai que ça m'énerve un peu de les recopier par dizaines --'
Merci!
Autorisation : Membre
Nb de messages : 19
Inscrit le : Jeu 12 Jan 2012, 20:15
Posté le : Sam 17 Nov 2012, 22:22
Ahhhhhhhhhhhh ok ! Merci =)
Mais faire de l'aléatoire avec des chaînes, je vois pas comment! Aide moi ^^!
Désolé, je suis débutant sur certains points.
Sinon, tu trouves que l'idée de mon programme est bonne? Parce-que je cherchais des idées depuis 1 semaine et j'ai enfin trouvé! Mais je sais pas ce que ça vaut, alors un avis ne serait pas de refus
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Sam 17 Nov 2012, 23:34
Ce jeu est simple mais les mots sont bien trouvés je pense.
Il n'y a pas nécessité de mettre des 69! à l'intérieur du For, le faire est plus efficace mais le réglage du temps est moins précis.
Génère un nombre aléatoire puis utilise la fonction sub() pour extraire des morceaux d'une chaine prédéfinie.
C'est ainsi qu'on crée aléatoirement des chaines.
Mon premier objectif :
utiliser un seul menu et une seule séquence d'affichage utilisant une base de données contenant les mots. (pour cela une chaine de caractères et des sous-chaînes)
Conseil pour atteindre cela :
soit les mots devront avoir tous une longueur maximale et les vides remplacés par des espaces, soit il faudra pouvoir retrouver la position et la longueur des mots.
Pour cette seconde option, il faut soit utiliser une liste de données ce qui est lourd mais rapide soit effectuer une recherche à chaque fois ce qui est léger mais lent.
Une fois que la base fonctionne on peut utiliser un aléatoire pour choisir les mots.
Ensuite et c'est là que cela se complique le plus, on peut aussi mélanger les mots d'un même round au sein du menu et de l'affichage.
Je ne sais pas encore comment je le ferai car je m'occupe d'abord du reste.
problème :
il faut pouvoir savoir quel choix du menu est juste si on veut utiliser un seul menu.
Il faut une liste ou effectuer une recherche ou bien ranger les données dans un ordre précis et que tous les affichages utilisent de l'aléatoire.
Ci-dessous j'ai choisi d'utiliser la méthode où les mots ont une longueur maximale. Pour l'instant j'ai choisi de stocker dans une liste le numéro des mots valides de chaque round.
Code
ClrHome
Output(4,6,"MEMOIRE"
Output(5,2,"PAR THENICOSS38"
For(W,1,16):69!:End
ClrHome
Lbl M
Menu("***MEMOIRE*** =)","JOUER",1,"QUITTER",2
Lbl 1
ClrHome
Output(1,3,"DES MOTS VONT"
Output(2,4,"S'AFFICHER"
Output(3,4,"RAPIDEMENT"
Output(4,3,"A TOI DE DIRE"
Output(5,2,"QUEL MOT TU AS"
Output(6,4,"VU DANS LES"
Output(7,2,"PROPOSITIONS!!"
Output(8,3,"BONNE CHANCE"
Pause
ClrHome
Output(3,3,"TU ES PRET?"
Output(4,3,"ALORS APPUIE"
Output(5,4,"SUR ENTRER
Output(6,3,"POUR DEMARRER"
Pause
ClrHome
// Le mot le plus long est "bacher" et fait 6 caractères
// il y a 5 mots par round donc il faudra 30 caractères par round
// j'ai fait mon exemple avec 3 rounds
"CHAT TANK MAT PAGE TANK VACHE CIBLE BACHERVACHE BIBLE JOIE DUR MUR JOIE MOIS ->Str1
{3,2,2->L1 // cette liste permettra de savoir quel choix du menu est gagnant à chaque round
// j'ai mis ça au début pour ne pas trop ralentir le programme à chaque round
0->A
Lbl A
If A=10 // pour s'arrêter au bout de 10 rounds réussis
Goto 2
A+1->A
randInt(0,2->R // round
1+30R->M // position de référence des mots du round dans la chaine 1
L1(R->N // prend le Rième terme de la liste L1
Output(1,1,sub(Str1,M,6
Output(8,10,"sub(Str1,M+6,6
For(W,1,16):69!:End
ClrHome
0 // indispensable pour utiliser Ans par la suite
Menu("QUEL MOT A-TU VU",sub(Str1,M+12,6),B,sub(Str1,M+18,6),C,sub(Str1,M+24,6),D
Lbl D
Ans+1
Lbl C
Ans+1
Lbl B
Ans+1 // chaque choix génère 1, 2 ou 3 grâce à Ans qui cumule les sommes
If Ans=N
Goto A // on continue !
ClrHome
Output(4,6,"RATE!"
Output(5,3,"TU AS PERDU!"
Pause
Goto M
Lbl G
ClrHome
Output(4,6,"BRAVO!"
Output(5,3,"TU AS GAGNE!"
Pause
Goto M
Lbl 2
ClrHome
Disp "AU REVOIR"
---------------------- 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)