Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 9f7b053

Browse files
Game added
1 parent b2a36b2 commit 9f7b053

File tree

1 file changed

+141
-0
lines changed

1 file changed

+141
-0
lines changed

‎Slot-Machine-Game/slotmachine.py

Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
import random
2+
MAX_LINES = 3
3+
MAX_BET = 100
4+
MIN_BET = 1
5+
6+
ROWS = 3
7+
COLS = 3
8+
9+
symbol_count = {
10+
"A": 2,
11+
"B": 4,
12+
"C": 6,
13+
"D": 8
14+
}
15+
16+
symbol_value = {
17+
"A": 5,
18+
"B": 4,
19+
"C": 3,
20+
"D": 2
21+
}
22+
23+
def check_winnings(columns, lines, bet, values):
24+
winnings = 0
25+
winning_lines = []
26+
for line in range(lines):
27+
symbol = columns[0][line]
28+
for column in columns:
29+
symbol_to_check = column[line]
30+
if symbol != symbol_to_check:
31+
break
32+
else:
33+
winnings +=values[symbol]* bet
34+
winning_lines.append(line + 1)
35+
36+
return winnings, winning_lines
37+
38+
def get_slot_machine_spin(rows,cols, symbols):
39+
all_symbols = []
40+
for symbol, symbol_count in symbols.items():
41+
for _ in range(symbol_count):
42+
all_symbols.append(symbol)
43+
44+
columns = []
45+
for _ in range(cols):
46+
column = []
47+
current_symbols = all_symbols[:]
48+
for _ in range(rows):
49+
value = random.choice(all_symbols)
50+
current_symbols.remove(value)
51+
column.append(value)
52+
53+
columns.append(column)
54+
55+
return columns
56+
57+
def print_slot_machine(columns):
58+
for row in range(len(columns[0])):
59+
for i, column in enumerate(columns):
60+
if i!= len(columns)-1:
61+
print(column[row], end=" | ")
62+
else:
63+
print(column[row], end="")
64+
65+
print()
66+
67+
def deposit():
68+
while True:
69+
amount = input("What would you like to deposit? $")
70+
if amount.isdigit():
71+
amount = int(amount)
72+
if amount > 0:
73+
break
74+
else:
75+
print("Amount must be greater than 0.")
76+
else:
77+
print("please enter a number. ")
78+
79+
return amount
80+
81+
def get_number_of_lines():
82+
while True:
83+
lines = input("Enter the number of lines to bet on (1-" + str(MAX_LINES) + ")? ")
84+
if lines.isdigit():
85+
lines = int(lines)
86+
if 1<= lines <= MAX_LINES:
87+
break
88+
else:
89+
print("enter a valid number of lines.")
90+
else:
91+
print("please enter a number. ")
92+
93+
return lines
94+
95+
def get_bet():
96+
while True:
97+
amount = input("What would you like to bet on each line? $ ")
98+
if amount.isdigit():
99+
amount = int(amount)
100+
if MIN_BET <= amount <= MAX_BET:
101+
break
102+
else:
103+
print(f"Amount must be between ${MIN_BET} - ${MAX_BET}.")
104+
else:
105+
print("please enter a number. ")
106+
107+
return amount
108+
109+
def spin(balance):
110+
lines = get_number_of_lines()
111+
while True:
112+
bet = get_bet()
113+
total_bet = bet*lines
114+
115+
if total_bet > balance:
116+
print(f"You do not have enough money to bet that amount, your current balance is: ${balance}.")
117+
118+
else:
119+
break
120+
121+
print(f"You are betting ${bet} on {lines} lines. Total be is equal to: ${total_bet}")
122+
123+
slots = get_slot_machine_spin(ROWS, COLS, symbol_count)
124+
print_slot_machine(slots)
125+
winnings, winning_lines = check_winnings(slots, lines, bet, symbol_value)
126+
print(f"You won ${winnings}.")
127+
print(f"You won on lines: ", *winning_lines)
128+
return winnings - total_bet
129+
130+
def main():
131+
balance = deposit()
132+
while True:
133+
print(f"Current balance is ${balance}")
134+
answer = input("Press enter to play (q to quit).")
135+
if answer == "q":
136+
break
137+
balance += spin(balance)
138+
139+
print(f"You left with ${balance}")
140+
141+
main()

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /