Classe Trump en Python (avec comparaison)

Influencé par ce post http://qiita.com/jay/items/ee5bd3bbabb0d57f294d

Trump.py


import random


class Trump:
    """ Trump Card class
    """

    MARK_SPADE = 'S'
    MARK_CLUB = 'C'
    MARK_DIA = 'D'
    MARK_HEART = 'H'

    MARK_LIST = [MARK_SPADE, MARK_CLUB, MARK_DIA, MARK_HEART]
    EFUDA_LIST = ['A'] + list(map(str, range(2, 11))) + ['J', 'Q', 'K', 'A']

    card_stacks = []

    def __init__(self, mark=None, num=None):
        self.mark = mark if mark is not None else random.choice(Trump.MARK_LIST)
        self.num = num if num is not None else random.randrange(1, 13)

    def get_efuda(self):
        return Trump.EFUDA_LIST[self.num]

    def stack_init():
        Trump.card_stacks = [Trump(mark=m, num=n + 1) for m in Trump.MARK_LIST for n in range(13)]
        random.shuffle(Trump.card_stacks)

    def stack_draw(num=1):
        cards = Trump.card_stacks[0:num]
        Trump.card_stacks = Trump.card_stacks[num:]
        return cards

    def __str__(self):
        return "<Trump: %s-%s>" % (self.mark, self.get_efuda())

    def __repr__(self):
        return self.__str__()


class IndianTrump(Trump):

    #Il devient plus fort dans l'ordre du club <dia <coeur <pique.
    MARK_RANK = {Trump.MARK_SPADE: 4, Trump.MARK_CLUB: 1, Trump.MARK_DIA: 2, Trump.MARK_HEART: 3}

    def __lt__(self, other):
        if self.mark is not other.mark:
            return IndianTrump.MARK_RANK[self.mark] < IndianTrump.MARK_RANK[other.mark]
        return (self.num - 1) % 13 < (other.num - 1) % 13

    def stack_init():
        IndianTrump.card_stacks = [IndianTrump(mark=m, num=n + 1) for m in IndianTrump.MARK_LIST for n in range(13)]
        random.shuffle(IndianTrump.card_stacks)

    def stack_draw(num=1):
        cards = IndianTrump.card_stacks[0:num]
        IndianTrump.card_stacks = IndianTrump.card_stacks[num:]
        return cards


    def __str__(self):
        return "<IndianTrump: %s-%s>" % (self.mark, self.get_efuda())


if __name__ == '__main__':
    print("--- Trump Draw ---")
    Trump.stack_init()
#Piochez 5 cartes au hasard
    cards = Trump.stack_draw(5)
    print(cards)
    print(len(cards))
#Piochez toutes les cartes restantes
    cards = Trump.stack_draw(52)
    print(cards)
    print(len(cards))
#La carte est vide
    cards = Trump.stack_draw()
    print(cards)
    print(len(cards))
#Réinitialiser la pile
    Trump.stack_init()
#Piochez une carte
    cards = Trump.stack_draw()
    print(cards)
    print(len(cards))

    print("--- Indian Porker ---")
    IndianTrump.stack_init()
    for i in range(8):
        card_a, card_b = IndianTrump.stack_draw(2)
        print("CardA: " + str(card_a), "CardB: " + str(card_b))
        print("CardA %s CardB" % (">" if (card_a > card_b) else "<"), "\n")

Recommended Posts

Classe Trump en Python (avec comparaison)
classe de cas en python
Notation de classe en Python
Grattage au sélénium en Python
Exploitez LibreOffice avec Python
Grattage avec chromedriver en python
Débogage avec pdb en Python
Comparaison d'objets nuls en Python
Jouer avec l'API d'intelligence artificielle locale de l'utilisateur en Python
Gérer les sons en Python
Grattage avec du sélénium en Python
Ecrire des caractères dans l'illustration de la carte avec OpenCV python
Grattage avec Tor en Python
Tweet avec image en Python
Combiné avec ordinal en Python
Erreur lors de la lecture avec python
Reconnaissance des nombres dans les images avec Python
Jouez des nombres manuscrits avec Python Partie 1
Tester avec des nombres aléatoires en Python
GOTO en Python avec Sublime Text 3
Travailler avec LibreOffice en Python: import
Les mines terrestres cachées dans les variables de classe Python
Scraping avec Selenium en Python (Basic)
Analyse CSS avec cssutils en Python
Numer0n avec des objets fabriqués avec Python
Ouvrez UTF-8 avec BOM en Python
Utiliser rospy avec virtualenv dans Python3
Utiliser Python mis en pyenv avec NeoVim
Heatmap avec dendrogramme en Python + matplotlib
Lire des fichiers en parallèle avec Python
Examiner la classe d'un objet avec python
Générer un mot de passe pour le manuel avec python
Utiliser OpenCV avec Python 3 dans Window
Jusqu'à traiter de python dans Atom
[Python] Hériter d'une classe avec des variables de classe
Démarrez avec Python avec Blender
Travailler avec des images DICOM en Python
Écrire de la documentation dans Sphinx avec Python Livereload
Générer une collection de première classe en Python
Obtenez des données supplémentaires vers LDAP avec python
Créer un décorateur de fonction Python avec Class
[Introduction à Python] Comment utiliser la classe en Python?
Essayez de vous connecter à qiita avec Python
Test de stress avec Locust écrit en Python
Python3> dans le mot clé> Vrai avec une correspondance partielle?
Contrôle exclusif avec fichier de verrouillage en Python
Implémenter __eq__ etc. de manière générique dans la classe Python
Comparaison des modules de conversion japonais en Python3
Conseils pour gérer les binaires en Python
Afficher Python 3 dans le navigateur avec MAMP
Gérer les "années et mois" en Python
Traiter plusieurs listes avec for en Python
Apprendre Python! Comparaison avec Java (fonction de base)
Remplacer non-ASCII par des expressions régulières en Python
Un serveur Web de ligne (avec CGI) en python
Commençons avec TopCoder en Python (version 2020)
Comment utiliser __slots__ dans la classe Python
Traitez facilement des images en Python avec Pillow