Forum

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

Mon blackjack

kaiser38 le 29/11/2011 à 22:36
salut tous le monde voila comme le nom l'indique je vien de finir mon black jack donner moi vos avis dessus et armer vous de patiente et de courage pour le lire car il est loooong

:lbl C
:100=>S
:14=>N
:effecr
:ouput(5,4,"black jack!
:pause
:ouput(1,1,"fais ta fortune
:pause
:ouput(1,1,"...
:pause
:ouput(1,1,"ou ta ruine!
:pause
:effecr
:menu("menu","regles",A,"jeu",B
:lblA
:ouput(1,1,"le but du jeu est de faire un meilleur score que son adversaire sans toutefois dépasser 21 sinon cest une defaite immediate"
"on distribue 2 cartes (1er et 2nd chiffre) dont on calcule le total (3ème chiffre)"
:pause
:ouput(1,1,"vous pouvez alors rajouter jusqu'a 5 cartes (sachant que les chiffres sont les cartes dans l'ordre ou elles sont tiré et le dernier chiffre est le total
:pause
:effecr
:goto C
:lbl B
:int (rand*10+1)=>A
:int (rand*10+1)=>B
:A+B=>X
:disp A,B,X
:pause
:effecr
:menu("choix","miser",U,
:lbl U
:K=>U
:S-K=>S
:menu("choix","rajouter",2,"s’arrêter",1
:lbl 2
:int (rand*10+1)=>C
:X+C=>X
:disp A,B,C,X
:pause
:effecr
:if X>=21
:then
:goto 1
:end
:menu("choix","rajouter",3,"s'arreter",1
:lbl 3
:int (rand*10+1)=>D
:X+D=>X
:disp A,B,C,D,X
:pause
:effecr
:if X>=21
:then
:goto 1
:end
:menu("choix","rajouter",4,"s'arreter",1
:lbl 4
:int (rand*10+1)=>E
:X+E=>X
:disp A,B,C,D,E,X
:pause
:effecr
:goto 1
:lbl 1
:int (rand*10+1)=>A
:int (rand*10+1)=>B
:A+B=>Y
:disp A,B,Y
:pause
:effecr
:if Y>=N
:then
:goto E
:end
:int (rand*10+1)=>C
:Y+C=>Y
:effecr
:disp A,B,C,Y
:pause
:effecr
:if Y>=N
:then
:goto E
:end
:int (rand*10+1)=>D
:Y+D=>Y
:effecr
:disp A,B,C,D,Y
:pause
:effecr
:if Y>=N
:then
:goto E
:end
:int (rand*10+1)=>E
:Y+E=>Y
:effecr
:disp A,B,C,D,E,Y
:pause
:effecr
:lbl E
:if X>=22 ou :if X<=21 and Y<=21 and X<Y
:then
:disp "perdu
:S-K=>S
:disp "somme=
:disp S
:pause
:effecr
:end
:if X<=21 and Y>=22 ou :if X<=21 and Y<=21 and X>Y
:then
:disp "gagner
:S+K*2,5=>S
:disp "somme=
:disp S
:pause
:effecr
:end
:if x<=21 and Y<=21 and X=Y
:then
:disp "egalité
S=S
disp "somme=
:disp S
:pause
:effecr
:end
:if S=0
:then
:disp "somme=
:disp S
:pause
:effecr
:disp "tu est ruiné !!!
:goto C
:end
:if S=1000
:then
:ouput (1,1,"tu es milliardaire
:pause
:effecr
:18=>N
:end
:if S=3000
:then
:ouput (1,1,"stp sort du casino
:16=>N
:end
:goto B

voili voulou il est a moi et vous avez le droit dy jouer et de me donner vos avis surtout
Polymorph le 29/11/2011 à 22:47
Y jouer, je sais pas, parce qu'il est vraiment très long, et à recopier, ça prendrait beaucoup de temps... ^^

Déja, il me semble que tu dois avoir des erreurs syntaxe à cette ligne (elle y est deux fois vers la fin)

Code

:if X>=22 ou :if X<=21 and Y<=21 and X<Y

A cause des deux points après le "ou".

Néanmoins, deux trucs me chagrinent :
- Les probabilités ne sont pas respectées : Tu utilise des entiers entre 1 et 10 alors que tu devrais aller jusqu'à 13
- L'exception de l'as n'est pas gérée. (c'est normalement la partie la plus complexe du code)

Je te propose plusieurs trucs pour améliorer ton code, une fois que tu aura réglé tout ça:
- Remplacer les "Disp" Par des "Output", c'est plus long, mais ça rend mieux
- Effectuer un affichage graphique avec les cartes, ou les figures sont gérées
- Utiliser les listes pour simplifier le code (avec la fonction Somme( par exemple
- Enlever ces label de partout, on s'y retrouve plus !
kaiser38 le 30/11/2011 à 00:08
pour lerreur syntaxe desoler faute de copier coller et pour les autres chose du blackjack cest un tout autre niveau mais jy travaillerai
ensuite les proba et ten donner quil y a seulment 4 carte avec la mm valeur je voix pas ou on a un probleme
Polymorph le 30/11/2011 à 17:52
Ben y'a 4x plus de chance de tomber sur une carte à 10

Soit 4x1/13 = 4/13 = 0,22... 22%
Alors que toi tu a une chance sur 10, soit 0,1, soit 10%

C'est deux fois moins.
kaiser38 le 01/12/2011 à 05:35
mais il y a 4 rois 4 dames4 valet 4 10 etc ... donc on a autant de chance de tomber sur l'un que sur l'autre
Polymorph le 01/12/2011 à 11:50
Un jeu de cartes normal est composé de 52 cartes. Dans celles ci, on y retrouve 13 cartes, chacune en 4 exemplaire (une par couleur)

Ainsi, tu peux trouver quatre 2. La probabilité de tomber sur un 2 est donc de
4/52, soit 1/13=0.08=8%

Au blackJack, les cartes 10, J, Q, K peuvent compter pour 10 points.
On retrouve dans un jeu 4 exemplaire de chacune de ces 4 cartes.
La probabilité est donc de (4x4)/52 = 4/13 = 0.31 = 31%

Dans ton programme, cette partie du code est gérée par EntAléat(1,10)=>D
On a donc 10% de chance d'obtenir chacun des chiffres, entre 1 et 10, ce qui ne respecte pas les probabilités démontrées plus haut !

Pour respecter ces probabilités, il faudrait donc faire
Code
:EntAléat(1,13)=>D
:If D>10:10=>D

Qui est simplifiable par
Code
:EntAléat(1,13)=>D
:10(D>13)+(D=<10)D=>D


CQFD.
linkakro le 01/12/2011 à 17:03
Tu as oublié d'écrire 13 lors de ton copier/coller. (ça porte malheur ? godgrace.gif)
De plus :
Code
:min(10,EntAléat(1,13)=>D
Remplace avantageusement ton code bien que je ne voie pas l'intérêt de la manipulation.
Polymorph le 01/12/2011 à 22:37
Bien vu >.<
Le principe est simplement de garder les probabilités du vrai Black Jack, ce qui permettra aux puristes d'être bons à ce jeu ^^