Bonjour,
Voila le problème peut sembler être simple à résoudre, mais il n'en est rien. Je suis censé faire un Black Jack comme projet de fin d’année (malgré le confinement) et donc viens le moment fatidique où je m'attaque à L'IA du croupier. Comme vous le savez (ou pas) au BJ le croupier est censé tiré jusqu’à que la somme des valeurs des cartes de sa main soit égale ou supérieure à 16.
Vous l'aurez deviné, c'est là ou est le problème, le croupier ne sait pas faire de somme. Terrible me diriez vous ! Puisque en soit, c'est moi qu'il lui donne des instructions. En effet mais je ne comprend pas où est le problème
Et là, c'est le drame ! Vous avez vu la dernière ligne de la boucle je lui demande d'afficher ce qu'il compte, et c'est bien la le problème ! Effectivement, le croupier affiche toujours 7 en premier, peut importe la valeur de sa première carte, et ensuite 45 et donc il devrait en toute logique sortir de cette boucle, mais il n'en est rien puisque le memo affiche de nouveau 7 puis 45 puis 7...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 While (SommeC<16) Do //Le croupier dois tirer jusqu'a qu'il ait 16 minimum BEGIN A:=Nombre2CarteC; //J'enregistre son nombre de carte pour qu'une fois qu'il tire une carte (il y a une condition pour tirer une carte : voir si elle a pas été tiré auparavant) While (A=Nombre2CarteC) DO BEGIN X:=Random(52)+1; //Tirage aléatoire dans le paquet VerificationC(X); //Fonction qui permet de vérifier si la carte n'a pas déjà été tiré + L'affiche sur le canvas end; //Ne fonctionne visiblement pas pck ce con tire 7 fois a la suite SommeC:=0; //Je remet la valeur de la somme de ses cartes a 0 pour refaire le compte For I:=1 to 7 DO //Il recalcule la somme BEGIN SommeC:=MainC[I]+SommeC; //Le formule est bonne je suppose vu qu'elle à toujours fonctionné Memo1.lines.append(inttostr(SommeC)); //Je lui demande d'écrire à chaque carte, le calcul de la somme de ses mains pour voir comment il compte end; end;
Une boucle infini que je ne comprend pas. Ensuite je suis partit voir si il y avait des problème dans la fonction qui est appelé VerificationC(), mais bon elle fonctionne bien pour l'autre IA qui joue en tant que joueur et elles sont sensiblement identique mais je vous les mets là on sait jamais :
Si vous savez comment régler mon petit problème je suis preneur. Et au passage je suis désolé pour toutes les fautes d'orthographe que j'ai pu faire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92 procedure TForm3.VerificationC(A2 : integer); //Verification de si il peut tirer la carte + appeler la fonction qui dessine + notes de ce que l'IA tire BEGIN if (TableauVerification[A2]=false) then BEGIN distribCroupier(Nombre2CarteC,A2); //L'IA considère l'AS comme un 1 pour que le comptage soit plus facile MainC[Nombre2CarteC]:=TableauValeur[A2]; Nombre2CarteC:=Nombre2CarteC+1; TableauVerification[A2]:=true; Memo1.Lines.append('Le croupier a tiré un ' + inttostr(TableauValeur[A2])); Memo1.Lines.append(''); end; end; procedure TForm3.VerificationI(A3 : integer); //Verification de si il peut tirer la carte + appeler la fonction qui dessine + notes de ce que le croupier tire BEGIN if (TableauVerification[A3]=false) then //L'AS n'est pas encore fais (soit 1 soit 11) BEGIN distribIA(Nombre2CarteIA,A3); MainI[Nombre2CarteIA]:=TableauValeur[A3]; Nombre2CarteIA:=Nombre2CarteIA+1; TableauVerification[A3]:=true; Memo1.Lines.append('L''IA a tiré un ' + inttostr(TableauValeur[A3])); Memo1.Lines.append(''); end; end; //Je vous met aussi la fonction qui dessine procedure TForm3.distribIA(X1,Y1 : integer); //Fonction pour dessiner les cartes de l'IA BEGIN if (X1=1) then BEGIN image9.Picture.LoadFromFile(TableauImage[Y1]); end; if (X1=2) then BEGIN image10.Picture.LoadFromFile(TableauImage[Y1]); end; if (X1=3) then BEGIN image11.Picture.LoadFromFile(TableauImage[Y1]); end; if (X1=4) then BEGIN image12.Picture.LoadFromFile(TableauImage[Y1]); end; if (X1=5) then BEGIN image13.Picture.LoadFromFile(TableauImage[Y1]); end; if (X1=6) then BEGIN image14.Picture.LoadFromFile(TableauImage[Y1]); end; if (X1=7) then BEGIN image15.Picture.LoadFromFile(TableauImage[Y1]); end; end; procedure TForm3.distribCroupier(X1,Y1 : integer); //Fonction pour dessiner les cartes du croupier BEGIN if (X1=1) then BEGIN image16.Picture.LoadFromFile(TableauImage[Y1]); end; if (X1=2) then BEGIN image17.Picture.LoadFromFile(TableauImage[Y1]); end; if (X1=3) then BEGIN image18.Picture.LoadFromFile(TableauImage[Y1]); end; if (X1=4) then BEGIN image19.Picture.LoadFromFile(TableauImage[Y1]); end; if (X1=5) then BEGIN image20.Picture.LoadFromFile(TableauImage[Y1]); end; if (X1=6) then BEGIN image21.Picture.LoadFromFile(TableauImage[Y1]); end; if (X1=7) then BEGIN image22.Picture.LoadFromFile(TableauImage[Y1]); end; end;
PS : Voici le tableau des valeurs qui correspond bien aux valeurs des cartes. Je l'ai mit dans TFormCreate. C'est le lien des images qui est ajouté en plus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 TableauImage[1]:='Images\1.png';TableauValeur[1]:=1; //Comme j'ai mit coupé les cartes moi meme sur un logiciel (j'ai pris une image ou il y avait toutes les cartes de meme dimensions) j'ai mit les AS de 1 à 4 les 2 de 5 a 8... TableauImage[2]:='Images\2.png';TableauValeur[2]:=1; TableauImage[3]:='Images\3.png';TableauValeur[3]:=1; TableauImage[4]:='Images\4.png';TableauValeur[4]:=1; TableauImage[5]:='Images\5.png';TableauValeur[5]:=2; TableauImage[6]:='Images\6.png';TableauValeur[6]:=2; TableauImage[7]:='Images\7.png';TableauValeur[7]:=2; TableauImage[8]:='Images\8.png';TableauValeur[8]:=2; TableauImage[9]:='Images\9.png';TableauValeur[9]:=3; TableauImage[10]:='Images\10.png';TableauValeur[10]:=3; TableauImage[11]:='Images\11.png';TableauValeur[11]:=3; TableauImage[12]:='Images\12.png';TableauValeur[12]:=3; TableauImage[13]:='Images\13.png';TableauValeur[13]:=4; TableauImage[14]:='Images\14.png';TableauValeur[14]:=4; TableauImage[15]:='Images\15.png';TableauValeur[15]:=4; TableauImage[16]:='Images\16.png';TableauValeur[16]:=4; TableauImage[17]:='Images\17.png';TableauValeur[17]:=5; TableauImage[18]:='Images\18.png';TableauValeur[18]:=5; TableauImage[19]:='Images\19.png';TableauValeur[19]:=5; TableauImage[20]:='Images\20.png';TableauValeur[20]:=5; TableauImage[21]:='Images\21.png';TableauValeur[21]:=6; TableauImage[22]:='Images\22.png';TableauValeur[22]:=6; TableauImage[23]:='Images\23.png';TableauValeur[23]:=6; TableauImage[24]:='Images\24.png';TableauValeur[24]:=6; TableauImage[25]:='Images\25.png';TableauValeur[25]:=7; TableauImage[26]:='Images\26.png';TableauValeur[26]:=7; TableauImage[27]:='Images\27.png';TableauValeur[27]:=7; TableauImage[28]:='Images\28.png';TableauValeur[28]:=7; TableauImage[29]:='Images\29.png';TableauValeur[29]:=8; TableauImage[30]:='Images\30.png';TableauValeur[30]:=8; TableauImage[31]:='Images\31.png';TableauValeur[31]:=8; TableauImage[32]:='Images\32.png';TableauValeur[32]:=8; TableauImage[33]:='Images\33.png';TableauValeur[33]:=9; TableauImage[34]:='Images\34.png';TableauValeur[34]:=9; TableauImage[35]:='Images\35.png';TableauValeur[35]:=9; TableauImage[36]:='Images\36.png';TableauValeur[36]:=9; TableauImage[37]:='Images\37.png';TableauValeur[37]:=10; TableauImage[38]:='Images\38.png';TableauValeur[38]:=10; TableauImage[39]:='Images\39.png';TableauValeur[39]:=10; TableauImage[40]:='Images\40.png';TableauValeur[40]:=10; TableauImage[41]:='Images\41.png';TableauValeur[41]:=11; TableauImage[42]:='Images\42.png';TableauValeur[42]:=11; TableauImage[43]:='Images\43.png';TableauValeur[43]:=11; TableauImage[44]:='Images\44.png';TableauValeur[44]:=11; TableauImage[45]:='Images\45.png';TableauValeur[45]:=11; TableauImage[46]:='Images\46.png';TableauValeur[46]:=11; TableauImage[47]:='Images\47.png';TableauValeur[47]:=11; TableauImage[48]:='Images\48.png';TableauValeur[48]:=11; TableauImage[49]:='Images\49.png';TableauValeur[49]:=11; TableauImage[50]:='Images\50.png';TableauValeur[50]:=11; TableauImage[51]:='Images\51.png';TableauValeur[51]:=11; TableauImage[52]:='Images\52.png';TableauValeur[52]:=11;
Partager