Forum

Catégorie : Programmes
Forum : Les programmes des internautes
Vues : 1600
Réponses : 26
Type : discussion
Etat : réponses autorisées

Argent virtuel poker - Page 1 / 2

leo_85 le 12/04/2015 à 21:54
très important ce programme n'est en aucun cas un jeux de poker pour TIc'est juste un programme que j'ai fais pour quand je vais au bar avec les copains et qu'ont se retrouve a jouer avec les cartes mais sans argent avec un calepin ou un bloc note de portable et ont se pert dans les soustraction bref le prog:
Code
0->K
While x [different de] 0
EffEcr
Disp"Somme Par Joueur
Input x
End
x->A
x->B
x->C
0->D
Lbl 1
0->K
While K[different de]1 et K[different de]2 et K[different de]3
EffEcr
Disp "J1","J2","J3","Tapis
Output(1,7,A
Output(2,7,B
Output(3,7,C
Output(4,7,D
Disp "Soustraire (1)","Ajouter (2)","Gagnant (3)
Input "Action=",K
End
If K=1
Then
Goto 2
End
If K=2
Then
Goto 3
End
If K=3
Then
Goto 4
End
Lbl 2
0->K
While K[different de]1 et K[different de]2 et K[different de]3
EffEcr
Disp "J1 (1)","J2 (2)","J3 (3)
Input "Action",K
End
If K=1
Then
Disp "J1-?
Input x
A-x->A
D+x->D
Goto 1
End
If K=2
Then
Disp "J2-?
Input x
B-x->x
D+x->D
Goto 1
End
If K=3
Then
Disp "J3-?
Input x
C-x->C
D+x->D
Goto 1
End
Lbl 3
0->K
While K[different de]1 et K[different de]2 et K[different de]3
EffEcr
Disp "J1 (1)","J2 (2)","J3 (3)
Input "Action=",K
End
If K=1
Then
Disp "J1+?
Input x
End
If X[inferieur ou egale]D et D[different de]0
Then
A+x->A
D+x->D
Goto 1
Else
Goto 1
End
If K=2
Disp "J2+?
Input x
End
If X[inferieur ou egale]D et D[different de]0
Then
B+x->B
D-x->D
Goto 2
Else
Goto 1
End
If K=3
Then
Disp "J3+?
Input x
End
If X[inferieur ou egale]D et D[different de]0
Then
C+x->C
D-x->D
Goto 1
Else
Goto 1
End
Lbl 4
0->K
While K[different de]1 et K[different de]2 et K[different de]3
EffEcr
Disp "J1 (1)","J2 (2)","J3 (3)
Input "Action=",K
End
If K=1
Then
A+D->A
0->D
Goto 1
End
If K=2
Then
B+2->B
0->D
Goto 1
End
If K=3
Then
C+D->C
0->D
Goto 1
End


il y a peut être des erreur de label ou de recopiage divers je m'occuperais de les corriger sinon je suis a votre écoute pour l'optimisation
snap le 12/04/2015 à 22:15
Coucou !

J'ai pas rééllement cherché à comprendre ce que faisait le programme (j'ai jamais été bon pour ça)
Par contre, quelques conseils d'optimisation :

Concernant les

Code
If ...
Then
...
end


Je ne veux plus jamais les voir dans un de tes codes, ou alors t'auras la fessé !!

remplace simplement par

Code
if ... : ...


Enfin je crois, c'est vrai que ça fait longtemps que je programme plus sur ma TI mais ça doit bien etre ça !

Et ensuite pour les

Code
X=0 (je met X ici, mais ça peut être n'importe quelle variables^^


Tu peux le remplacer par

Code
EffVar X


Et après ça, pas besoin de retour à la ligne ou de ":", donc tu peux même si tu le veux écrire :

Code
EffVar XInput X

ou même pourquoi pas

EffVar XWhile X
...
end


Et enfin

Code
while X[diff de] 0


peut être remplacer par

Code
while X


Tout simplement !

Voila, je vais encore trifouiller un peu et si je revois quelque chose je te fais signe kiss.gif
leo_85 le 12/04/2015 à 22:32
pour le tes optimisation je persiste c'est plus lisible et ont économise pas d'octet mais merci quand meme happy.gif de plus je constate ne pas être le seul a trainer sur se forum passé 22h30 godgrace.gif
snap le 12/04/2015 à 22:35
Ok c'est plus lisible pour le EffVar auquel tu colles quelque chose, mais ne va pas me dire que c'est plus lisible le if then end, perso je prèferais largement lire un if tout seul avec l'action marquée à coté.
Tu dis qu'on gagne pas beaucoup d'octets, mais on est sur calculettes, 20ko de mémoire, un seul octet peu tout changé, j'en ai déjà fait l'experience ! xD

Et avec ton programme tu gagne facile une 100aine d'octets je pense non?
m@thieu41 le 12/04/2015 à 22:37
Hey !
Il vaut mieux éviter de mélanger les boucles ou conditions avec les goto/lbl. C'est mauvais pour la santé de ta calto :p (en particulier "if... Then goto X Else goto Y End" a répétitions est a éviter)
Linka a écrit un article dessus pour plus de détails winkle.gif
leo_85 le 12/04/2015 à 22:51
ok je vais le retaper mais demain la il est tard...
leo_85 le 13/04/2015 à 11:06
question : si j'ai plusieurs sous résulta a une condition j'écris :
Code
If [peu importe]:premier résultat:deuxième résultat:etc?
après c'est promis je le recommence... glasses.gif
snap le 13/04/2015 à 12:24
Non, la méthode du

Code
if ... : ...


ne marche que si tu as une seule condition, si tu en a plusieurs, il te faut un then et un end, malheureusement^^
leo_85 le 13/04/2015 à 13:00
mais toute mes conditions ont deux résultats donc je peut rien changer?
snap le 13/04/2015 à 13:16
T'en a quand même quelques un où tu as une seule ligne de code happy.gif

Du coup ceux là tu peux les changer bigmouth.gif
leo_85 le 13/04/2015 à 13:34
Code
0->K
While x [different de] 0
EffEcr
Disp"Somme Par Joueur
Input x
End
x->A
x->B
x->C
EffVar D
Lbl 1
EffVar K
While K
EffEcr
Disp "J1","J2","J3","Tapis
Output(1,7,A
Output(2,7,B
Output(3,7,C
Output(4,7,D
Disp "Soustraire (1)","Ajouter (2)","Gagnant (3)
Input "Action=",K
End
If K=1 : Goto 2
If K=2 : Goto 3
If K=3 : Goto 4
Lbl 2
EffVar K
While K
EffEcr
Disp "J1 (1)","J2 (2)","J3 (3)
Input "Action",K
End
If K=1
Then
Disp "J1-?
Input x
A-x->A
D+x->D
Goto 1
End
If K=2
Then
Disp "J2-?
Input x
B-x->x
D+x->D
Goto 1
End
If K=3
Then
Disp "J3-?
Input x
C-x->C
D+x->D
Goto 1
End
Lbl 3
EffVar K
While K
EffEcr
Disp "J1 (1)","J2 (2)","J3 (3)
Input "Action=",K
End
If K=1
Then
Disp "J1+?
Input x
End
If X[inferieur ou egale]D et D[different de]0
Then
A+x->A
D+x->D
Goto 1
Else
Goto 1
End
If K=2
Disp "J2+?
Input x
End
If X[inferieur ou egale]D et D[different de]0
Then
B+x->B
D-x->D
Goto 2
Else
Goto 1
End
If K=3
Then
Disp "J3+?
Input x
End
If X[inferieur ou egale]D et D[different de]0
Then
C+x->C
D-x->D
Goto 1
Else
Goto 1
End
Lbl 4
EffVar K
While K
EffEcr
Disp "J1 (1)","J2 (2)","J3 (3)
Input "Action=",K
End
If K=1
Then
A+D->A
EffVar D
Goto 1
End
If K=2
Then
B+2->B
EffVar D
Goto 1
End
If K=3
Then
C+D->C
EffVar D
Goto 1
End


de ce genre la?
snap le 13/04/2015 à 15:21
Ouaip, mais maintenant faut changer tous les if then end en autre chose bigmouth.gif^^
Bonne chance happy.gif
ld le 13/04/2015 à 21:48
Voilà il est réduit ! winkle.gif
Code
Disp"SOMME PAR JOUEUR"
Prompt A,B,C
Input "TAPIS",T
Lbl 1
EffEcr
Disp "J1","J2","J3","TAPIS
Output(1,7,A
Output(2,7,B
Output(3,7,C
Output(4,7,T
If T=0:Stop
Input "JOUEUR N°",J         -------- le ° est avant le ! dans le catalogue
Disp "SI GAGNANT TAPEZ T
Input "GAIN OU PERTE ",N    -------- si négatif, utilisez la touche (-) et pas -
A+N(J=1->A
B+N(J=2->B
C+N(J=3->C
If N>0 et N inférieur ou égale à T:T-N-T  ------- "et" touche 2nde math/logique
If N=T:0->T
Goto 1
leo_85 le 14/04/2015 à 11:31
problème: la somme par joueur doit être la même et le tapis est vide par défaut au poker sinon je vais le taper pour voir et je te dis happy.gif
Mingerton le 14/04/2015 à 20:42
Eh bien cette modification suffira à pallier à ça winkle.gif :

Code
EffVar TInput"SOMME PAR JOUEUR",A
A->B
A->C
Lbl 1
EffEcr
Disp "J1","J2","J3","TAPIS
Output(1,7,A
Output(2,7,B
Output(3,7,C
Output(4,7,T
Input "JOUEUR N°",J         -------- le ° est dans 2nd-Matrice ou 2de-Apps
Disp "SI GAGNANT TAPEZ T
Input "GAIN OU PERTE ",N    -------- si négatif, utilisez la touche (-) et pas -
A+N(J=1->A
B+N(J=2->B
C+N(J=3->C
If N>0 et N [inférieur ou égale à] T:T-N->T  ------- "et" touche 2nde math/logique
If N=T:0->T
Goto 1


Par contre, le tapis ne gagne jamais d'argent, et n'en perd jamais non plus puisqu'il n'en a pas à perdre. Pourquoi ne pas automatiser le changement de joueur de plus ? Je propose donc ceci :

Code
EffVar JEffVar TInput"SOMME PAR JOUEUR",A
A->B
A->C
Lbl 1
EffEcr
J+1->J
J-3(J[supérieur]3->J
Disp "J1","J2","J3","TAPIS
Output(1,7,A
Output(2,7,B
Output(3,7,C
Output(4,7,T
Disp "JOUEUR N°
Output(5,10,J
Disp "SI GAGNANT TAPEZ T
Input "GAIN OU PERTE:",N
A+N(J=1->A
B+N(J=2->B
C+N(J=3->C
If N<0:T+N->T
If N>0 et N[inférieur ou égal à]T:T-N->T
If N=T:0->T
Goto 1
ld le 15/04/2015 à 00:46
Quelle merveilleuse équipe on fait minied.gif <3
C'est beau l'entraide kiss.gif
snap le 15/04/2015 à 02:26
Coucou ! C'est encore moi !
Si quelqu'un pouvait tester ça et me dire si ça marche pareil que l'autre au dessus ! Ce serait gentil <3
Normalement ça devrais fonctionner mais j'avoue qu'à 2h25, je ne me fais plus trop confiance pour écrire du code :p

Code
EffVar JInput"SOMME PAR JOUEUR",A
{A,A,A,0->L1
while 1
EffEcr
J(J[pas égal à]3)+1->J
Disp "J1","J2","J3","TAPIS
For(I,1,4
Output(1,7,L1(I
end
Disp "JOUEUR N°
Output(5,10,J
Disp "SI GAGNANT TAPEZ T
Input "GAIN OU PERTE:",N
N+L1(J->L1(J
(N[pas egal a])(L1(4)+N((N<0)-(N>0->L1(4
end
leo_85 le 15/04/2015 à 11:18
les vôtres sont ultra compacte merci bigmouth.gif ! mais par contre (et c'est ultra pretencieux) je trouve le miens plus ergonomique... happy.gif
snap le 15/04/2015 à 15:23
Oui mais malheureusement, sur une TI, on ne peut pas se permettre de rechercher de l'ergonomie xD
Mingerton le 15/04/2015 à 19:59
Il manque quelque chose dans cette ligne tongue.gif :
Code
(N[pas egal a])(L1(4)+N((N<0)-(N>0->L1(4

De plus, cette histoire de repérer le signe n'avance à rien du tout puisqu'en fait il suffirait simplement de retirer N au tapis à chaque fois. Si le joueur perd de l'argent le signe devient forcément positif winkle.gif. Je propose donc cette ligne en remplacement :
Code
L1(4)-N->L1(4


Je pense qu'il faut régler ce problème de condition de sortie. Est ce que le fait que le tapis soit vidé irait ? Dans tous les cas, voilà un code un peu plus optimisé :

Code
EffVar JInput "SOMME PAR JOUEUR",A
{A,A,A,0->L1
While 1                   //à régler...
EffEcr
1+J(J[différent de]3->J
Disp "J1","J2","J3","TAPIS
For(I,1,4
Output(I,7,L1(I
End
Disp "JOUEUR N°
Output(5,10,J
Input "GAIN OU PERTE:  ",N
N+L1(J->L1(J
L1(4)-N->L1(4
End