2013-07-12 21 views
1

以下是我放在一起的賭場遊戲的輪盤賭部分,但我似乎無法讓它正常工作。它不會識別玩家何時選擇正確的號碼,我希望有人能告訴我爲什麼。顯然,其他一些部分還沒有完成,但我只是想讓基礎知識運行起來。另外,我對此很新,所以請隨時批評其他內容!謝謝。輪盤賭程序不會識別正確的猜測。爲什麼?

from random import randint 
from time import sleep 

funds = 50 



### Straight Up number bet = 35:1 
### Odd/Even payout = 1:1 

class RouletteTable(object): 

    def __init__(self, wallet): 
     self.wallet = wallet 

    def spin(self, bets): 
     print "Spinning..." 
     sleep(2) 
     print "The winner is..." 
     sleep(1) 
     winner = 25 #randint(0, 36) #FOR TESTING 
     print "Number ", winner 
     if winner in bets == True: 
      bets = True 
      return bets 

     else: 
      print "You bet on: ", bets 
      print "Better luck next time." 
      bets = False 
      return bets 

    def game(self): 

     while self.wallet >= 0: 
      print "\n\nWelcome to Roulette." 
      print "Test your luck, and place your bets!" 
      print "Current funds: $", self.wallet 
      print "\n(1)Place bet or (2)Exit" 
      choice = raw_input("> ") 

      if choice == "1": 
       bets = [] 
       print '''\n\n\n 
      __________ 
     [  0 ] 
     [ 1][ 2][ 3] 
     [ 4][ 5][ 6] 
     [ 7][ 8][ 9] 
     [10][11][12] 
     [13][14][15] 
     [16][17][18] 
     [19][20][21] 
     [22][23][24] 
     [25][26][27] 
     [28][29][30] 
     [31][32][33] 
     [34][35][36] 
     [ODD] [EVEN] 

     ''' 
       print "How much will you bet (per number)?" 
       bet_amount = int(raw_input("> $")) 
       print "Type a number to bet on, and press Enter." 
       print "When finished choosing, just press Enter." 
       while True: 
        print "Funds: $", self.wallet 
        print "Current Bets: ", bets 
        number_choice = raw_input("> ") 
        if number_choice != "": 
         bets.append(int(number_choice)) 
         self.wallet -= bet_amount 

        else: 
         # start spin 
         self.spin(bets) 
         # payout for bets 
         if bets == True: 
          print "You win $", bet_amount*35 
          self.wallet += bet_amount*35 

         break 

      if choice == "2": 
       return self.wallet 
       break 

     if self.wallet == 0: 
      print "You're out of money!\n" 

roulette = RouletteTable(funds) 
funds = roulette.game() 
+0

如果他們選擇正確的號碼,「賭」應設置爲True,如果「賭」是真的,應該給錢。我認爲錯誤在於返回「賭注」,但無法讓它起作用。 – stealthberry

+0

+1發佈工作代碼,準確的問題描述和佈局您的思維過程。 – tike

回答

0

你的主要錯誤是這樣的:

# start spin 
self.spin(bets) 
# payout for bets 

它應該閱讀:

#start spin 
bets = self.spin(bets) 
# payount bets 

以下修改後的代碼做它正確。用不同類型的重寫投注並不好,我建議使用不同的變量。 win in bets也不需要明確地與True進行比較(除非在學習期間進行澄清)。

希望幫助,如果您還有其他問題,只是評論;-)

from random import randint 
from time import sleep 

funds = 50 



### Straight Up number bet = 35:1 
### Odd/Even payout = 1:1 

class RouletteTable(object): 

    def __init__(self, wallet): 
     self.wallet = wallet 

    def spin(self, bets): 
     print "Spinning..." 
     sleep(2) 
     print "The winner is..." 
     sleep(1) 
     winner = 25 #randint(0, 36) #FOR TESTING 
     print "Number ", winner 
     if winner in bets: 
      return True 

     else: 
      print "You bet on: ", bets 
      print "Better luck next time." 
      return False 

    def game(self): 

     while self.wallet >= 0: 
      print "\n\nWelcome to Roulette." 
      print "Test your luck, and place your bets!" 
      print "Current funds: $", self.wallet 
      print "\n(1)Place bet or (2)Exit" 
      choice = raw_input("> ") 

      if choice == "1": 
       bets = [] 
       print '''\n\n\n 
      __________ 
     [  0 ] 
     [ 1][ 2][ 3] 
     [ 4][ 5][ 6] 
     [ 7][ 8][ 9] 
     [10][11][12] 
     [13][14][15] 
     [16][17][18] 
     [19][20][21] 
     [22][23][24] 
     [25][26][27] 
     [28][29][30] 
     [31][32][33] 
     [34][35][36] 
     [ODD] [EVEN] 

     ''' 
       print "How much will you bet (per number)?" 
       bet_amount = int(raw_input("> $")) 
       print "Type a number to bet on, and press Enter." 
       print "When finished choosing, just press Enter." 
       while True: 
        print "Funds: $", self.wallet 
        print "Current Bets: ", bets 
        number_choice = raw_input("> ") 
        if number_choice != "": 
         bets.append(int(number_choice)) 
         self.wallet -= bet_amount 

        else: 
         # start spin 
         did_win = self.spin(bets) 
         # payout for bets 
         if did_win == True: 
          ammount = bet_amount*35 
          self.wallet += ammount 
          print "You win $", ammount 


         break 

      if choice == "2": 
       return self.wallet 
       break 

     if self.wallet == 0: 
      print "You're out of money!\n" 

roulette = RouletteTable(funds) 
funds = roulette.game() 
+0

啊,謝謝。我知道這是一個簡單的錯誤。這就說得通了。感謝關於變量命名的提示,以及。 – stealthberry

+0

很高興它幫助,隨時標記爲正確的答案,謝謝。 – tike