Gpessotto
Gpessotto

Reputation: 11

Creating a slot machine for school

I'm programming a slot machine for school and cannot get the machine to re-run once it is finished. I am relatively new and would like some honest feedback. How can I get my program to re-run? This is the code I'm trying to do this with. I've just modified my code to look like this.

import random 
import sys


print "Hi there user, welcome to the amazing poker machine simulator."
print "Your opening account has in it $1000."
print "To win a jackpot, three leprachauns must be in a row."
print "Enter yes or no when prompted to finish or continue the program."

balance = 1000
balance == int(balance)
winnings = 0
winnings == int(winnings)

Symbols = ["Leprachaun", "Goldbar", "Pyramid", "Blackcat"]

# Subroutines:  Checking the Bet input and amount
def betcheck(betamount):
    if betamount.isdigit() == True:
        betamount == int(betamount)
        rightbet = True
    else: 
        rightbet = False
        print "Please enter a whole number, no decimals and a bet on or below the balance."
    return rightbet

# Limiting the bet
def betlimit(betamount):
    if betamount > balance == False:
        goodlimit = False
        print "That bet is too high!"
    else:
        goodlimit = True
    return goodlimit

# Checking the 'Ask' input to play the machine.
def askinputcheck(answerinput):
    if answerinput == "Yes" or answerinput == "yes" or answerinput == "y" or answerinput == "No" or answerinput == "no" or answerinput == "n":
        rightanswerinput = True
    else:
        rightanswerinput = False
        print "This is an incorrect input, please type an appropriate answer in."
    return rightanswerinput

# Printing and sorting symbols.
def spinning(reels):
    global balance
    if reelone == "Leprachaun" and reeltwo == "Leprachaun" and reelthree == "Leprachaun":
        winnings = int(betamount) + int(balance) * 1000
        print "You won the jackpot! Congragulations! This is how much your account contains $", winnings
    elif reelone == "Goldbar" and reeltwo == "Goldbar" and reelthree == "Goldbar":
        winnings = int(betamount) + int(balance) * 500
        print "You won a considerable return! Awesome! Your balance and wins are $", winnings
    elif reelone == "Pyramid" and reeltwo == "Pyramid" and reelthree == "Pyramid":
        winnings = int(betamount) + int(balance) * 250
        print "You won a good return! Its a conspiracy! This is all of your money total $", winnings
    elif reelone == "Blackcat" and reeltwo == "Blackcat" and reelthree == "Blackcat":
        winnings = int(balance) - int(betamount)
        print "Unfortunately you didn't win anything, bad luck! You rewards are $", winnings
    else:
        winnings = int(balance) - int(betamount)
        print "Bad luck! Maybe next time you'll win! Your remaining cash is $", winnings
        print winnings
    return reels

# If you have no money
def rebalance(balance):        
    while balance == 0 == True and startagain == True:
        unbalance = True
        balance = 1000
        print "You ran out of money, here is $1000"
    else:
        unbalance = False
        print "You still have money."
        return unbalance

# Leads to Bet input check. 
Validbet = False
while Validbet == False:
    betamount = raw_input("Please enter amount you wish to bet: ")
    Validbet = betcheck(betamount)

betamount == int(betamount)

# Leads to betlimit
appropriatelimit = betlimit(betamount)

# RandomSymbolGen + 3 reels
reelone = random.sample(["Leprachaun", "Goldbar", "Goldbar", "Pyramid", "Pyramid", "Pyramid", "Blackcat", "Blackcat", "Blackcat", "Blackcat"],1)
reeltwo = random.sample(["Leprachaun", "Goldbar", "Goldbar", "Pyramid", "Pyramid", "Pyramid", "Blackcat", "Blackcat", "Blackcat", "Blackcat"],1)
reelthree = random.sample(["Leprachaun", "Goldbar", "Goldbar", "Pyramid", "Pyramid", "Pyramid", "Blackcat", "Blackcat", "Blackcat", "Blackcat"],1)

reels = [reelone, reeltwo, reelthree]

slotspin = spinning(reels)

print reels

# Leads to Ask input check. (At the bottom due to program order)
validask = False
while validask == False:
    answerinput = raw_input("Would you like to play again?: ")
    validask = askinputcheck(answerinput)

# Leads to restart    
startagain = False
while startagain == False:
    startagain = answerinput

while True: 
    if answerinput == "Yes" or answerinput == "yes" or answerinput == "y":
        startagain = True
        balance = int(winnings) + int(balance)
        print "You have $", balance
        pass
    elif answerinput == "No" or answerinput == "no" or answerinput == "n":
        startagain = False
        balance = winnings
        print "You ended the game with", balance
        break
    else:
        print "This is an incorrect input, please answer yes or no."


# Leads to rebalance
if answerinput == "Yes" or answerinput == "yes" or answerinput == "y" and balance == 0:
    balance = rebalance(balance)

Upvotes: 1

Views: 5328

Answers (1)

Rolf of Saxony
Rolf of Saxony

Reputation: 22453

Having some spare time, I have modified your code.
The code you supplied is riddled with small coding and logical errors. You would be best running the diff command between your original code and the code below, to see where the many differences are and there is no guarantee that is bug free now either.
I hope you're not planning on fleecing your fellow pupils, the rebalance routine is the twisted work of a future loan-shark. ;)

