2013-05-06 116 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中,由於沒有聲明類必須具有的變量這樣的事情,在構造函數中設置它們,即使它只會默認值。我只傳遞命名的構造函數和播放器的屬性的其餘部分將是可變的方法(即只允許從一個有效狀態轉移到另一個,並處理所有的副作用,當然)