Page 1 of 2

[En cours..] MasterMind sur Ti-NSpire

Unread postPosted: 21 Mar 2009, 22:33
by Maxdu46
Bonjour tout le monde,

Je partage le fruit de mon ennuie récent en cours de français et en cours d'histoire, un MasterMind pour Ti-Nspire. Le programme n'a rien d'extra-ordinaire mais je suis assez content du résultat. Il est fonctionnel mais je compte bien l'améliorer, notamment pour mettre un système de niveau (là on gagne quasiment à chaque fois). Et puis j'aurais besoin de votre aide pour savoir s'il est possible de concaténer les noms de variables parce que là le programme est long pour pas grand chose, j'ai essayé de contourner le problème en utilisant les cellules de tableur comme variable ( a[x] ) mais je ne peux dans ce cas pas afficher la valeur dans la partie graphique. J'ai utilisé la "command plot and line" de Mauritz Blomvist ce qui m'a fait gagné pas mal de temps, merci à lui, et également merci à Levak pour m'avoir montré qu'il était possible de programmer des jeux sur Nspire.

MasterMind 1.0

Image

Re: [En cours..] MasterMind sur Ti-NSpire

Unread postPosted: 22 Mar 2009, 17:24
by Maxdu46
J'ai regardé un peu les listes, mais le problème reste le même que d'utiliser les variables du tableur, on ne peut pas les afficher dans la partie graphique. Faute de mieux je crois que je vais laisser le code comme ça même s'il est long..

Re: [En cours..] MasterMind sur Ti-NSpire

Unread postPosted: 23 Mar 2009, 13:47
by Levak
Maxdu46 wrote:merci à lui, et également merci à Levak pour m'avoir montré qu'il était possible de programmer des jeux sur Nspire.

MasterMind 1.0



Derien ^^
C'est déjà pas mal du tout ! Et même très bien quand on sait le temps qu'on passe à dessiner à la main l'interface graphique ^^

Je vais tester ce soir et te dire ce qu'il serait bien d'améliorer.

Tu parle de concaténation de variable ?
J'ai eu ce problème pour Make3D (en cours) et on m'a conseillé d'utiliser expr()

par exemple : expr("a:=""b""c")
le permet de concaténer comme le fait le "." en PHP et le "+" en basique. Seulement le "+" est aussi utilisé pour concaténer des chaînes de caractères.

Si tu veux concaténer des liste utilises augment()
Par exemple : a:=augment(a,{b})
Il faut que les deux arguments soient des listes ou matrices, pour ça que si b est une simple variable, entoure le de {}

une autre méthode de concaténation à extension connue:
a:= newmat(5,2)
for i,1,5
a[i]:= [1 2]
endfor

@+ !

Re: [En cours..] MasterMind sur Ti-NSpire

Unread postPosted: 23 Mar 2009, 17:31
by Levak
Re,
Donc je viens de tester, et c'est vraiment bien fait ! GG

Seul hic : pour faire plus stresser le joueur en fin de partie, et mieux lui donner à l'idée qu'il est possible d'avoir plusieurs fois le même nombre, d'afficher la solution, au début je croyait que c'était un bug ;)

Sinon, interdire en entrée des nombres inférieurs ou égales à 0 et supérieurs ou égales à 10, qu'ils soient entiers également. (tu peux simplement convertir l'entrée en nombre entier avec round(x,0) ou avec iPart(x).) mais avant cela qu'ils soient numériques (getType(x)="NUM")

Enfin, et tu l'as dit toi même, qu'il serait intéressant de faire le ménage dans ces 40 variables inutiles xD

@+ et bonne continuation !

Re: [En cours..] MasterMind sur Ti-NSpire

Unread postPosted: 08 Apr 2009, 14:50
by Levak
alors ? a pas avancé avec tous les conseils que je t'ai filé ? :p

Re: [En cours..] MasterMind sur Ti-NSpire

