1. TOP
  2. プログラム
  3. ソフト
  4. python
  5. Python-知識を一つに-3

Python-知識を一つに-3

2017-02-07_162830_GX1

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を渡します)、そしてゲームの勝者を表示して終了します。