Poster un nouveau sujet Poster une réponse
[Jeu] Tickets à gratter [1]
Auteur Message
EvanTI



Autorisation : Membre
Nb de messages : 3
Inscrit le : Mer 11 Oct 2017, 17:15
Posté le : Mer 11 Oct 2017, 20:01   Citer 

Bonjour a tous, je suis nouveaux sur le forum, et étant en première STI2D, je commence a bidouiller des petits truc avec ma calculatrice quand je découvre le Saint Graal ! Et oui happy.gif Je commence donc a créer des petits programme genre le jeu plus ou moins mais j’étais pas très fort.
Donc je me suis renseigné et j'ai grâce a cela réussis à créer un jeu de tickets à gratter quand vous vous ennuyer laugh.gif
Attention, c'est mon premier "vrai" programme donc:
-Soyez indulgent,
-Aidez moi a améliorer le programme,
-Il n'y a que deux ticket mais d'autres arriverons bientôt !
Merci a tous et toutes cupsmiley.gif laugh.gif minied.gif
De plus, j'aimerais savoir s'il est possible de quitter le programme et quand on y revient il ne se remet pas à 0 et si oui comment happy.gif
J'ai mis en avant la partie blackjack pour ceux ayant déjà copié le programme avec 1 seul ticket happy.gif

Code

