Boucle while et exclusion

Fermé
akethejc Messages postés 1 Date d'inscription jeudi 22 novembre 2012 Statut Membre Dernière intervention 22 novembre 2012 - Modifié par akethejc le 22/11/2012 à 14:54
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 - 24 nov. 2012 à 13:31
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.

2 réponses

lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
23 nov. 2012 à 14:30
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...
       ' 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+

0
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
24 nov. 2012 à 13:31
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
0