import random

print( "Hi there user, welcome to the amazing poker machine simulator.")
print( "Your opening account has in it $1000.")
print( "To win a jackpot, three leprachauns must be in a row.")
print( "Enter yes or no when prompted to finish or continue the program.")

balance = 1000

Symbols = ["Leprachaun", "Goldbar", "Pyramid", "Blackcat"]

# Subroutines:  Checking the Bet input and amount
def betcheck(betamount):
    if betamount.isdigit() == True:
        betamount == int(betamount)
        rightbet = True
    else:
        rightbet = False
        print( "Please enter a whole number, no decimals and a bet on or below the balance.")
    return rightbet

# Limiting the bet
def betlimit(betamount):
    if betamount > balance:
        goodlimit = balance
        print( "That bet is too high! - bet adjusted to ", goodlimit)
    else:
        goodlimit = betamount
    return goodlimit

# Checking the 'Ask' input to play the machine.
def askinputcheck(answerinput):
    if answerinput.lower().startswith('y') or answerinput.lower().startswith("n"):
        rightanswerinput = True
    else:
        rightanswerinput = False
        print( "This is an incorrect input, please type an appropriate answer in.")
    return rightanswerinput

# print(ing and sorting symbols.
def spinning(reels, betamount):
    reelone, reeltwo, reelthree = reels[0], reels[1], reels[2]
    global balance
    winnings = 0
    if reelone[0] == "Leprachaun" and reeltwo[0] == "Leprachaun" and reelthree[0] == "Leprachaun":
        winnings = int(betamount) * 10 + int(balance)
        print( "You won the jackpot! Congragulations! This is how much your account contains $", winnings)
    elif reelone[0] == "Goldbar" and reeltwo[0] == "Goldbar" and reelthree[0] == "Goldbar":
        winnings = int(betamount) *5 + int(balance)
        print( "You won a considerable return! Awesome! Your balance and wins are $", winnings)
    elif reelone[0] == "Pyramid" and reeltwo[0] == "Pyramid" and reelthree[0] == "Pyramid":
        winnings = int(betamount) *2 + int(balance)
        print( "You won a good return! Its a conspiracy! This is all of your money total $", winnings)
    elif reelone[0] == "Blackcat" and reeltwo[0] == "Blackcat" and reelthree[0] == "Blackcat":
        winnings = int(balance) - int(betamount)
        print( "Unfortunately you didn't win anything, bad luck! You rewards are $", winnings)
    else:
        winnings = int(balance) - int(betamount)
        print( "Bad luck! Maybe next time you'll win! Your remaining cash is $", winnings)
    balance = winnings
    return reels

# If you have no money
def rebalance(startagain):
    global balance
    if balance < 1 and startagain == True:
        unbalance = True
        balance = 1000
        print( "You ran out of money, here is $1000")
    else:
        unbalance = False
        print( "You still have money.")
    return unbalance

# Leads to Bet input check.
def my_mainloop():
    global balance
    while True:
        Validbet = False
        while Validbet == False:
            betamount = input("Please enter amount you wish to bet: ")
            Validbet = betcheck(betamount)

        betamount = int(betamount)
        # Leads to betlimit
        betamount = betlimit(betamount)

        # RandomSymbolGen + 3 reels
        if betamount > 0:
            reelone = random.sample(["Leprachaun", "Goldbar", "Goldbar", "Pyramid", "Pyramid", "Pyramid", "Blackcat", "Blackcat", "Blackcat", "Blackcat"],1)
            reeltwo = random.sample(["Leprachaun", "Goldbar", "Goldbar", "Pyramid", "Pyramid", "Pyramid", "Blackcat", "Blackcat", "Blackcat", "Blackcat"],1)
            reelthree = random.sample(["Leprachaun", "Goldbar", "Goldbar", "Pyramid", "Pyramid", "Pyramid", "Blackcat", "Blackcat", "Blackcat", "Blackcat"],1)

            reels = [reelone, reeltwo, reelthree]
            print( "\n",reels,"\n")
            slotspin = spinning(reels, betamount)


        # Leads to Ask input check. (At the bottom due to program order)
        validask = False
        while validask == False:
            answerinput = input("\nWould you like to play again?: ")
            validask = askinputcheck(answerinput)

        if answerinput.lower().startswith("y"):
            startagain = True
            print( "You have $", balance)
        elif answerinput.lower().startswith("n"):
            startagain = False
            print( "You ended the game with", balance)
            break
        else:
            print( "This is an incorrect input, please answer yes or no.")

            # Leads to rebalance
        if answerinput.lower().startswith("y") and balance < 1:
            rebalance(startagain)

if __name__ == "__main__":
    my_mainloop()

Edit: 4 years on, I noticed an error in the code if reelone == "Pyramid" ... this is testing a list against a string.
My admiration for your embezzelment techniques, which were already high, just went up. Even with a winning spin, the test returned False and that is in addition to the disproportionate number of "Blackcat" entries in each reel.

I trust that now that you must have left school and pass amongst us in the wider world, you are well on your way to being as rich as Croesus.

Upvotes: 3

Related Questions