我正在做一个纸牌程序,它应该在Python shell而不是GUI中运行。但我不太确定如何编程卡,以便aRed Suit可以附加到aBlack Suit上,反之亦然。此外,要附加的卡的编号必须低于它之前的卡。
我想用于向行堆栈添加限制的程序可能类似于用于向西服堆栈添加限制的程序。如果不一样的话,你能给我点帮助吗?因为我几乎完成了这个项目,但我得增加一些规则。
我想知道怎么做,但似乎很复杂。

def check(card1,card2):
    valid = True
    cardSuit = Card1[1]
    cardVal  = card1[0]

    if cardSuit2 == cardSuit[1]:
        valid = False

    elif value(CardVal1) > value(cardVal2):
        valid = False

    elif valid == False:
       # print Error Message

    return valid

# Function to call above function
def call():
    ok = check(card1,card2)
    if ok = True:
        # proceed with code

def value(str):
              if val is (2,3,4,5,6,7,8,9,10):
              denon = int(val)
              elif val = 'J':
              denon = 11
              elif val = 'Q':
              denon = 12
              elif val = 'K':
              denon = 13

    return denon

谢谢。

最佳答案

这是一个可能性。这不是完全干净的数据,但可能会给你一个想法。不过,我想在你抄袭之前,你最好把这个例子理解得很好。如前所述,这与你最初的想法大不相同;)

CARD_VALUES=["2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"]
SUIT_COLOR={"clubs": "black", "spades":"black", "hearts":"red", "diamonds":"red"}


class Card:
    def __init__(self, value, suit):
        if value not in CARD_VALUES:
            raise Exception("Invalid card value {}".format(value))

        if suit not in SUIT_COLOR:
            raise Exception("Invalid suit {}".format(suit))

        self.value = value
        self.suit = suit

    def suit_color(self):
        return SUIT_COLOR[self.suit]

    def card_value(self):
        return CARD_VALUES.index(self.value)

    def __repr__(self):
        return "({} of {})".format(self.value, self.suit)


class Row:
    def __init__(self):
        self.cards=[]

    def valid_add_card(self, card):
        if not self.cards:
            return True # true for empty deck

        last_card=self.cards[-1]
        return last_card.card_value()==card.card_value()+1 and last_card.suit_color()!=card.suit_color()

    def add_card(self, card):
        if self.valid_add_card(card):
            self.cards.append(card)
        else:
            raise Exception("Cannot add card {} to {}".format(card, self.cards[-1]))

    def __repr__(self):
        return " - ".join(str(c) for c in self.cards)


r=Row()
r.add_card(Card("J", "spades"))
r.add_card(Card("10", "hearts"))
r.add_card(Card("9", "clubs"))
print(r)
print("Last card won't work:")
r.add_card(Card("8", "spades"))

07-26 00:44