From 38fa931fa8fc658739389b4dee6a5e12aa214947 Mon Sep 17 00:00:00 2001 From: Martin Thoma Date: Sat, 19 Mar 2022 10:10:01 +0100 Subject: [PATCH] Avoid global variables --- 05_Bagels/python/bagels.py | 4 +-- 77_Salvo/python/salvo.py | 27 +++++++-------- 79_Slalom/python/slalom.py | 69 +++++++++++++++++++------------------- 3 files changed, 50 insertions(+), 50 deletions(-) diff --git a/05_Bagels/python/bagels.py b/05_Bagels/python/bagels.py index d31cb6d7..e2a8a1b6 100644 --- a/05_Bagels/python/bagels.py +++ b/05_Bagels/python/bagels.py @@ -55,7 +55,7 @@ def pick_number(): return num -def get_valid_guess(): +def get_valid_guess(guesses): valid = False while not valid: guess = input(f"Guess # {guesses} ? ") @@ -135,7 +135,7 @@ def main(): guessing = True while guessing: - guess = get_valid_guess() + guess = get_valid_guess(guesses) if guess == num_str: print("You got it!!!\n") diff --git a/77_Salvo/python/salvo.py b/77_Salvo/python/salvo.py index 59e9a6ae..94078bea 100644 --- a/77_Salvo/python/salvo.py +++ b/77_Salvo/python/salvo.py @@ -57,8 +57,6 @@ computer_board = [] player_ship_coords = [] computer_ship_coords = [] -# keep track of the turn -current_turn = 0 #################################### # @@ -287,14 +285,12 @@ def generate_board(): return board, ship_coords -# execute_shot -# -# given a board and x, y coordinates, -# execute a shot. returns True if the shot -# is valid, False if not -def execute_shot(turn, board, x, y): - - global current_turn +def execute_shot(turn, board, x, y, current_turn): + """ + given a board and x, y coordinates, + execute a shot. returns True if the shot + is valid, False if not + """ square = board[x - 1][y - 1] ship_hit = -1 if square is not None and square >= 0 and square < len(SHIPS): @@ -422,7 +418,7 @@ first_turn = PLAYER second_turn = COMPUTER -def execute_turn(turn): +def execute_turn(turn, current_turn): global num_computer_shots global num_player_shots @@ -464,7 +460,7 @@ def execute_turn(turn): hits = [] for shot in shots: - hit = execute_shot(turn, board, shot[0], shot[1]) + hit = execute_shot(turn, board, shot[0], shot[1], current_turn) if hit >= 0: hits.append(hit) if turn == COMPUTER and print_computer_shots: @@ -491,6 +487,9 @@ def execute_turn(turn): def main(): + # keep track of the turn + current_turn = 0 + # initialize the player and computer # boards initialize_game() @@ -512,10 +511,10 @@ def main(): # print("player") # print_board(player_board) - if execute_turn(first_turn) == 0: + if execute_turn(first_turn, current_turn) == 0: game_over = True continue - if execute_turn(second_turn) == 0: + if execute_turn(second_turn, current_turn) == 0: game_over = True continue diff --git a/79_Slalom/python/slalom.py b/79_Slalom/python/slalom.py index bc68649f..3176e986 100644 --- a/79_Slalom/python/slalom.py +++ b/79_Slalom/python/slalom.py @@ -1,40 +1,10 @@ from random import random -print("Slalom".rjust(39)) -print("Creative Computing Morristown, New Jersey\n\n\n".rjust(57)) - medals = { "gold": 0, "silver": 0, "bronze": 0, } -max_speeds = [ - 14, - 18, - 26, - 29, - 18, - 25, - 28, - 32, - 29, - 20, - 29, - 29, - 25, - 21, - 26, - 29, - 20, - 21, - 20, - 18, - 26, - 25, - 33, - 31, - 22, -] def ask(question): @@ -47,7 +17,7 @@ def ask_int(question): return int(reply) if reply.isnumeric() else -1 -def pre_run(): +def pre_run(gates, max_speeds): print('\nType "INS" for instructions') print('Type "MAX" for approximate maximum speeds') print('Type "RUN" for the beginning of the race') @@ -80,7 +50,7 @@ def pre_run(): cmd = ask(f'"{cmd}" is an illegal command--Retry') -def run(): +def run(gates, lvl, max_speeds): global medals print("The starter counts down...5...4...3...2...1...Go!") time = 0 @@ -161,6 +131,37 @@ def run(): def main(): + print("Slalom".rjust(39)) + print("Creative Computing Morristown, New Jersey\n\n\n".rjust(57)) + + max_speeds = [ + 14, + 18, + 26, + 29, + 18, + 25, + 28, + 32, + 29, + 20, + 29, + 29, + 25, + 21, + 26, + 29, + 20, + 21, + 20, + 18, + 26, + 25, + 33, + 31, + 22, + ] + while True: gates = ask_int("How many gates does this course have (1 to 25)") if gates < 1: @@ -170,7 +171,7 @@ def main(): print("25 is the limit.") break - pre_run() + pre_run(gates, max_speeds) while True: lvl = ask_int("Rate yourself as a skier, (1=Worst, 3=Best)") @@ -180,7 +181,7 @@ def main(): break while True: - run() + run(gates, lvl, max_speeds) while True: answer = ask("Do you want to play again?") if answer == "YES" or answer == "NO":