-3

4 人のプレーヤーでパレス カード ゲームを作成しています。カウンターなどの平滑化を使用する必要がありますか?

4

2 に答える 2

0

カードが異なれば、次のターンのプレイヤーも異なり、時計回りと反時計回りでゲームが切り替わる可能性があるため、決定はカード オブジェクトに任せることをお勧めします。

from abc import ABCMeta, abstractmethod

class Card(object):
    __metaclass__ = ABCMeta
    def __init__(self, color, value):
        """
        Color is either "r", "b", "g", or "y". Value is 0-9.
        """
        self.color = color
        self.value = value

    def is_valid(self, color, value=None):
        return color in self.color or value == self.value

    @abstractmethod
    def card_effect(self, game):
        pass

すべてのカードのこの基本クラスは、カードと見なされるためにクラスが満たさなければならない「契約」です。このクラスをインスタンス化する予定はないので、抽象クラスにします。

class Normal(Card):
    def card_effect(self, game):
        game.increment_player_index(1)

class Skip(Card):
    def __init__(self, color):
        super(Skip, self).__init__(color, "skip")

    def card_effect(self, game):
        game.increment_player_index(2)

class Turn(Card):
    def __init__(self, color):
        super(Turn, self).__init__(color, "turn")

    def card_effect(self, game):
        game.toggle_direction()
        game.increment_player_index(2)

class PlusTwo(Card):
    def __init__(self, color):
        super(PlusTwo, self).__init__(color, "+2")

    def card_effect(self, game):
        game.increment_player_index(1)
        game.current_player().punish(2)
        game.increment_player_index(1)

黒のカードについては、次のようにします。

class PlusFour(Card):
    def __init__(self):
        super(PlusFour, self).__init__("rbgy", "+4")

    def card_effect(self, game):
        color = game.current_player().choose_color()
        game.set_color(color)
        game.increment_player_index(1)
        game.current_player().punish(4)
        game.increment_player_index(1)
于 2013-08-22T12:54:04.070 に答える