2013-05-06 77 views
0

我试图创建一个使用类,以便运行一个黑杰克游戏。我相信我已经成功地做了一个类,它是为卡黑杰克类

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, 其被初始化为真(用于指示玩家 “中”),布尔值大酒杯,它被初始化为假 (指示玩家没有黑杰克),整钱, 表明资金总额的玩家,得分, 初始化为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

我只是在寻找一些方向,因为我无能,我们的教授并没有在非常有帮助所有。

回答

0

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

仅仅因为你的教授说'构造函数有六个属性'并不意味着'构造函数必须接受六个参数' - 在Python中,由于没有声明类必须具有的变量这样的事情,在构造函数中设置它们,即使它只会默认值。我只传递命名的构造函数和播放器的属性的其余部分将是可变的方法(即只允许从一个有效状态转移到另一个,并处理所有的副作用,当然)