下記の戦争ゲームのCardクラス内における”c2”の引数の値はどこから来るのでしょうか?
考えてもピンと来なかったので解説をよろしくお願いいたします。
python3
from random import shuffle class Card: suits = ["spades", "hearts", "diamonds", "clubs"] values = [None, None,"2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King", "Ace"] def __init__(self, v, s): """suit + value are ints""" self.value = v self.suit = s def __lt__(self, **c2**): if self.value < c2.value: return True if self.value == c2.value: if self.suit < c2.suit: return True else: return False return False def __gt__(self, c2): if self.value > c2.value: return True if self.value == c2.value: if self.suit > c2.suit: return True else: return False return False def __repr__(self): v = self.values[self.value] +\ " of " + \ self.suits[self.suit] return v class Deck: def __init__(self): self.cards = [] for i in range(2, 15): for j in range(4): self.cards\ .append(Card(i, j)) shuffle(self.cards) def rm_card(self): if len(self.cards) == 0: return return self.cards.pop() class Player: def __init__(self, name): self.wins = 0 self.card = None self.name = name class Game: def __init__(self): name1 = input("p1 name ") name2 = input("p2 name ") self.deck = Deck() self.p1 = Player(name1) self.p2 = Player(name2) def wins(self, winner): w = "{} wins this round" w = w.format(winner) print(w) def draw(self, p1n, p1c, p2n, p2c): d = "{} drew {} {} drew {}" d = d.format(p1n, p1c, p2n, p2c) print(d) def play_game(self): cards = self.deck.cards print("beginning War!") while len(cards) >= 2: m = "q to quit. Any " + \ "key to play:" response = input(m) if response == 'q': break p1c = self.deck.rm_card() p2c = self.deck.rm_card() p1n = self.p1.name p2n = self.p2.name self.draw(p1n, p1c, p2n, p2c) if p1c > p2c: self.p1.wins += 1 self.wins(self.p1.name) else: self.p2.wins += 1 self.wins(self.p2.name) win = self.winner(self.p1, self.p2) print("War is over.{} wins" .format(win)) def winner(self, p1, p2): if p1.wins > p2.wins: return p1.name if p1.wins < p2.wins: return p2.name return "It was a tie!" game = Game() game.play_game()
** という記号は強調するために追加したものでしょうか?このままではSyntaxErrorになります。
実際の動作するコードを提示してください。
「考えてもピンと来なかった」とのことですが、調べてみたのでしょうか。
気になっている。 c2 という変数を含んでいる関数は、`__lt__`と`_gt__`という特殊なメソッド(関数) ですが、これらの意味を調べていますか。
matherさん
修正依頼ありがとうございます。修正させていただきました。
TkakaiYさん
ご指摘ありがとうございます。
特殊メソッドがかかわっているのだろうと思って1度調べたのですが。
お恥ずかしい話、つながりがよくわからないため他の要因かと思ったので質問させていただきました。
matherさんにご指摘していただいたので、現在再度理解をするために調べています。
まだ回答がついていません
会員登録して回答してみよう