Unread postPosted: 08 Apr 2009, 17:03
by Maxdu46
Ouups ! Je suis désolé j'avais complétement oublié de répondre. Il se trouve que j'ai récupérer un vieux pc avec MS-DOS et un compilateur de C++ dessus donc en ce moment je m'amuse plutôt sur ça.

Pour ce qui est de tes conseils j'avoue ne pas avoir tout saisi, ce que je cherche à faire c'est concaténer une chaine de caractère avec un chiffre, mais pour un nom de variable. En gros ça donnerais ça:

for i,1,10
a[i]:= 0
endfor

Sauf qu'ici "a" est une liste et on ne peut pas afficher les éléments d'une liste comme variable dans l'application géométrie.

Pour le reste je vais essayer d'avancer un peu, si je ponds un truc potable tu pourras le mettre sur le site Mic ?

(En fait si je parle à nouveau c'est parce que j'ai engagé des gardes du corps pour me protéger de mic :8): )

Re: [En cours..] MasterMind sur Ti-NSpire

Unread postPosted: 08 Apr 2009, 17:11
by Levak
a:={}
for i,1,10
a:=augment(a,{0})
endfor

Re: [En cours..] MasterMind sur Ti-NSpire

Unread postPosted: 08 Apr 2009, 17:39
by Maxdu46
Oui c'est à peu près ce que j'avais fais dans une des versions du programme, mais le problème reste le même puisque a est encore une liste, je ne pas pas afficher de valeur dans la partie graphique, si je tape a[1] comme texte dans la partie graphique et que je fais clic-droit puis calculer, ça refuse de faire quoi que ce soit. Tu vois le problème ?

Re: [En cours..] MasterMind sur Ti-NSpire

Unread postPosted: 08 Apr 2009, 19:02
by Levak
Si tu n'as pas envie de t'embêter avec des listes du peux toujours utiliser ceci( à tester sur un nouveau classeur)

for i,1,10
expr("define s.a"string(i)"=i")
endfor

ça fais quoi ?
ça fait une sorte de groupe de variables, groupe nommé ici "s"
Tu peux atteindre ce groupe avec s. (il y a un point attention)
Là la TI te propose de sélectionner parmi les variables existante.
Je viens de tester en mode graphique ça marche, sauf qu'il faut que tu le fasses pour toutes les variables

Re: [En cours..] MasterMind sur Ti-NSpire

Unread postPosted: 08 Apr 2009, 19:28
by Levak
Re, je viens de honteusement jeter un coup d'oeil dans ton prog et c'est pas du tout optimisé :-o (on sent le copier coller au bout de nez :D)

Il faudrait que tu travailles la partie qui assigne les variables de la partie graphique.
Explore la fonction expr() et tu feras des merveilles :;):
Pour ce qui est de la partie contrôle je ne vois pas comment faire, laisse la ainsi :)

Il faudrait que tu planques tes variables de "réponse", par exemple en créant un programme depuis le jeu, qui contiendrait les variables et demandant un code d'accès algorithmique que seul le jeu connaît ^^ (j'y vais peut être un peu fort XD)

Afficher les réponse à la fin quand on perd, c'est toujours marrant de voir qu'on est con des fois XD

un reset automatique à la fin au lieu de le taper reset(), en faisant un truc simple :

go(...)
Perdu...
go(...)
Voulez-vous vraiment recommencer ?
go(...)
C'est parti !
en le jeu recommense

Je pense que tu peux t'en sortir avec ton "n" qui traîne ^^

Pour ton reset : comme se sont de simple variables, pas besoin de faire un "define" à chaque fois:
for i,0,9
expr("a"string(i)":=0")
expr("b"string(i)":=0")
expr("c"string(i)":=0")
expr("d"string(i)":=0")
endfor

suffira ^^

Je te dis, utilises expr() et tu fera des merveilles ^^

@+