黑杰克与类

时间:2013-05-06 22:33:03

标签: python-3.x

我正在尝试创建一个使用类来运行的黑杰克游戏。我相信我已经成功上了一个卡片课程

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))

然后我为玩家创建了一个类,这就是事情开始让我困惑的地方,我希望从老师那里插入直接问题是可以的,因为它对我来说很模糊和混乱。

  

class Player(object):

     

“”“这个课程适合游戏中的玩家(a   经销商被认为是一名球员,虽然我本可以单独进行   经销商的类。)构造函数有6个属性:玩家的   name,hand(最初为空列表),boolean值inout,   初始化为True(表示玩家是。)   “in”),布尔值blackjack,初始化为False   (表示玩家没有二十一点),整数钱,   表示玩家拥有的总金额,得分,   初始化为0,整数bid,初始化为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

我只是在寻找一些方向,因为我很无能,而且我们的教授根本没有帮助。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

如果您需要在java中使用黑色插孔的参考实现,它可以帮助您为类建模。 https://github.com/alkber/blackjack