Autorisation : Membre
Nb de messages : 132
Inscrit le : Mer 03 Déc 2014, 14:13
Posté le : Dim 12 Avr 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
---------------------- futur analyste programmeur possesseur d'une TI 82 Plus toute neuve
Autorisation : Membre
Nb de messages : 132
Inscrit le : Mer 03 Déc 2014, 14:13
Posté le : Dim 12 Avr 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
---------------------- futur analyste programmeur possesseur d'une TI 82 Plus toute neuve
Autorisation : Membre
Nb de messages : 369
Inscrit le : Dim 13 Fév 2011, 14:17
Posté le : Dim 12 Avr 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?
Autorisation : Membre
Nb de messages : 856
Inscrit le : Mer 18 Juil 2012, 18:44
Posté le : Dim 12 Avr 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
Autorisation : Membre
Nb de messages : 132
Inscrit le : Mer 03 Déc 2014, 14:13
Posté le : Lun 13 Avr 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?
---------------------- futur analyste programmeur possesseur d'une TI 82 Plus toute neuve
Autorisation : Membre
Nb de messages : 373
Inscrit le : Jeu 23 Sep 2010, 16:05
Posté le : Lun 13 Avr 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
Autorisation : Membre
Nb de messages : 504
Inscrit le : Ven 07 Déc 2012, 20:09
Posté le : Mar 14 Avr 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
Autorisation : Membre
Nb de messages : 369
Inscrit le : Dim 13 Fév 2011, 14:17
Posté le : Mer 15 Avr 2015, 2: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
Autorisation : Membre
Nb de messages : 504
Inscrit le : Ven 07 Déc 2012, 20:09
Posté le : Mer 15 Avr 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 :
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