Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.
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
Je ne veux plus jamais les voir dans un de tes codes, ou alors t'auras la fessé !!
remplace simplement par
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
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
peut être remplacer par
Tout simplement !
Voila, je vais encore trifouiller un peu et si je revois quelque chose je te fais signe

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

de plus je constate ne pas être le seul a trainer sur se forum passé 22h30

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

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...

snap le 13/04/2015 à 12:24
Non, la méthode du
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
Du coup ceux là tu peux les changer

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

^^
Bonne chance

ld le 13/04/2015 à 21:48
Voilà il est réduit !
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

Mingerton le 14/04/2015 à 20:42
Eh bien cette modification suffira à pallier à ça

:
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

<3
C'est beau l'entraide

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

! mais par contre (et c'est ultra pretencieux) je trouve le miens plus ergonomique...

snap le 15/04/2015 à 15:23
Oui mais malheureusement, sur une TI, on ne peut pas se permettre de rechercher de l'ergonomie xDMingerton le 15/04/2015 à 19:59
Il manque quelque chose dans cette ligne

:
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

. Je propose donc cette ligne en remplacement :
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
Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.