「20枚コインがある、先攻後攻が1~4枚ずつ交互に取る。20枚目を取ったら負け」というゲーム」をpythonで実装しようとして、以下のようなコードを書きました。
(環境はPyCharm Community Edition 2020.2.2 x64、Anaconda導入済み)
import random class Player(object): CARD_DECK = list(reversed([i for i in range(1, 21)])) def __init__(self, get_card_list=None, win_count=0): self.win_count = win_count if get_card_list is None: self.get_card_list = [] def draw_card(self, draw_choice=None): if draw_choice is None: draw_choice = [1, 2, 3, 4] draw_card_count = random.choice(draw_choice) for i in range(draw_card_count): if len(self.CARD_DECK) == 0: break draw_card = self.CARD_DECK.pop() self.get_card_list.append(draw_card) if 19 in self.get_card_list: self.win_count += 1 first_player = Player() second_player = Player() for i in range(100): while len(first_player.CARD_DECK) > 0: first_player.draw_card() second_player.draw_card() print(first_player.get_card_list) print(second_player.get_card_list) print(first_player.win_count)
こちらが期待しているのは、PlayerClassをそれぞれfirst_player, second_playerにインスタンス化し、draw_cardメソッドでクラス変数で宣言した20枚のカードデッキがなくなるまでお互い交互に1~4枚カードを引き、最終的に19を所有しているplayerの勝利数:win_countが増えることです。そして以上をfor文で1000回ほど繰り返すことでどちらのplayerの勝利数が多いのかをインスタンス変数のwin_countで表示したいのですが、どうも繰り返し処理がうまくいってないような気がします。
どうにかアドバイスお願いします。
回答1件
あなたの回答
tips
プレビュー