Forum

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

Black jack

Fryke le 21/12/2012 à 15:23
bonjour à tous aujourd'hui je vous présente mon premier programme sur ce site j'ai travaillé quelques heures dessus et celui ci n'est pas 100% terminé mais il est déjà bien avancé et complètement jouable maintenant le code
programmé sur Ti82

Code

ClrHome
If V=0
Then
int(rand*100+1->V              Je sais pas si je peux le mettre sur le if
End
Disp "MONEY",V
Input "MISE=",T
If T>V:V->T
End
V-T->V
4->A
Lbl 2
int(rand*10+1)->E
If A=4:E->B
End
If A=3:E->F
End
If A=2:E->G
End
If A=1:E->H
End
If A>0:A-1->A
Goto 2
Else
End
G+H->I
F+B->J
Disp H,G
Disp "PTS:",I
Pause
Lbl 0(celui au dessus du 3 avec alpha)
If I<21
Then
Pause
Menu("CARTE","OUI",1,"NON",4
End
Lbl 1
If I<ou=21
int(rand*10+1)->L
I+L->I
Disp L,I
Goto 0(celui au dessus du 3 avec alpha)
End
Lbl 4
ClrHome
End
If I>21
Then
Disp "PERDU"
Disp "CROUPIER",J
Disp "VOUS",I
End
Lbl 3
If J<ou=17 (vous pouvez modifier cette valeur comme bon vous semble)
Then
J+int(rand*10+1)->J
Goto 3
Else
End
If J>21 and I<ou=21
Then
Disp "GAGNE"
Disp "CROUPIER",J
Disp "VOUS",I
V+T*2->V
End
If J>I and J<ou=21
Then
Disp "PERDU"
Disp "CROUPIER:",J
Disp "VOUS:",I
End
If I>J and I<22
Then
Disp "GAGNE"
Disp "CROUPIER",J
Disp "VOUS:",I
V+T*2->V
End
If J=I or J>21 and I>21
Then
Disp "EGALITE:",J(ou I)
V+T/2->V
End
If I=21:P+1->P:V+T/2->V
End
Disp "NBRE 21",P
Disp "MONEY=",V
Pause
ClrHome
Output(1,1,"

Je sais parfaitement qu'il est nettement améliorable mais je touche pas à cette partie
Maintenant une partie de code additionnel pour embellir ce programme à mettre entre le Lbl1 et le ClrHome ou avant en faite cela met égale
(à noter que cette partie rajoute beaucoup d'octects)
Code

Output(1,1,"----------------
Output(2,1,"               
Output(3,1,"00  0   0  0  0
Output(4,1,"0 0 0  0 0 0 0 
Output(5,1,"00  0  0 0 00   
Output(6,1,"0 0 0  000 0 0 
Output(7,1,"00  00 0 0 0  0
Output(8,1,"----------------
Pause
Output(1,1,"----------------
Output(2,1,"               
Output(3,1,"000 0   000 0  0
Output(4,1," 0 0 0 0    0 0
Output(5,1," 0 0 0 0    00
Output(6,1," 0 000 0    0 0
Output(7,1,"00 0 0  000 0  0
Output(8,1,"----------------
Pause
Output(1,1,"00   00    00
Output(2,1,"00   00   000
Output(3,1,"00   00  0000
Output(4,1,"00   00    00
Output(5,1," 00 00     00
Output(6,1," 00 00     00
Output(7,1,"  000    000000
Output(8,1,"   0     000000
Pause
The K le 21/12/2012 à 17:00
Si c'est un premier programme c'est déja très bien happy.gif
(même si j'peux pas vraiment vérifier à 100% je connais pas les règles du blackjack ...)

Juste un détail a reproduire le moins possible :

Code
If A>0
Then
A-1->A
Goto 2
End


Les Goto a l'intérieur de boucles, ça c'est mauvais (à moins que ce soit voulu mais ... bon faut avoir un sacré niveau en progra basic pour ça !).

Pourquoi ?
En fait ton goto t'amène a un autre endroit du programme.
Et le End juste après n'est pas bouclé.
Cela n'est pas super gênant à priori mais dans els programmes ou on a des boucles qui s'emboîtent et se répètent cela commence à faire beaucoup de boucles pas bouclées, ce qui a pour effet un ralentissement peu agréable du programme winkle.gif

En général, on évite au maximum les divers labels/ goto ^^
Fryke le 21/12/2012 à 17:30
le goto 2 sert à ramener le programme à la distribution de carte car une seule carte à été donné à se moment si je le met après je crois qu'il y aura une distribution de carte infini
et au passage je suis en seconde et je programme depuis une semaine et j'attaque mon troisième jeu : loto
snap le 21/12/2012 à 17:55
Après un if, il est possible d'enlever le then...end si il n'y a qu'une instruction.

Code
If A=4
Then
E->B
End


Devient donc

Code
If A=4
E -> B


Ensuite, tu peux remplacer

Code
int(rand*10+1)->N
J+N->J


par

Code
J+ int(rand*10+1 -> N


Tout simplement.

Tu peux aussi dire a ta calto d'afficher un message ou une valeur comme un disp avant une pause.

Code
Disp "NBRE 21",P
Pause


Devient donc :

Code
Disp "NBR 21
Pause P


Ces petites améliorations reviennent plusieurs fois dans ton programme, donc plein d'octets en moins bigmouth.gif
The K le 22/12/2012 à 10:39
Citation
le goto 2 sert à ramener le programme à la distribution de carte car une seule carte à été donné à se moment si je le met après je crois qu'il y aura une distribution de carte infini


Eh bien tu peux essayer d'arranger toute la boucle label/goto 2 avec un while ou un repeat winkle.gif
Fryke le 15/01/2013 à 20:51
j'ai ajouté un système de mise d'argent comme dans les casinos. j'éditerais le code demain. ce soir dodo et révisions
Cytropus le 18/01/2013 à 17:05
Un petit conseil soit dis en passant,
Je te conseil d'utiliser les liste pour stocker ton argent, une variable simple pouvant être modifier par un autre programme.

il suffit de rajouter
Code
1->dim(lSOUS                      <//-par exemple

au début du code pour créer la liste si elle ne l'est pas,
et de remplacer tout les v par lSOUS(1)


Bonne continuation à tous glasses.gif
Fryke le 18/01/2013 à 19:25
ça c'est vous qui voyez de base l'argent pour moi devrait être mis à 0 à chaque début de parti(avec un système de replay pour pas toujours recommencer à 0