Poster un nouveau sujet Poster une réponse
Mastermind, améliorations ?
Auteur Message
Chwood
Invité
Posté le : Mar 02 Jui 2009, 16:56   Citer 

Bonjour,
J'ai fait une sorte de mastermind sur la calculatrice donc, mais il est vraiment trop long et peut sûrement être largement amélioré. Donc je poste pour que vous me donniez quelques petits conseils svp godgrace.gif

Pour ceux qui connaissent pas ce jeu, la calculatrice prend aléatoirement 3,4 ou 5 chiffres selon le niveau de difficulté choisi, et vous devez retrouver ces chiffres (dans le bon ordre)

J'ai fait en sorte qu'il ne puisse y avoir qu'une seul fois le même chiffre dans la série.


Il prend 3000 (octet je suppose) tout pile et c'est un peu le désordre dans les étiquettes je pense ... mais c'est comme ça que je m'y retrouve ^^

Je me lance donc :

Traduction:
-le "#" remplace le petit L de la fonction LISTE
-(t) remplace le signe TETA


S'il y a des erreur dans le code qui font que le jeu marche pas, c'est que je me suis trompé ICI et non sur le programme (qui marche parfaitement clown.gif )


Code

Goto Q
Lbl 8
EffEcr
Stop



Lbl 7
Output(1,1,"===MEILLEURS===="
Output(2,1,"=====SCORES=====
Output(4,1,"3 CHIFFRES-->
Output(4,14,"#MAS(3)
Output(5,1,"4 CHIFFRES-->
Output(5,14,"#MAS(4)
Output(6,1,"5 CHIFFRES-->
Output(6,14,"#MAS(5)

Pause

Lbl 1
0->U
EffEcr
Menu("CBN DE CHIFFRES?","TROIS",3,"QUATRES",4,"CINQ",5,"REGLES",6,"SCORE",7,"QUITTER",8
0->A
0->B
0->C
Lbl 3
partEnt(10NbrAléat)->A
partEnt(10NbrAléat)->B
partEnt(10NbrAléat)->C

If A=B ou A=C ou B=C
Then
Goto 3
Else
Goto A
Lbl A
U+1->U
EffEcr
Output(3,10,"]
Output(4,8,"[
Output(4,10,"]
Output(5,8,"[
Output(5,10,"]
Disp "",""
Input "       [",D
Output(4,10,"]                        Cette étape est obligée sinon
Output(5,8,"[                         les "[" et "]" restent pas ...
Output(5,10,"]
Input "       [",E
Output(5,10,"]
Input "       [",F
0->(t)
0->W
If D=A
Then
W+1->W
(t)+1->(t)
End
If D=B
Then W+1->W
End
If D=C
Then
W+1->W
End
If E=A
Then
W+1->W
End
If E=B
Then
W+1->W
(t)+1->(t)
End
If E=C
W+1->W
End
If F=A
Then
W+1->W
End
If F=B
Then
W+1->W
End
If F=C
Then
(t)+1->(t)
W+1->W
End
EffEcr
If (t)=3
Then
Output(3,5,"GAGNE !
Output(4,3,"EN
Output(4,7,U
Output(4,9,COUPS
If U<#MAS(3)
Then
U->#MAS(3)
For(T,1,50
End
Output(7,2,"MEILLEUR SCORE
End
Else
Disp "TU AS
Output(1,7,"CHIFFRE(S) BON
Output(3,1,DONT
Output(3,6,(t)
Output(4,1,"BIEN PLACE(S)
PAUSE
Goto A

Lbl 4

C'est la même chose que pour le Lbl 3 mais pour 4 chiffres donc comme différences:
-Il y a la variable G en plus ainsi que la D
-C'est #MAS(4) qui est utilisé pour le score
-C'est l'étiquette B au lieu de la A
Si vous voulez quand mêmes les lignes de codes, demandez

Lbl 5

Idem que pour le Lbl 4

Différences:
-#MAS(5)
-Étiquette C
-Présence des nouvelles variables.

Lbl 6
Menu("...","BUT",K,"COMMANDES",L,"RETOUR",M
Lbl K
EffEcr
Disp " explications des règles en vitesse ..."
Pause
Goto M
LblM
Goto 1                                  Je sais plus pourquoi j'ai fais ça ...
Lbl Q
EffEcr
Output(1,1,"================
Output(2,1,":::MASTERMIND:::
Output(7,3,"BY   2   9   3
Output(8,1,"TITOU   1   7  2
Output(3,1,"================
Output(5,1," 3   0   7    8
Output(6,1,"          4    1
PAUSE
Goto 1
Lbl L
Disp "Explications des commandes donc...."
Pause
Goto 1


FIN !!!!!!!!!!!!!!!!




J'ai donc abrégé le code qui est bien long à la longue pour les 4 et 5 chiffres
Si vous voulez quand même ... demandez j'éditerais beer.gif




Les petits problème rencontrés sont:

-À chaque fois qu'on transfère ce programme d'une calculatrice à l'autre, il faut créer les 3 variables de la liste #MAS. C'est pas dur mais faut y penser, et il n'y a que moi ou quelqu'un qui sait le faire qui peut le transférer ...

-Il faut valider a chaque fois avant de rentrer un second chiffre. Beaucoup de gens n'y pensent pas (moi le premier au début crazy.gif ). Je sais pas si c'est possible de faire autrement après.

-Et surement d'autres petits truc pas trop trop importants mais quand même ^^


Je vous remercie donc d'avances pour vos réponses (et vous félicite d'avoir eu le courage d'aller jusqu'au bout bigmouth.gif


À bientôt
Chwood eyeonly.gif

  Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
mad67



Autorisation : Membre
Nb de messages : 630
Inscrit le : Sam 23 Jui 2007, 14:05
Posté le : Mer 03 Jui 2009, 17:15   Citer 

pour les listes ilk faut les générer au début du prog c'est tout genre:

Code
25->dim(l(lenomdelaliste)



 Adresse email Haut de page Bas de page 
 
Sangohan38



Autorisation : Membre
Nb de messages : 3370
Inscrit le : Sam 31 Déc 2005, 19:48
Posté le : Ven 05 Jui 2009, 16:10   Citer 

Lorsqu'il n'y a qu'une commande après le if, il est inutile de mettre les then, else, end.

Ainsi, au lieu de

Code
If A=B ou A=C ou B=C
Then
Goto 3
Else
Goto A
Lbl A
U+1->U
...



On obtient

Code
If A=B or B=C
Goto 3
U+1->U
...



De même, au lieu de

Code
If D=A
Then
W+1->W
(t)+1->(t)
End
If D=B
Then W+1->W
End
If D=C
Then
W+1->W
End



On a:

Code
If D=A or D=B or D=C
W+1->W
If D=A:(t)+1->(t)



Sangohan38

 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
Chwood
Invité
Posté le : Sam 06 Jui 2009, 8:33   Citer 

A oui ça va déjà bien le rétrécir sans tout les THEN.
Mais c'est quand qu'on en a besoin donc ?

Mais de creer la liste chaque fois au début du programme ça la remet pas à zero à chaque lancement du programme ?

  Haut de page Bas de page 
 
Sangohan38



Autorisation : Membre
Nb de messages : 3370
Inscrit le : Sam 31 Déc 2005, 19:48
Posté le : Dim 07 Jui 2009, 17:34   Citer 

Non, ça la dimensionne à chaque fois que tu utilise le programme si tu n'as pas mis la commande ClrList.

Sangohan38

 Adresse email Haut de page Bas de page 
 
mad67



Autorisation : Membre
Nb de messages : 630
Inscrit le : Sam 23 Jui 2007, 14:05
Posté le : Lun 08 Jui 2009, 7:22   Citer 

then et end c'est pour deux lignes ou plus


Code
if A=3
then
1->U
-1->I
end



 Adresse email Haut de page Bas de page 
 
Sangohan38



Autorisation : Membre
Nb de messages : 3370
Inscrit le : Sam 31 Déc 2005, 19:48
Posté le : Lun 08 Jui 2009, 14:45   Citer 

Désoler de te contredire mais il ne faut pas dire que les then/end sont pour deux lignes où plus mais pour deux instructions où plus car dans la même ligne tu peux mettre deux instructions:


Code
K+1->K:Goto 2  <---- il n'y a qu'une ligne mais deux instructions.



Sangohan38

 Adresse email Haut de page Bas de page 
 
Chwood
Invité
Posté le : Lun 08 Jui 2009, 15:25   Citer 

Ok merci beaucoup pour vos aides happy.gif

Et au niveau .... du programme ... enfin sais pas comment dire ^^ y'a des façon plus simples de faire certaines choses ou ... c'est au plus simple ? (sans compter les then et end en trop et les 2 lignes à condencer chaque fois ^^)

  Haut de page Bas de page 
 
Sangohan38



Autorisation : Membre
Nb de messages : 3370
Inscrit le : Sam 31 Déc 2005, 19:48
Posté le : Lun 08 Jui 2009, 16:34   Citer 

Il y a sans doute d'autres façons d'obtenir le même résultat en utilisant moins d'octet mais comme ce programme est assez gros, il vaut mieux le créer entièrement plutôt que de chercher à le modifier.
J'essayerais de créer ma version cette semaine si je trouve le temps.

Sangohan38

 Adresse email Haut de page Bas de page 
 
Sangohan38



Autorisation : Membre
Nb de messages : 3370
Inscrit le : Sam 31 Déc 2005, 19:48
Posté le : Mar 09 Jui 2009, 14:55   Citer 

Voila ma version du mastermind:


Code
Lbl 0
EffEcr
Menu("MASTERMIND:","JEU FACILE",1,"JEU MOYEN",2,"JEU DIFFICILE",3,"QUITTER",4
Lbl 3
5->A
Lbl 2
If Aø5:4->A
Lbl 1
EffListe L,L2
If A<4:3->A
A->dim(L
A->dim(L2
For(B,1,A
partEnt(NbrAl–at9+1->L(B
For(C,1,B
If L(B)=L(C) et BøC:B-1->B
End
End
0->S
Lbl 5
0->I
0->J
For(B,1,A
EffEcr
Disp "CHIFFRE Nô :
Output(1,11,B
Input "",C
C->L2(B
End
For(B,1,A
For(C,1,A
If B=C et L2(C)=L(B
I+1->I
If B[different de]C et L2(C)=L(B
J+1->J
End
End
EffEcr
For(B,1,A
Output(B,1,"CHIFFRE Nô :
Output(B,11,B
Output(B,13,L2(B
End
Output(7,1,"BIEN PLACES:
Output(8,1,"MAL PLACES:
Output(7,13,I
Output(8,12,J
Pause
S+1->S
If I[different de]A:Goto 5
EffEcr
Output(3,1,"BRAVO, TU AS
Output(4,1,"TROUVER EN
Output(4,12,S
Output(5,1,"COUPS.
Pause
Goto 0
Lbl 4
EffEcr
Output(1,1,"    "



Le lien pour le télécharger (en 8xp):http://www.badongo.com/file/15380005

Sangohan38

 Adresse email Haut de page Bas de page 
 
Chwood
Invité
Posté le : Ven 31 Juil 2009, 17:22   Citer 

C'est .... nettement plus court O_O
On voit le niveau ^^

  Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse





  Powered by Fire-Soft-Board v1.0.10 © 2004 - 2024 Groupe FSB
Page générée en 9 requêtes
BlackOne par Grimmlink