Я делаю колоду карт для игры, которую я создал, и сталкиваюсь с проблемой переименования моих лицевых карт. Все карты со значениями 11-14 я хочу сохранить их значение в коде, но показывать пользователю как валет, дама, король и туз (соответственно). Использование функций str()
и int()
не работает. Использование print().format
не работает. И использование словаря класса соответствия не работает. Я не могу заставить отображение работать.
Вместо этого, когда я создаю свою перетасованную колоду, я получаю свою полную колоду плюс 4 дополнительные лицевые карты (4 валета, 4 дамы, 4 короля, 4 туза), которые не прошли через random.shuffle()
, хотя я подозреваю, что это потому, что они не прошли через селф.карты.
Вот соответствующий код:
import random
class Card(object):
def __init__(self, value, suit):
self.value = value
self.suit = suit
def show(self):
print('{} of {}'.format(self.value, self.suit))
class Deck(object):
def __init__(self):
self.cards = []
self.build()
def build(self):
for s in ["Joker"]:
for v in range(1, 3):
self.cards.append(Card(v, s))
for s in ["Spades", "Clubs", "Diamonds", "Hearts"]:
for v in range(2, 15):
if v is 11:
print('{} of {}'.format("Jack", s))
if v is 12:
print('{} of {}'.format("Queen", s))
if v is 13:
print('{} of {}'.format("King", s))
if v is 14:
print('{} of {}'.format("Ace", s))
self.cards.append(Card(v, s))
def show(self):
for c in self.cards:
c.show()
def shuffle(self):
for i in range(len(self.cards)-1, 0, -1):
random.shuffle(self.cards)
def draw(self):
return self.cards.pop()