Trump-Klasse in Python (mit Vergleich)

Beeinflusst von diesem Beitrag 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):

    #Es wird stärker in der Reihenfolge Club <dia <heart <spade.
    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()
#Ziehe 5 Karten nach dem Zufallsprinzip
    cards = Trump.stack_draw(5)
    print(cards)
    print(len(cards))
#Ziehe alle verbleibenden Karten
    cards = Trump.stack_draw(52)
    print(cards)
    print(len(cards))
#Die Karte ist leer
    cards = Trump.stack_draw()
    print(cards)
    print(len(cards))
#Stapel zurücksetzen
    Trump.stack_init()
#Ziehe eine Karte
    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

Trump-Klasse in Python (mit Vergleich)
Fallklasse in Python
Klassennotation in Python
Schaben mit Selen in Python
Betreiben Sie LibreOffice mit Python
Schaben mit Chromedriver in Python
Debuggen mit pdb in Python
Nullobjektvergleich in Python
Spielen mit der benutzerlokalen API für künstliche Intelligenz in Python
Umgang mit Sounds in Python
Scraping mit Selen in Python
Schreiben Sie mit OpenCV-Python Zeichen in die Kartenillustration
Scraping mit Tor in Python
Tweet mit Bild in Python
Kombiniert mit Ordnungszahl in Python
Fehler beim Spielen mit Python
Zahlenerkennung in Bildern mit Python
Spielen Sie handschriftliche Zahlen mit Python Part 1
Testen mit Zufallszahlen in Python
GOTO in Python mit erhabenem Text 3
Arbeiten mit LibreOffice in Python: Importieren
In Python-Klassenvariablen versteckte Landminen
Scraping mit Selen in Python (Basic)
CSS-Analyse mit cssutils in Python
Numer0n mit Elementen, die mit Python erstellt wurden
Öffnen Sie UTF-8 mit Stückliste in Python
Verwenden Sie rospy mit virtualenv in Python3
Verwenden Sie Python in pyenv mit NeoVim
Heatmap mit Dendrogramm in Python + Matplotlib
Lesen Sie Dateien parallel zu Python
Untersuchen Sie die Klasse eines Objekts mit Python
Passwort für Lehrbuch mit Python generieren
Verwenden Sie OpenCV mit Python 3 in Window
Bis zum Umgang mit Python in Atom
[Python] Erbt eine Klasse mit Klassenvariablen
Beginnen Sie mit Python mit Blender
Arbeiten mit DICOM-Bildern in Python
Generieren Sie eine erstklassige Sammlung in Python
Holen Sie sich mit Python zusätzliche Daten zu LDAP
Erstellen Sie mit Class einen Python-Funktionsdekorator
[Einführung in Python] Wie verwende ich eine Klasse in Python?
Versuchen Sie, sich mit Python bei qiita anzumelden
Stresstest mit Locust in Python geschrieben
Python3> im Schlüsselwort> Wahr mit teilweiser Übereinstimmung?
Exklusive Steuerung mit Sperrdatei in Python
Implementieren Sie __eq__ usw. generisch in der Python-Klasse
Vergleich japanischer Konvertierungsmodule in Python3
Tipps zum Umgang mit Binärdateien in Python
Zeigen Sie Python 3 im Browser mit MAMP an
Umgang mit "Jahren und Monaten" in Python
Verarbeiten Sie mehrere Listen mit for in Python
Python lernen! Vergleich mit Java (Grundfunktion)
Ersetzen Sie Nicht-ASCII durch reguläre Ausdrücke in Python
Einzeiler webServer (mit CGI) in Python
Beginnen wir mit TopCoder in Python (Version 2020)
Verwendung von __slots__ in der Python-Klasse
Verarbeiten Sie Bilder in Python ganz einfach mit Pillow