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 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189
| Function Carte_valide(oNombre As String, oCouleur As String, oPlay As Byte) As Boolean
Dim i As Byte
'Si pas de carte encore appelée
If Carte_appelee.Couleur = "" Then
'On set la carte appelée
Carte_appelee.Nombre = oNombre
Carte_appelee.Couleur = oCouleur
'Et la carte max
Carte_max.Nombre = oNombre
Carte_max.Couleur = oCouleur
'Et le joueur maitre
Joueur_maitre = oPlay
'Si il y a une carte déjà appelée
Else
'Est-ce que la carte jouée est de la même couleur que la carte appelée ?
If oCouleur = Carte_appelee.Couleur Then
'Si oui, la carte appelée (ou jouée) est-elle de l'atout ?
If oAtout(1).Couleur = Carte_appelee.Couleur Then
'Si oui, est-elle supérieure ?
If Carte_superieure(oNombre, oCouleur, Carte_max.Nombre, Carte_max.Couleur) Then
'On set la nouvelle carte max
Carte_max.Nombre = oNombre
Carte_max.Couleur = oCouleur
'Et le nouveau joueur maitre
Joueur_maitre = oPlay
'sinon, vérifions que le joueur ne possède pas une carte supérieure dans son jeu
Else
For i = LBound(oJoueur, 2) To UBound(oJoueur, 2)
If Carte_superieure(oJoueur(oPlay, i).Nombre, oJoueur(oPlay, i).Couleur, Carte_max.Nombre, Carte_max.Couleur) Then
Carte_valide = False
Exit Function
End If
Next i
End If
'Si la carte appelée (ou jouée) n'est pas de l'atout
Else
'Si la carte jouée est supérieure
If Carte_superieure(oNombre, oCouleur, Carte_max.Nombre, Carte_max.Couleur) Then
'On set la nouvelle carte max
Carte_max.Nombre = oNombre
Carte_max.Couleur = oCouleur
'Et le nouveau joueur maitre
Joueur_maitre = oPlay
End If
End If
'Si la carte jouée n'est pas de la même couleur
Else
'On vérifie si je joueur n'a pas de la couleur appelée
For i = LBound(oJoueur, 2) To UBound(oJoueur, 2)
If oJoueur(oPlay, i).Couleur = Carte_appelee.Couleur Then
Carte_valide = False
Exit Function
End If
Next i
'S'il n'a pas de la couleur appelée on regarde si son partenaire est maitre
If Partenaire_maitre(oPlay) Then
'On vérifie si la carte posée est supérieure
If Carte_superieure(oNombre, oCouleur, Carte_max.Nombre, Carte_max.Couleur) Then
'On set la nouvelle carte max
Carte_max.Nombre = oNombre
Carte_max.Couleur = oCouleur
'Et le nouveau joueur maitre
Joueur_maitre = oPlay
End If
'Si le partenaire n'est pas maitre
Else
'Joue-t-il de l'atout ?
If oCouleur = oAtout(1).Couleur Then
'S'il joue de l'atout, il doit être supérieure à la carte max
If Carte_superieure(oNombre, oCouleur, Carte_max.Nombre, Carte_max.Couleur) Then
'On set la nouvelle carte max
Carte_max.Nombre = oNombre
Carte_max.Couleur = oCouleur
'Et le nouveau joueur maitre
Joueur_maitre = oPlay
'S'il n'est pas suppérieur à la carte max
Else
'On vérifie que le joueur n'a pas de plus grande carte d'atout
For i = LBound(oJoueur, 2) To UBound(oJoueur, 2)
If oJoueur(oPlay, i).Couleur = oAtout(1).Couleur Then
If Carte_superieure(oJoueur(oPlay, i).Nombre, oJoueur(oPlay, i).Couleur, Carte_max.Nombre, Carte_max.Couleur) Then
Carte_valide = False
Exit Function
End If
End If
Next i
End If
'S'il ne joue pas d'atout
Else
'A-t-il de l'atout ?
For i = LBound(oJoueur, 2) To UBound(oJoueur, 2)
If oJoueur(oPlay, i).Couleur = oAtout(1).Couleur Then
Carte_valide = False
Exit Function
End If
Next i
End If
End If
End If
End If
'Si on passe tous les "Exit Function", la carte est valide
Carte_valide = True
'Et on la supprime du jeu du joueur
For i = LBound(oJoueur, 2) To UBound(oJoueur, 2)
If oNombre = oJoueur(oPlay, i).Nombre And oCouleur = oJoueur(oPlay, i).Couleur Then
oJoueur(oPlay, i).Nombre = ""
oJoueur(oPlay, i).Couleur = ""
Exit For
End If
Next i
End Function
Function Carte_superieure(oNom_joue As String, oCoul_joue As String, oNom_comp As String, oCoul_comp As String) As Boolean
Dim i As Byte
''Si les arguments sont manquants, on les remplace avec la carte appelée (à faire disparaitre ?)
'If IsMissing(oCoul_comp) Or IsMissing(oNom_comp) Then
' oCoul_comp = Carte_appelee.Couleur
' oNom_comp = Carte_appelee.Nombre
'End If
'Si la couleur de la carte jouée est égale à la couleur de la carte comparée
If oCoul_joue = oCoul_comp Then
'On regarde si c'est de l'atout
If oAtout(1).Couleur = oCoul_joue Then
'Si c'est de l'atout, on regarde la table oAtout
For i = LBound(oAtout) To UBound(oAtout)
'En parcourant, tombe-t-on sur la carte jouée ?
If oNom_joue = oAtout(i).Nombre Then
Carte_superieure = True
Exit Function
'... ou la carte comparée ?
ElseIf oNom_comp = oAtout(i).Nombre Then
Carte_superieure = False
Exit Function
End If
Next i
Else
'Si c'est hors-atout, on regarde la table oNombres
For i = LBound(oNombres) To UBound(oNombres)
'En parcourant, tombe-t-on sur la carte jouée ?
If oNom_joue = oNombres(i) Then
Carte_superieure = True
Exit Function
'... ou la carte comparée ?
ElseIf oNom_comp = oNombres(i) Then
Carte_superieure = False
Exit Function
End If
Next i
End If
'Si la couleur de la carte jouée est différente de celle de la carte comparée
Else
'Est-ce que la carte comparée est de l'atout ?
If oCoul_comp = oAtout(1).Couleur Then
'Si oui, la carte comparée est supérieure
Carte_superieure = False
Exit Function
'Est-ce que la carte jouée est de l'atout ?
ElseIf oCoul_joue = oAtout(1).Couleur Then
'Si oui, la carte jouée est supérieure
Carte_superieure = True
Exit Function
'Est-ce que la couleur carte comparée est égale à celle de la couleur appelée ?
ElseIf oCoul_comp = Carte_appelee.Couleur Then
'Si oui, la carte comparée est supérieure
Carte_superieure = False
Exit Function
'Est-ce que la couleur carte jouée est égale à celle de la couleur appelée ?
ElseIf oCoul_joue = Carte_appelee.Couleur Then
'Si oui, la carte jouée est supérieure
Carte_superieure = True
Exit Function
Else
'On met "False" si les deux couleurs sont ni appelée ni de l'atout (il y aura forcément une autre carte plus forte)
Carte_superieure = False
End If
End If
End Function |
Partager