:CrlHome
500->A         //Argent
0->Z           //Nbre de tickets
For(X,1,16,1)
Output(1,X,"*
Output(8,X,"*
End
For(X,1,8,1)
Output(X,1,"*
Output(X,16,"*
End
Output(4,3,"TICK.GRATTE")
Output(5,5,"BY EVAN")
Pause
EffEcr
Disp "****************",            //16 pour la déco
"     TICKET",                     //5 espaces avant ticket
"****************","1)LE TRIPLE.","****************"
Input "CHOIX:",B
If B=1
Goto C
Lbl C
EffEcr
A-20->A
Z+1->Z
For(X,1,16,1)
Output(1,X,"*
Output(8,X,"*
End
For(X,1,16,1)
Output(X,1,"*
Output(X,16,"*
End
Output(5,3,"EVAN'S TRIPLES")
Output(3,1,"***************")      //15 étoiles
Output(5,3,"{ } { }  (=)"
Output(6,5,"{ }    (=)"
entAléat(1,9)->D
entAléat(1,9)->E
entAléat(1,9)->F
Pause
Output(5,4,D)
69!
69!
69!
69!
Output(5,8,E)
69!
69!
69!
69!
Output(6,6,F)
69!
69!
69!
69!
If D=E et E=F et F=D
Then:Output(7,6,"JACKPOT")
A+200->A
Pause:Goto W
End
If D=E ou D=F ou E=F
Then:Output(7,6,"DOUBLE!")
A+50->A
Pause:Goto W
End
If D[Non égal]E et D[Non égal]F et E[Non égal]F
Then:Output(7,6,"PERDU!")
A-30->A
Pause:Goto W
End
Lbl W
If A[Inférieur ou égal]9
Goto Y
If A>9
Goto X




Lbl H
Z+1->Z
A-20->A
EffEcr
For(X,1,16,1)
Output(1,X,"*
Output(8,X'"*
End
For(X,1,8,1)
Output(X,1,"*
Output(X,16,"*
End
Output(2,1,"EVAN'S BLACKJACK"
Output(3,2,"***************"              //15 étoiles !
Output(4,3,"{ }     (*==)"
Output(6,3,"{ }     (=-=)"
Output(5,3,"{ } { } (==*)"
entAléat(1,9)->I
entAléat(1,9)->J
entAléat(1,9)->K
entAléat(1,9)->L
Pause
Output(4,4,I
69!
69!
69!
69!
Output(5,4,J
69!
69!
69!
69!
Output(6,4,K
69!
69!
69!
69!
Output(5,8,L
69!
69!
69!
69!
If I>L ou J>L ou K>L
Then:Output(7,6,"SUPER!"
A+50->A
Pause:Goto O
End
If I<L et J<L et K<L
Then:Output7,6,"PERDU!"
A-30->A
Pause:Goto O
End
Lbl O                     //C'est un O et pas un zéro
If A[inférieur ou égal]p
Goto Y
If A>9
Pause
EffEcr
Disp "****************","TON ARGENT:",,A,"****************"
Pause
Goto H




Lbl X
EffEcr
Disp "****************",           //Toujours 16 signes !!!
"TON ARGENT:",A'"****************"
Pause
Goto C
Lbl Y
EffEcr
Disp "****************","VOUS AVEZ UTILI.",Z,"TICKETS !","****************"
Pause
Disp "     REJOUER","****************"," 1)OUI"," 2)NON","","****************"
Input "CHOIX:",G
If G=1
Goto C
If [Non égal]1
Stop




Encore merci pour ce fabuleux forum qui ma vraiment aidez !

----------------------
Si tu as un but, avance vers, mais si tu n'en as pas, ne te décourage pas car au fond reste l'espoir quand à chaque instant tu crois.

Vivre ou Mourir happy.gif
 Adresse email Haut de page Bas de page 
 
Homer_Dalor



Autorisation : Membre
Nb de messages : 31
Inscrit le : Sam 22 Avr 2017, 16:00
Posté le : Jeu 12 Oct 2017, 12:42   Citer 

Salut salut !

J'ai jeté un oeil sur ton programme, j'ai voulu le tester mais mes piles ont laché juste à ce moment là :p

Je l'ai donc fait tourner dans ma tête, tel un homme pauvre.
Il n'y a pas l'air d'y avoir de soucis en soit, sauf pour un truc :


Code
Input "CHOIX:",B
If B=1
Goto C
Lbl C



Avec ce code, même si l'utilisateur rentre autre chose que 1, ça l'amenera au Lbl C. Il faut donc que tu mettes une condition pour les autres cas.
Ou alors, tu peux aussi utiliser la jolie fonction Menu(). Elle est simple et pratique, autant l'utiliser <3 Si tu ne la connais pas, elle fonctionne comme ceci :


Code
:Menu("Titre du menu","Nom du premier choix", Lbl [Ce que tu veux],"Nom du deuxième choix", Lbl [ce que tu veux]



Tu peux même mettre le même label pour créer des QCM :p C'est-y pas magnifique? happy.gif

*********************************************

Sinon, il y a quelques trucs et astuces que je vais dès à présent te citer ! Go ! \o/


Code
entAléat(1,9)->D
entAléat(1,9)->E
entAléat(1,9)->F
Pause
Output(5,4,D)
69!
69!
69!
69!
Output(5,8,E)
69!
69!
69!
69!
Output(6,6,F)
69!
69!
69!
69!



Pour cette partie, je te conseille d'utiliser une liste. Si dans la fonction entAleat, tu rajoutes un nombre N, il va te sortir une liste de N aléatoire.

Tu peux alors faire ceci :


Code
entAléat(1,9,3)
For(H,1,3000
If non(PartDec(H/1000:Output(5,4H/1000,Rep(H/1000



A toi de changer la valeur dans le for pour augmenter ou diminuer la vitesse ;3

********************************************

Venons-en à cette partie. Tu as mis trop de Goto W.


Code
If D=E et E=F et F=D
Then:Output(7,6,"JACKPOT")
A+200->A
Pause:Goto W
End
If D=E ou D=F ou E=F
Then:Output(7,6,"DOUBLE!")
A+50->A
Pause:Goto W
End
If D[Non égal]E et D[Non égal]F et E[Non égal]F
Then:Output(7,6,"PERDU!")
A-30->A
Pause:Goto W
End
Lbl W



Le premier est utile. En effet, si D=E et E=F et F=D alors Ton deuxieme if est obligatoirement vrai.
Mais du coup, pourquoi ne pas emboiter les deux conditions ?


Code
If D=E ou E=F ou F=D     
Then
If D=E et D=F et E=F
Then:Output(7,6,"JACKPOT")
A+200->A
else                     //Grace au else, si les trois sont identiques, seul le jackpot sera affiché.
Output(7,6,"DOUBLE!")
A+50->A
end
else                //si aucun n'est identique à un autre alors il a perdu.
Output(7,6,"PERDU!")
A-30->A
end
pause
//et tu continues ton code, même pas besoin de Lbl W.




**********************************

Ensuite, ceci :


Code
If A[Inférieur ou égal]9
Goto Y
If A>9
Goto X
Lbl X



est tout simplement inutile. Si A<=9 il va aller au Lbl Y obligatoirement, pas besoin d'écrire la condition inverse. Ton code devient donc :


Code
If A[Inférieur ou égal]9
Goto Y
  //Et la suite de ton programme directement. Et sans le Lbl X qui ne sert ici à rien.
EffEcr



****************************************

Pareil pour la fin, essaie de mettre un menu, c'est plus joli <3
Et pour la condition finale :


Code
If G=1
Goto C
If [Non égal]1
Stop



Pareil qu'au dessus, elle se réduit comme ceci :


Code
If G=1:Goto C



Pas besoin de stop pour terminer un programme si tu es à la fin de ton code, le stop n'est nécessaire que si tu veux interrompre un programme au milieu du code winkle.gif

Voila voila. Je sais pas si il y a plus à dire, mes confrères se feront un plaisir de se triturer les méninges <3 En attendant n'hésite pas à poser des questions ici, et continues comme ça ! \o/ Bye :3

EDIT : J'avais pas vu ta question, honte sur moi !
Si tu veux que tout ne se remette pas à 0, met tes variables dans une liste, ça te permet de ne pas les utiliser avec d'autres programmes.

Tu peux ensuite faire un menu au début du programme qui demande si on veux continuer la partie ou en faire une nouvelle winkle.gif Je te laisse faire ça ;3

Si tu connais pas les listes, renseigne toi, et si tu comprend pas, revient poser de questions happy.gif

 Adresse email Haut de page Bas de page 
 
EvanTI



Autorisation : Membre
Nb de messages : 3
Inscrit le : Mer 11 Oct 2017, 17:15
Posté le : Jeu 12 Oct 2017, 18:35   Citer 

Bonjour, tout d'abord merci pour la réponse, ensuite ... j'aimerais bien que tu m'explique les listes, oui !
Je ne changerais pas mon programme tout de suite car après avoir fait tes modif le programme ... ne marchais plus !
A moins que tu m'écrive le code en entier ...

********************************

Ensuite, peut tu m'expliquer ceci:


Code

entAléat(1,9,3)
For(H,1,3000
If non(PartDec(H/1000:Output(5,4H/1000,Rep(H/1000



********************************

Merci quand même pour ta réponse, et en attendant, je vais tout de suite rajouter au programme un nouveaux tickets, le blackjack !!! Et j'ai commencer, avouez vous y avez jouer au moins une fois ... le numéro fétiche !

----------------------
Si tu as un but, avance vers, mais si tu n'en as pas, ne te décourage pas car au fond reste l'espoir quand à chaque instant tu crois.

Vivre ou Mourir happy.gif
 Adresse email Haut de page Bas de page 
 
Homer_Dalor



Autorisation : Membre
Nb de messages : 31
Inscrit le : Sam 22 Avr 2017, 16:00
Posté le : Jeu 12 Oct 2017, 20:52   Citer 

Hey happy.gif

J'ai peut-être fait des erreurs en écrivant, je vais voir ça ;p

pour les listes, est-ce que tu pourrais plutôt check la notice d'utilisation de la ti? Elle est disponible sur tout82 (Tape notice utilisation ti82 stats.fr dans google ^^ Le deuxieme site c'est tout82) Parce que je pourrai le faire mais ça serait assez long et peut-être pas super compréhensible pour tout^^

Voila j'ai check mon code et oui je me suis fail horriblement dans le for, je m'en excuse, maintenant que j'ai changé les piles c'est plus simple pour moi de vérifier ^^ Voici le code entier :


Code
:CrlHome
Lbl A                  // Si après un game over tu le fais revenir au Lbl C, il ne va plus avoir d'argent...
EffVar Z500->A         //Après Effvar [Variable] pas besoin de passer de lignes ou de mettre ":"
For(X,1,16,1)
Output(1,X,"*
Output(8,X,"*
End
For(X,1,8,1)
Output(X,1,"*
Output(X,16,"*
End
Output(4,3,"TICK.GRATTE")
Output(5,5,"BY EVAN")
Pause
EffEcr
Menu("TICKET","LE TRIPLE",C,"QUITTER",Q
Lbl C
EffEcr
A-20->A
Z+1->Z
For(X,1,16,1)
Output(1,X,"*
Output(8,X,"*
End
For(X,1,16,1)
Output(X,1,"*
Output(X,16,"*
End
Output(5,3,"EVAN'S TRIPLES")
Output(3,1,"***************")      //15 étoiles
Output(5,3,"{ } { }  (=)"
Output(6,5,"{ }    (=)"
entAléat(1,9,3
For(H,1,300
if non(partDec(H/100:Output(5+(H=300),4H/100-6(H=300),Rép(H/100
end
(Rép(1)=Rép(2))+(Rép(2)=Rép(3))+(Rép(3)=Rép(1
If Rép
Then
If Rép=1
Then:Output(7,6,"DOUBLE!")
A+50->A
Else
Output(7,6,"JACKPOT")
A+200->A
End
Else
Then:Output(7,6,"PERDU!")
A-30->A
End
Pause
If A<=9:Goto Y
Disp "****************",           //Toujours 16 signes !!!
"TON ARGENT:",A'"****************"
Pause
Goto C
Lbl Y
EffEcr
Disp "****************","VOUS AVEZ UTILI.",Z,"TICKETS !","****************"
Pause
Menu("REJOUER ?","OUI",A,"NON",Q
Lbl Q
EffEcr
Output(1,1,"



Voila, là ça devrait marcher. Je vais maintenant t'expliquer ce for tout moche.

****************************************


Code
entAléat(1,9,3
For(H,1,300
if non(partDec(H/100:Output(5+(H=300),4H/100-6(H=300),Rép(H/100
end



Première ligne : Il va choisir 3 valeurs entre 1 et 9 qu'il va inscrire dans une liste qui ressemblera à ceci : {4,7,2}
Après cette instruction, rép aura comme valeur la liste.

For(H,1,300) Ici j'ai réduit parce que c'était un peu trop long 3000 :p
If non(PartDec(H/100. Cette condition sera vrai uniquement si H=100 ou h=200 ou H=300. On divise H par 100, on prend sa partie décimale, et on regarde si elle est nulle.

Output(5+(H=300),4H/100-6(H=300),Rép(H/100
Si H=300, alors (H=300) vaudra 1.
Et comme le rép, comme je l'avais dit, vaux la liste, on lui demande la valeur H/100, comme on sait que cette instruction ne sera valide que si H=100,200 ou 300. La valeur de H/100 sera donc toujours 1,2 ou 3.

*************************************************

Passons à ceci :


Code
(Rép(1)=Rép(2))+(Rép(2)=Rép(3))+(Rép(3)=Rép(1
If Rép
Then
If Rép=1
Then:Output(7,6,"DOUBLE!")
A+50->A
Else
Output(7,6,"JACKPOT")
A+200->A
End
Else
Then:Output(7,6,"PERDU!")
A-30->A
End



Lors de la première ligne, le rép vaux toujours la liste des 3 valeurs. On regarde combien de valeurs sont identiques. A la fin de cette ligne, Rép vaudra 0 si aucune valeur n'est identique, 1 si deux valeurs sont identiques et 3 si les trois sont identiques.

If(Rép ne sera vrai que si Rép!=0 donc si au moins deux valeurs sont identiques.
Donc ça donne
Si au moins une valeur est vrai alors
Si deux des valeurs sont identiques alors
Double
Sinon c'est que les trois valeurs sont identiques donc
JACKPOT
Fin du premier alors
Sinon Rép=0 alors
PERDU.

**********************************************

Voila j'espère t"avoir aider à mieux comprendre, encore désolé pour l'erreur que j'ai faite ^^'
Hésite pas à redemander si tu comprend pas quelque chose <3

 Adresse email Haut de page Bas de page 
 
EvanTI



Autorisation : Membre
Nb de messages : 3
Inscrit le : Mer 11 Oct 2017, 17:15
Posté le : Ven 13 Oct 2017, 16:17   Citer 

Merci beaucoup, mais je viens de penser, pour faire un nombre presque indéfini de tickets, n'est t-il pas mieux que je créer un programme principale avec le menu et que après je créer des programmes pour chaque tickets happy.gif ???
glasses.gif

----------------------
Si tu as un but, avance vers, mais si tu n'en as pas, ne te décourage pas car au fond reste l'espoir quand à chaque instant tu crois.

Vivre ou Mourir happy.gif
 Adresse email Haut de page Bas de page 
 
Homer_Dalor



Autorisation : Membre
Nb de messages : 31
Inscrit le : Sam 22 Avr 2017, 16:00
Posté le : Ven 13 Oct 2017, 17:23   Citer 

Non, ne t'encombre pas de sous-programmes si tu ne les appelles qu'une seule fois. Ca va juste te faire 20 programmes en plus dans ta calculette, pas super pratique ;p

Si tu veux créer un sous-programmes, faut que ça soit parce que t'en a besoin plusieurs fois dans le programme (Imaginons un morceau de 400 octets que tu as besoin a plusieurs endroits différents du programme, donc impossible de Goto, à part en mettant plein de conditions.)

Si tu veux faire un sous-programme ici, ça serait plutôt un sous-programme qui choisit plusieurs valeurs aléatoires et qui les affiche au bon endroit (Pour ça on pourrait créer une liste qui répertorie le nombre de valeurs à choisir et leur emplacement.)

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





  Page générée en 6 requêtes