Si vous connaissez pas le tarot, allez sur wikipedia
Bon GOG Galaxy met 20 ans à synchroniser mes sauvegardes après que j'aie fait des trucs chelous sur mon ordi donc je rééxplique
Il y a 4 couleurs, cœurs,trèfles,carreaux,piques (hearts,clubs,diamonds,spades). Chacune a les cartes de 1 à 10, ainsi que les figures (faces) valet,cavalier,reine,roi (jack,knight,queen,king).
En plus de ça il y a les atouts (trumps) de 1 à 21, plus l'excuse qu'on va compter comme l'atout 0.
Bref, ordonner ses cartes d'abord par couleur, et les ordonner de manière croissante à l'intérieur des couleurs est pratique mais ça revient à un tri lexicographique comme disait Bisam hier (donc 0 défi) et ça donne des indications à vos adversaires sur les cartes qu'il vous reste.
Le tri que je propose est
- regrouper par couleur, en triant les couleurs dans l'ordre cœurs, trèfles, carreaux, piques, atouts (ordre arbitraire pour standardiser et valider )
- à l'intérieur des couleurs trier les suites dans l'ordre croissant (c'est à dire que la suite 1,2,3,4 est à mettre avant la suite 7,8,9)
- à l'intérieur des suites, trier de manière décroissante (c'est à dire en fait pas 1,2,3,4 mais 4,3,2,1, donc pas 1,2,3,4,7,8,9 mais 4,3,2,1,9,8,7)
- sauf les figures qu'on met toujours dans l'ordre croissant, et sauf excuse et 1 d'atout qu'on met toujours au début des atouts (dans cet ordre) et le 21 à la fin
Exemples rapides :
♥️5 ♥️4 ♥️9 ♥️8 ♠️1 ♠️3 ♠️5
♥️2 ♥️4 ♥️8 ♠️1 ♠️3 ♠️5 (il n'y a pas de suites)
Base de code python.
- Code: Select all
from enum import Enum, IntEnum, auto
import random
class Faces(IntEnum):
Jack = 11
Knight = auto()
Queen = auto()
King = auto()
class Colors(Enum):
hearts = auto()
clubs = auto()
diamonds = auto()
spades = auto()
trump = auto()
class Card:
def __init__(self, color, value):
self.color = color
self.value = value
def __lt__(self, other):
if self.color != other.color:
return self.color < other.color
return self.value < other.value
def deckAsString(deck):
return '\n'.join([f'{c.color.name}-{c.value.name if isinstance(c.value, Faces) else c.value}' for c in deck])
def printDeck(deck):
print(deckAsString(deck))
# generate the whole deck
fulldeck = []
for color in Colors:
if color is Colors.trump:
# generate from 0 to 21 (0 being excuse)
for i in range(22): fulldeck.append(Card(color, i))
else:
# generate from 1 to 10 and the 4 faces
for i in range(10): fulldeck.append(Card(color, i+1))
for face in Faces: fulldeck.append(Card(color, face))
#printDeck(fulldeck)
# pick 24
deck = [c for c in fulldeck]
random.shuffle(deck)
while len(deck) != 24:
deck.pop()
printDeck(deck)