Я пытаюсь создать текстовую ориентированную карточную игру. Два игрока рисуют карту каждый из колоды карт, и игрок с самой сильной картой выигрывает. У меня есть четыре класса для этой игры: Card, Deck, Player, Game. Мой вопрос: как я могу сравнить каждую карту игроков друг с другом и определить самую сильную. Все другие предложения по поводу кода приветствуются. С наилучшими пожеланиями, HWG.Как сравнить значения двух игральных карт, когда они имеют значение и костюм? Python3
Вот мой код:
Card
class Card():
values = [None, None, 2, 3, 4, 5, 6, 7, 8, 9, 10, "Jack", "Queen", "King",
"Ace"]
suits = ["hearts", "spades", "diamond", "clubs"]
def __init__(self, value, suit):
self.value = value
self.suit = suit
def __repr__(self):
return str(self.values[self.value]) + " of " + str(self.suits[self.suit])
Deck
from random import shuffle
from card import Card
class Deck():
def __init__(self):
self.cards = []
for v in range(2, 15):
for s in range(4):
self.cards.append(Card(v, s))
shuffle(self.cards)
Игрок
from deck import Deck
class Player():
def __init__(self, name):
self.name = name
self.card = None
self.wins = 0
игры
from player import Player
from deck import Deck
import getch
class Game():
def __init__(self):
player1_name = input("Player One Name: ")
player2_name = input("Player Two Name: ")
self.deck = Deck()
self.player1 = Player(player1_name)
self.player2 = Player(player2_name)
self.cards = self.deck.cards
def game_loop(self):
while len(self.cards) >= 2:
print("\nPress enter to draw")
getch.getch()
player1_card = self.cards.pop()
player2_card = self.cards.pop()
Я думаю, вы должны тщательно рассмотреть ваши представления - значения представляют собой смесь «int» и «str» и подходят только «str» ... И фактически, сами фактические экземпляры имеют атрибуты, которые являются «ints», которые соответствуют индексам на уровне класса «Карта» переменные. Вы видите какие-то проблемы? Это своего рода канонический случай использования для 'enum' –
Могу ли я каким-либо образом использовать индексы стоимости и костюма в списках (значения и костюмы) для сравнения двух карт? – HWG
Да, конечно. Кажется грязным для меня. Я бы определенно использовал 'enum's. Ваш код будет намного читабельнее и красив и аккуратен. Но, конечно, вы можете использовать индексы. –