【问题标题】:Black Jack with Classes黑杰克与类
【发布时间】:2013-04-30 18:39:42
【问题描述】:

我正在尝试创建一个使用类来运行的二十一点游戏。我相信我已经成功制作了一个针对卡片的课程

class Card(object):
    def __init__(self,suit,number):
        self.suit=suit
        self.number=number

然后我做了一个类,它需要一副牌然后洗牌,它也是如此,我认为这个类也是正确的(我对交易功能有点不确定)

class DeckofCards(object):
    def __init__(self,deck):
        self.deck=deck
        self.shuffledeck=self.shuffle()
        print(self.shuffledeck)
    def shuffle(self):
        b=[]
        count=0
        while count<len(self.deck):
            a=randrange(0,len(self.deck))
            if a not in b:
                b.append(self.deck[a])
                count+=1
        return(b)
    def deal(self):
        if len(self.shuffledeck)>0:
            return(self.shuffledeck.pop(0)) #removes the card from the deck and deals it
        else:
            shuffle(self)
            return(self.shuffledeck.pop(0))

然后我为玩家创建了一个类,这就是我开始困惑的地方,我希望插入老师的直接问题是可以的,因为这对我来说非常模棱两可和困惑。

类播放器(对象):

“”” 这个类是为游戏中的玩家(一个 庄家被认为是玩家,虽然我可以单独制作一个 类。)构造函数有 6 个属性:玩家的 名称,手(最初是一个空列表),布尔值 inout, 初始化为 True (用于指示播放器是 “in”),布尔值 blackjack,初始化为 False (表示玩家没有二十一点),整数钱, 表示玩家拥有的总金额、得分、 初始化为0,整数出价,初始化为0,这将 保留玩家当前的出价。

这是我的尝试

class Player(object):
    def __init__(self,name,hand,inout,money,score):
        self.name=name
        self.hand=hand
        self.inout=inout
        self.money=money
        self.score=score
        self.blackjack=self.blackjacksearch()
    def blackjacksearch(self): #not sure if any of this works
        if Card('H','J') in self.hand:
            return(False)
        if Card('S','J') in self.hand:
            return(False)
        if Card('C','J') in self.hand:
            return(False)
        if Card('D','J') in self.hand:
            return(False)
        else:
            return(True)

完整的路线可以在here找到

我只是在寻找方向,因为我一无所知,而我们的教授根本没有提供太多帮助。

【问题讨论】:

    标签: python-3.x


    【解决方案1】:

    假设玩家总是从他们的手牌的空列表开始,那么你不必进行二十一点搜索,因为他们总是没有二十一点(假),他们总是'in'(真),他们将有 0 分和 0 出价。

    仅仅因为您的教授说“构造函数有六个属性”并不意味着“构造函数必须接受六个参数” - 在 Python 中,由于没有声明一个类必须具有哪些变量,因此设置是有意义的它们在构造函数中,即使它只会是默认值。我只会将名称传递给构造函数,而 Player 的其余属性将通过方法进行更改(当然,只允许将其从一个有效状态移动到另一个有效状态并处理所有副作用)

    【讨论】:

      【解决方案2】:

      如果您需要 java 中 blackjack 的参考实现,它可以帮助您对类进行建模。 https://github.com/alkber/blackjack

      【讨论】:

        猜你喜欢
        • 2011-08-25
        • 1970-01-01
        • 2014-08-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多