Boucle while et exclusion
akethejc
Messages postés
1
Statut
Membre
-
eriiic Messages postés 25847 Statut Contributeur -
eriiic Messages postés 25847 Statut Contributeur -
Bonjour,
Veuillez m'excuser si je ne suis pas un crack mais je débute tout juste et je me suis mis à programmer un petit jeu de carte. J'ai un petit souci au niveau de l'exclusion des cartes qui sortent. Pour que ce soit plus clair, j'aimerais qu'il tire des cartes tant que le couple de valeur (hauteur et couleur de la carte tirée) est équivalent à un couple de valeur déjà tiré.
Pour cela j'ai donc créé 2 valeur par carte et ça ressemble à ca (avec a,b,f,g cartes déjà tirées; d,h pour la carte à ce tour ci; c pour l'incrémentation) :
Randomize()
If c = 2 Then
d = CInt(Rnd() * 12) + 1
h = CInt(Rnd() * 3) + 1
If ((((d = a) = True) And ((h = b) = True)) = True) Or ((((d = f) = True) And ((h = g) = True)) = True) Then
Do While ((((d = a) = True) And ((h = b) = True)) = True) Or ((((d = f) = True) And ((h = g) = True)) = True)
If ((((d = a) = True) And ((h = b) = True)) = True) Or ((((d = f) = True) And ((h = g) = True)) = True) Then
Randomize()
d = CInt(Rnd() * 12) + 1
h = CInt(Rnd() * 3) + 1
End If
Loop
End If
Label9.Text = d
If h = 1 Then
Label10.Text = "coeur"
End If
If h = 2 Then
Label10.Text = "trefle"
End If
If h = 3 Then
Label10.Text = "pique"
End If
If h = 4 Then
Label10.Text = "carreau"
End If
End If
Merci d'avance et encore désolé de faire si compliqué lol.
Veuillez m'excuser si je ne suis pas un crack mais je débute tout juste et je me suis mis à programmer un petit jeu de carte. J'ai un petit souci au niveau de l'exclusion des cartes qui sortent. Pour que ce soit plus clair, j'aimerais qu'il tire des cartes tant que le couple de valeur (hauteur et couleur de la carte tirée) est équivalent à un couple de valeur déjà tiré.
Pour cela j'ai donc créé 2 valeur par carte et ça ressemble à ca (avec a,b,f,g cartes déjà tirées; d,h pour la carte à ce tour ci; c pour l'incrémentation) :
Randomize()
If c = 2 Then
d = CInt(Rnd() * 12) + 1
h = CInt(Rnd() * 3) + 1
If ((((d = a) = True) And ((h = b) = True)) = True) Or ((((d = f) = True) And ((h = g) = True)) = True) Then
Do While ((((d = a) = True) And ((h = b) = True)) = True) Or ((((d = f) = True) And ((h = g) = True)) = True)
If ((((d = a) = True) And ((h = b) = True)) = True) Or ((((d = f) = True) And ((h = g) = True)) = True) Then
Randomize()
d = CInt(Rnd() * 12) + 1
h = CInt(Rnd() * 3) + 1
End If
Loop
End If
Label9.Text = d
If h = 1 Then
Label10.Text = "coeur"
End If
If h = 2 Then
Label10.Text = "trefle"
End If
If h = 3 Then
Label10.Text = "pique"
End If
If h = 4 Then
Label10.Text = "carreau"
End If
End If
Merci d'avance et encore désolé de faire si compliqué lol.
A voir également:
- Boucle while et exclusion
- Smart tv qui s'allume et s'éteint en boucle - Forum Téléviseurs
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
- Tv orange chargement en boucle ✓ - Forum TV & Vidéo
- Pc qui s'allume et s'éteint en boucle - Forum Virus
- Huawei s'allume et s'éteint en boucle - Forum Huawei
2 réponses
Bonjour,
Tu devrais décrire un peu mieux le déroulement de ton jeu, j'y comprend rien.
Mais déjà, rectification du code
Pour faire les comparaisons que tu fais y a beaucoup plus simple...
A+
Tu devrais décrire un peu mieux le déroulement de ton jeu, j'y comprend rien.
Mais déjà, rectification du code
Pour faire les comparaisons que tu fais y a beaucoup plus simple...
' If ((((d = a) = True) And ((h = b) = True)) = True) Or ((((d = f) = True) And ((h = g) = True)) = True) Then
'est équivalent à..
If (d = a And h = b) Or (d = c And h = d) Then
A+
Bonjour,
désolé de faire si compliqué
effectivement...
Tu devrais t'y prendre autrement.
Mettre tes cartes (0 à 51) dans un tableau que tu mélanges en bouclant sur toutes les cartes. A chaque boucle tu permutes la carte avec une au hasard.
Tu n'as plus qu'à les prendre dans l'ordre du tableau. La 1ère, la seconde,...
Pour avoir la couleur (de 1 à 4) : int((n°carte)/13)+1
pour avoir la carte dans la couleur (de 1 à 13) : (A1 mod 13)+1
eric
désolé de faire si compliqué
effectivement...
Tu devrais t'y prendre autrement.
Mettre tes cartes (0 à 51) dans un tableau que tu mélanges en bouclant sur toutes les cartes. A chaque boucle tu permutes la carte avec une au hasard.
Tu n'as plus qu'à les prendre dans l'ordre du tableau. La 1ère, la seconde,...
Pour avoir la couleur (de 1 à 4) : int((n°carte)/13)+1
pour avoir la carte dans la couleur (de 1 à 13) : (A1 mod 13)+1
eric