Skip to content

Instantly share code, notes, and snippets.

@imontantes
Created October 3, 2012 18:54
Show Gist options
  • Save imontantes/3828998 to your computer and use it in GitHub Desktop.
Save imontantes/3828998 to your computer and use it in GitHub Desktop.
Slot Machine in Python
import random
print('''Welcome to the Slot Machine Simulator
You'll start with $50. You'll be asked if you want to play.
Answer with yes/no. you can also use y/n
No case sensitivity in your answer.
For example you can answer with YEs, yEs, Y, nO, N.
To win you must get one of the following combinations:
BAR\tBAR\tBAR\t\tpays\t$250
BELL\tBELL\tBELL/BAR\tpays\t$20
PLUM\tPLUM\tPLUM/BAR\tpays\t$14
ORANGE\tORANGE\tORANGE/BAR\tpays\t$10
CHERRY\tCHERRY\tCHERRY\t\tpays\t$7
CHERRY\tCHERRY\t -\t\tpays\t$5
CHERRY\t -\t -\t\tpays\t$2
''')
#Constants:
INIT_STAKE = 50
ITEMS = ["CHERRY", "LEMON", "ORANGE", "PLUM", "BELL", "BAR"]
firstWheel = None
secondWheel = None
thirdWheel = None
stake = INIT_STAKE
def play():
global stake, firstWheel, secondWheel, thirdWheel
playQuestion = askPlayer()
while(stake != 0 and playQuestion == True):
firstWheel = spinWheel()
secondWheel = spinWheel()
thirdWheel = spinWheel()
printScore()
playQuestion = askPlayer()
def askPlayer():
'''
Asks the player if he wants to play again.
expecting from the user to answer with yes, y, no or n
No case sensitivity in the answer. yes, YeS, y, y, nO . . . all works
'''
global stake
while(True):
answer = input("You have $" + str(stake) + ". Would you like to play? ")
answer = answer.lower()
if(answer == "yes" or answer == "y"):
return True
elif(answer == "no" or answer == "n"):
print("You ended the game with $" + str(stake) + " in your hand.")
return False
else:
print("wrong input!")
def spinWheel():
'''
returns a random item from the wheel
'''
randomNumber = random.randint(0, 5)
return ITEMS[randomNumber]
def printScore():
'''
prints the current score
'''
global stake, firstWheel, secondWheel, thirdWheel
if((firstWheel == "CHERRY") and (secondWheel != "CHERRY")):
win = 2
elif((firstWheel == "CHERRY") and (secondWheel == "CHERRY") and (thirdWheel != "CHERRY")):
win = 5
elif((firstWheel == "CHERRY") and (secondWheel == "CHERRY") and (thirdWheel == "CHERRY")):
win = 7
elif((firstWheel == "ORANGE") and (secondWheel == "ORANGE") and ((thirdWheel == "ORANGE") or (thirdWheel == "BAR"))):
win = 10
elif((firstWheel == "PLUM") and (secondWheel == "PLUM") and ((thirdWheel == "PLUM") or (thirdWheel == "BAR"))):
win = 14
elif((firstWheel == "BELL") and (secondWheel == "BELL") and ((thirdWheel == "BELL") or (thirdWheel == "BAR"))):
win = 20
elif((firstWheel == "BAR") and (secondWheel == "BAR") and (thirdWheel == "BAR")):
win = 250
else:
win = -1
stake += win
if(win > 0):
print(firstWheel + '\t' + secondWheel + '\t' + thirdWheel + ' -- You win $' + str(win))
else:
print(firstWheel + '\t' + secondWheel + '\t' + thirdWheel + ' -- You lose')
play()
@Aareon
Copy link

Aareon commented Dec 14, 2015

Instead of;
if(answer == "yes" or answer == "y"):

Do;
if answer.lower() in ['yes',y']

@land-pack
Copy link

I run it on python 2 ,it's need to modify the 43 line (input -> raw_input)

@bembeng01
Copy link

print

@newtondapash
Copy link

what happens when player wants to play with more than 50
again does the balance go bellow 50 and if yes what happens

@BurakOyunda612
Copy link

than you soo much . I am little editing codes
I am adde SLOT SLOT SLOT = 10000$

@gentrificationzolaz
Copy link

gentrificationzolaz commented Dec 17, 2024

You can make an improved version of the code with improved readability, reusability, and structure.
def spin_wheel(): return random.choice(ITEMS) - I think this is the best way to use In general, it's an interesting project. There are few of them now. I think (from what I can see) that this will be a pretty successful project for you. I knew one of them here https://qbets.de/, and I can say for sure that slot machines are very popular now. The project listed above was developed by a good friend of mine, and he says that it is now popular among young people. By the way, it seems to me that the design is very well done, and maybe you will want to do something similar for your project?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment