Python-知識を一つに-3

game,ゲーム
class Game: def __init__(self): name1 = input("プレーヤー1の名前") name2 = input("プレーヤー2の名前") self.deck = Dec() self.p1 = player(name1) self.p2 = player(name2) def wins(self, winner): w = "このラウンドは {} が勝ちました" w = w.format(winner) print(w) def draw(self, p1n, p1c, p2n, p2c): d = "{}は{},{}は{}を引きました" d = d.format(pln, p1c, pn2, p2c) print(d) def play_game(self): cards = self.deck.cards print("戦争を始めます!") while len(cards) >= 2: m = "qで終了、それ以外のキーで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.pl.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("ゲーム終了,{}の勝利です!".format(win)) def winner(self, p1, p2): if p1.wins >p2.wins: return p1.name if p1.wins < p2.wins: return p2.name return "引き分け!"
解説
Gameオブジェクトを作ると、、Pythonは__init__メソッドを呼びます。
するとinput関数が実行されて、プレイヤーの名前を聞いてきます。
入力した値はname1とname2に格納されます。つぎに、Deckのオブジェクト
を作ってインスタンス変数deckに格納し、そして、先程の2つのname1と
name2を使ってplaye オブジェクトをつくります。
Gameクラスんplay_gameメソッドでゲームが始ります。このメソッドはゲーム中
ずーとループするコードを持ち、デッキのカードが2枚未満になるか、response
にqという文字が代入されるまで繰り返します。ループを回すごとにrespons変数に
ユーザーから入力された値が代入されます。
play_gameメソッドでは、ループごとに2つのカードがデッキから引かれ、1枚目をself.p1.card,2枚目をself.p2.cardに代入します。そして、引いたカードを
プリント出力し、2枚のカードのどちらが大きいか比較します。大きいカードをひい
たプレイヤーのwinsインスタンス変数をインクリメントして、勝者がどちらかを表示
ます。
Gameクラスのwinnerメソッドは2つのプレーヤーオブジェクトを引数で受取
ります。そして、どちらの勝利回数が多いか比較して、多く勝った方のプレイヤーの
名前を返します
Deckオブジェクトからカードがなくなったら、play_gameメソッドはwinnerメソ
ッドを呼び(p1とp2を渡します)、そしてゲームの勝者を表示して終了します。