POST 10: GLADNESS IS MADDNESS

Today I made a Slot machine with a tutorial

import random

MAX_LINES = 3

MAX_BET = 100

MIN_BET = 1

ROWS = 3

COLS = 3

symbol_count = {

    “A”: 2,

    “B”: 4,

    “C”: 6,

    “D”: 8

}

symbol_value = {

    “A”: 5,

    “B”: 4,

    “C”: 3,

    “D”: 2

}

this is the symbols and values for the memory

def check_winnings(columns, lines, bet, values):

    winnings = 0

    winning_lines = []

    for line in range(lines):

        symbol = columns[0][line]

        for column in columns:

            symbol_to_check = column[line]

            if symbol != symbol_to_check:

                break

        else:

            winnings += values[symbol] * bet

            winning_lines.append(line + 1)

    return winnings, winning_lines

this checks how much you will get from winning

ef get_slot_machine_spin(rows, cols, symbols):

    all_symbols = []

    for symbol, symbol_count in symbols.items():

        for _ in range(symbol_count):

            all_symbols.append(symbol)

    columns = []

    for _ in range(cols):

        column = []

        current_symbols = all_symbols[:]

        for _ in range(rows):

            value = random.choice(current_symbols)

            current_symbols.remove(value)

            column.append(value)

        columns.append(column)

    return columns

this is the thing that chooses the Symbols and such

def print_slot_machine(columns):

    for row in range(len(columns[0])):

        for i, column in enumerate(columns):

            if i != len(columns) – 1:

                print(column[row], end=” | “)

            else:

                print(column[row], end=””)

        print()

this one prints the columns obviously

def deposit():

    while True:

        amount = input(“What would you like to deposit? $”)

        if amount.isdigit():

            amount = int(amount)

            if amount > 0:

                break

            else:

                print(“Amount must be greater than 0.”)

        else:

            print(“Please enter a number.”)

    return amount

this is for how much you pay to spin and such

def get_number_of_lines():

    while True:

        lines = input(

            “Enter the number of lines to bet on (1-” + str(MAX_LINES) + “)? “)

        if lines.isdigit():

            lines = int(lines)

            if 1 <= lines <= MAX_LINES:

                break

            else:

                print(“Enter a valid number of lines.”)

        else:

            print(“Please enter a number.”)

    return lines

how much you bet on the lines

def get_bet():

    while True:

        amount = input(“What would you like to bet on each line? $”)

        if amount.isdigit():

            amount = int(amount)

            if MIN_BET <= amount <= MAX_BET:

                break

            else:

                print(f”Amount must be between ${MIN_BET} – ${MAX_BET}.”)

        else:

            print(“Please enter a number.”)

    return amount

this is for betting

def spin(balance):

    lines = get_number_of_lines()

    while True:

        bet = get_bet()

        total_bet = bet * lines

        if total_bet > balance:

            print(

                f”You do not have enough to bet that amount, your current balance is: ${balance}”)

        else:

            break

    print(

        f”You are betting ${bet} on {lines} lines. Total bet is equal to: ${total_bet}”)

    slots = get_slot_machine_spin(ROWS, COLS, symbol_count)

    print_slot_machine(slots)

    winnings, winning_lines = check_winnings(slots, lines, bet, symbol_value)

    print(f”You won ${winnings}.”)

    print(f”You won on lines:”, *winning_lines)

    return winnings – total_bet

this one pays out

def main():

    balance = deposit()

    while True:

        print(f”Current balance is ${balance}”)

        answer = input(“Press enter to play (q to quit).”)

        if answer == “q”:

            break

        balance += spin(balance)

    print(f”You left with ${balance}”)

main()

this one shows how much you have left

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top