読者です 読者をやめる 読者になる 読者になる

simudaru's blog

Python, Rなどのメモを残していこうと思います。  よろしくお願いいたします。

カードゲームを作りたい その1

「カードゲームを作りたい」

そう思ったので、作ろうとしてみます。

複雑なルールだと挫折するので、非常に簡単なルールにします。


ルールは後で細かく考えるとして、
まずは、デッキClassを作ろうと思います。

クラス:
  デッキ

属性:
  カードの並び

メソッド
  シャッフル
  ドロー
  カードを戻す

ルールによっては、他のメソッドも必要になるかも。

# -*- coding: utf-8 -*-
# ------------------------------------------------------------------------------
# デッキクラス
# ------------------------------------------------------------------------------
import random

class Deck():
    '''
        デッキクラス
        cards: カードのidのリスト indexはデッキの底から順
    '''
    def __init__(self, cards):
        ''' cardsを初期化 '''
        self.cards = cards

    def shuffle(self):
        ''' cardsをシャッフル '''
        random.shuffle(self.cards)

    def draw(self, n=1):
        ''' カードをn枚引く '''
        lst = []
        for i in xrange(n):
            lst.append(self.cards.pop())
        return lst

    def getcards(self):
        ''' デッキ内の全てのカードを返す '''
        return self.cards

    def puttop(self, pcards):
        ''' 任煮の枚数のカード(下から順)をデッキの上に置く '''
        self.cards.extend(pcards)

    def putbuttom(self, pcards):
        ''' 任煮の枚数のカード(下から順)をデッキの下に置く '''
        for x in pcards[::-1]:
            self.cards.insert(0, x)

pythonだと、リストのシャッフルが始めから用意されているので、とても簡単に書けますね。

複数枚カードを引くメソッドや、
複数枚カードを戻すメソッドを用意しようと思った結果、
全てのやり取りがリストになってしまいました。

このままにするか、要素が1個のときはintにするか、
ちょっと悩みますが、
 「全てやりとりはリストで行う」
というルールのほうがわかりやすいかなということで、
このままいこうかと思います。