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

1 回答 1

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()
于 2013-07-12T03:54:36.833 回答