私はテキストベースのオブジェクト指向のカードゲームを作ろうとしています。 2人のプレイヤーがそれぞれ1枚のカードから1枚のカードを引き、最も強いカードを持つプレーヤーが勝ちます。このゲームには4つのクラスがあります:カード、デッキ、プレイヤー、ゲーム。私の質問は:どのように私は各プレイヤーのカードを互いに比較し、最も強いカードを決定することができます。コードに関するその他の提案はすべて歓迎します。最高のHWGについて。2枚のトランプカードに値とスーツがある場合、それらの値を比較するにはどうすればよいですか? Python3
ここは私のコードです:
カード
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])
デッキ
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'だけで合う...そして、実際には、実際のインスタンス自体は' Card'クラスレベルのインデックスに対応する 'ints '属性を持っています変数。何か問題は見えますか?これは 'enum'の正式なユースケースです –
2つのカードを比較するために、リスト(値とスーツ)の値とスーツのインデックスを何らかの方法で使用できますか? – HWG
ええ、確かに。私は面倒です。間違いなく 'enum'を使用します。あなたのコードははるかに読みやすく、素敵できちんとしたものになります。しかし、確かに、指標を使うことができます。 –