diff --git a/.github/workflows/check-python.yml b/.github/workflows/check-python.yml index cf8e42ce..5df15c8b 100644 --- a/.github/workflows/check-python.yml +++ b/.github/workflows/check-python.yml @@ -22,7 +22,7 @@ jobs: pip install -r 00_Utilities/python/ci-requirements.txt - name: Test with pytest run: | - pytest 01_Acey_Ducey/python 02_Amazing/python 39_Golf/python + pytest -m "not slow" - name: Test with mypy run: | mypy . --exclude 79_Slalom --exclude 27_Civil_War --exclude 38_Fur_Trader --exclude 81_Splat --exclude 09_Battle --exclude 40_Gomoko --exclude 36_Flip_Flop --exclude 43_Hammurabi --exclude 04_Awari --exclude 78_Sine_Wave --exclude 77_Salvo --exclude 34_Digits --exclude 17_Bullfight --exclude 16_Bug diff --git a/01_Acey_Ducey/python/aceyducey.py b/01_Acey_Ducey/python/aceyducey.py index fa112d8b..374a0b9d 100644 --- a/01_Acey_Ducey/python/aceyducey.py +++ b/01_Acey_Ducey/python/aceyducey.py @@ -62,89 +62,93 @@ def display_bankroll(bank_roll: int) -> None: print("You now have %s dollars\n" % bank_roll) -# Display initial title and instructions -print("\n Acey Ducey Card Game") -print("Creative Computing Morristown, New Jersey") -print("\n\n") -print("Acey-Ducey is played in the following manner") -print("The dealer (computer) deals two cards face up") -print("You have an option to bet or not bet depending") -print("on whether or not you feel the card will have") -print("a value between the first two.") -print("If you do not want to bet, input a 0") +def main(): + # Display initial title and instructions + print("\n Acey Ducey Card Game") + print("Creative Computing Morristown, New Jersey") + print("\n\n") + print("Acey-Ducey is played in the following manner") + print("The dealer (computer) deals two cards face up") + print("You have an option to bet or not bet depending") + print("on whether or not you feel the card will have") + print("a value between the first two.") + print("If you do not want to bet, input a 0") + # Loop for series of multiple games + KEEP_PLAYING = True + while KEEP_PLAYING: -# Loop for series of multiple games -KEEP_PLAYING = True -while KEEP_PLAYING: + # Initialize bankroll at start of each game + BANK_ROLL = DEFAULT_BANKROLL + display_bankroll(BANK_ROLL) - # Initialize bankroll at start of each game - BANK_ROLL = DEFAULT_BANKROLL - display_bankroll(BANK_ROLL) + # Loop for a single round. Repeat until out of money. + while BANK_ROLL > 0: - # Loop for a single round. Repeat until out of money. - while BANK_ROLL > 0: + # Deal out dealer cards + print("Here are your next two cards") + dealer1 = deal_card_num() + # If the cards match, we redeal 2nd card until they don't + dealer2 = dealer1 + while dealer1 == dealer2: + dealer2 = deal_card_num() + # Organize the cards in order if they're not already + if dealer1 >= dealer2: + (dealer1, dealer2) = (dealer2, dealer1) # Ya gotta love Python! + # Show dealer cards to the player + # (use card name rather than internal number) + print(get_card_name(dealer1)) + print(get_card_name(dealer2) + "\n") - # Deal out dealer cards - print("Here are your next two cards") - dealer1 = deal_card_num() - # If the cards match, we redeal 2nd card until they don't - dealer2 = dealer1 - while dealer1 == dealer2: - dealer2 = deal_card_num() - # Organize the cards in order if they're not already - if dealer1 >= dealer2: - (dealer1, dealer2) = (dealer2, dealer1) # Ya gotta love Python! - # Show dealer cards to the player - # (use card name rather than internal number) - print(get_card_name(dealer1)) - print(get_card_name(dealer2) + "\n") - - # Get and handle player bet choice - BET_IS_VALID = False - while not BET_IS_VALID: - curr_bet_str = input("What is your bet? ") - try: - curr_bet = int(curr_bet_str) - except ValueError: - # Bad input? Just loop back up and ask again... - pass - else: - if curr_bet == 0: - BET_IS_VALID = True - print("Chicken!!\n") - elif curr_bet > BANK_ROLL: - print("Sorry, my friend but you bet too much") - print("You have only %s dollars to bet\n" % BANK_ROLL) + # Get and handle player bet choice + BET_IS_VALID = False + while not BET_IS_VALID: + curr_bet_str = input("What is your bet? ") + try: + curr_bet = int(curr_bet_str) + except ValueError: + # Bad input? Just loop back up and ask again... + pass else: - # Deal player card - BET_IS_VALID = True - player = deal_card_num() - print(get_card_name(player)) - - # Did we win? - if dealer1 < player < dealer2: - print("You win!!!") - BANK_ROLL += curr_bet + if curr_bet == 0: + BET_IS_VALID = True + print("Chicken!!\n") + elif curr_bet > BANK_ROLL: + print("Sorry, my friend but you bet too much") + print("You have only %s dollars to bet\n" % BANK_ROLL) else: - print("Sorry, you lose") - BANK_ROLL -= curr_bet + # Deal player card + BET_IS_VALID = True + player = deal_card_num() + print(get_card_name(player)) - # Update player on new bankroll level - display_bankroll(BANK_ROLL) + # Did we win? + if dealer1 < player < dealer2: + print("You win!!!") + BANK_ROLL += curr_bet + else: + print("Sorry, you lose") + BANK_ROLL -= curr_bet - # End of loop for a single round + # Update player on new bankroll level + display_bankroll(BANK_ROLL) - print("\n\nSorry, friend but you blew your wad") - player_response = input("Try again (yes or no) ") - if player_response.lower() == "yes": - print() - else: - KEEP_PLAYING = False + # End of loop for a single round -# End of multiple game loop + print("\n\nSorry, friend but you blew your wad") + player_response = input("Try again (yes or no) ") + if player_response.lower() == "yes": + print() + else: + KEEP_PLAYING = False -print("OK Hope you had fun\n") + # End of multiple game loop + + print("OK Hope you had fun\n") + + +if __name__ == "__main__": + main() ######################################################## diff --git a/05_Bagels/python/bagels.py b/05_Bagels/python/bagels.py index 703ced43..d31cb6d7 100644 --- a/05_Bagels/python/bagels.py +++ b/05_Bagels/python/bagels.py @@ -108,60 +108,63 @@ def build_result_string(num, guess): ###################################################################### -# Intro text -print("\n Bagels") -print("Creative Computing Morristown, New Jersey") -print("\n\n") +def main(): + # Intro text + print("\n Bagels") + print("Creative Computing Morristown, New Jersey") + print("\n\n") -# Anything other than N* will show the rules -response = input("Would you like the rules (Yes or No)? ") -if len(response) > 0: - if response.upper()[0] != "N": + # Anything other than N* will show the rules + response = input("Would you like the rules (Yes or No)? ") + if len(response) > 0: + if response.upper()[0] != "N": + print_rules() + else: print_rules() -else: - print_rules() -games_won = 0 -still_running = True -while still_running: + games_won = 0 + still_running = True + while still_running: - # New round - num = pick_number() - num_str = "".join(num) - guesses = 1 + # New round + num = pick_number() + num_str = "".join(num) + guesses = 1 - print("\nO.K. I have a number in mind.") - guessing = True - while guessing: + print("\nO.K. I have a number in mind.") + guessing = True + while guessing: - guess = get_valid_guess() + guess = get_valid_guess() - if guess == num_str: - print("You got it!!!\n") - games_won += 1 - guessing = False - else: - print(build_result_string(num, guess)) - guesses += 1 - if guesses > MAX_GUESSES: - print("Oh well") - print(f"That's {MAX_GUESSES} guesses. My number was {num_str}") + if guess == num_str: + print("You got it!!!\n") + games_won += 1 guessing = False + else: + print(build_result_string(num, guess)) + guesses += 1 + if guesses > MAX_GUESSES: + print("Oh well") + print(f"That's {MAX_GUESSES} guesses. My number was {num_str}") + guessing = False - valid_response = False - while not valid_response: - response = input("Play again (Yes or No)? ") - if len(response) > 0: - valid_response = True - if response.upper()[0] != "Y": - still_running = False + valid_response = False + while not valid_response: + response = input("Play again (Yes or No)? ") + if len(response) > 0: + valid_response = True + if response.upper()[0] != "Y": + still_running = False + + if games_won > 0: + print(f"\nA {games_won} point Bagels buff!!") + + print("Hope you had fun. Bye.\n") -if games_won > 0: - print(f"\nA {games_won} point Bagels buff!!") - -print("Hope you had fun. Bye.\n") - +if __name__ == "__main__": + main() ###################################################################### # diff --git a/07_Basketball/python/basketball.py b/07_Basketball/python/basketball.py index 5bb013b9..d94414e0 100644 --- a/07_Basketball/python/basketball.py +++ b/07_Basketball/python/basketball.py @@ -353,4 +353,5 @@ class Basketball: self.opponent_jumpshot() -new_game = Basketball() +if __name__ == "__main__": + Basketball() diff --git a/16_Bug/python/Bug.py b/16_Bug/python/Bug.py index 03e9b91a..f144be04 100644 --- a/16_Bug/python/Bug.py +++ b/16_Bug/python/Bug.py @@ -49,254 +49,259 @@ def print_legs(n_legs): print() -print_n_whitespaces(34) -print("BUG") -print_n_whitespaces(15) -print("CREATIVE COMPUTING MORRISTOWN, NEW JERSEY") -print_n_newlines(3) +def main(): + print_n_whitespaces(34) + print("BUG") + print_n_whitespaces(15) + print("CREATIVE COMPUTING MORRISTOWN, NEW JERSEY") + print_n_newlines(3) -print("THE GAME BUG") -print("I HOPE YOU ENJOY THIS GAME.") -print() -Z = input("DO YOU WANT INSTRUCTIONS? ") -if Z != "NO": - print("THE OBJECT OF BUG IS TO FINISH YOUR BUG BEFORE I FINISH") - print("MINE. EACH NUMBER STANDS FOR A PART OF THE BUG BODY.") - print("I WILL ROLL THE DIE FOR YOU, TELL YOU WHAT I ROLLED FOR YOU") - print("WHAT THE NUMBER STANDS FOR, AND IF YOU CAN GET THE PART.") - print("IF YOU CAN GET THE PART I WILL GIVE IT TO YOU.") - print("THE SAME WILL HAPPEN ON MY TURN.") - print("IF THERE IS A CHANGE IN EITHER BUG I WILL GIVE YOU THE") - print("OPTION OF SEEING THE PICTURES OF THE BUGS.") - print("THE NUMBERS STAND FOR PARTS AS FOLLOWS:") - table = [ - ["NUMBER", "PART", "NUMBER OF PART NEEDED"], - ["1", "BODY", "1"], - ["2", "NECK", "1"], - ["3", "HEAD", "1"], - ["4", "FEELERS", "2"], - ["5", "TAIL", "1"], - ["6", "LEGS", "6"], - ] - for row in table: - print(f"{row[0]:<16}{row[1]:<16}{row[2]:<20}") - print_n_newlines(2) - -A = 0 -B = 0 -H = 0 -L = 0 -N = 0 -P = 0 -Q = 0 -R = 0 # NECK -S = 0 # FEELERS -T = 0 -U = 0 -V = 0 -Y = 0 - -while Y <= 0: - Z = random.randint(1, 6) + print("THE GAME BUG") + print("I HOPE YOU ENJOY THIS GAME.") print() - C = 1 - print("YOU ROLLED A", Z) - if Z == 1: - print("1=BODY") - if B == 1: - print("YOU DO NOT NEED A BODY.") - # goto 970 - else: - print("YOU NOW HAVE A BODY.") - B = 1 - C = 0 - # goto 970 - elif Z == 2: - print("2=NECK") - if N == 1: - print("YOU DO NOT NEED A NECK.") - # goto 970 - elif B == 0: - print("YOU DO NOT HAVE A BODY.") - # goto 970 - else: - print("YOU NOW HAVE A NECK.") - N = 1 - C = 0 - # goto 970 - elif Z == 3: - print("3=HEAD") - if N == 0: - print("YOU DO NOT HAVE A NECK.") - # goto 970 - elif H == 1: - print("YOU HAVE A HEAD.") - # goto 970 - else: - print("YOU NEEDED A HEAD.") - H = 1 - C = 0 - # goto 970 - elif Z == 4: - print("4=FEELERS") - if H == 0: - print("YOU DO NOT HAVE A HEAD.") - # goto 970 - elif A == 2: - print("YOU HAVE TWO FEELERS ALREADY.") - # goto 970 - else: - print("I NOW GIVE YOU A FEELER.") - A = A + 1 - C = 0 - # goto 970 - elif Z == 5: - print("5=TAIL") - if B == 0: - print("YOU DO NOT HAVE A BODY.") - # goto 970 - elif T == 1: - print("YOU ALREADY HAVE A TAIL.") - # goto 970 - else: - print("I NOW GIVE YOU A TAIL.") - T = T + 1 - C = 0 - # goto 970 - elif Z == 6: - print("6=LEG") - if L == 6: - print("YOU HAVE 6 FEET ALREADY.") - # goto 970 - elif B == 0: - print("YOU DO NOT HAVE A BODY.") - # goto 970 - else: - L = L + 1 - C = 0 - print(f"YOU NOW HAVE {L} LEGS") - # goto 970 - - # 970 - X = random.randint(1, 6) - print() - time.sleep(2) - - print("I ROLLED A", X) - if X == 1: - print("1=BODY") - if P == 1: - print("I DO NOT NEED A BODY.") - # goto 1630 - else: - print("I NOW HAVE A BODY.") - C = 0 - P = 1 - # goto 1630 - elif X == 2: - print("2=NECK") - if Q == 1: - print("I DO NOT NEED A NECK.") - # goto 1630 - elif P == 0: - print("I DO NOT HAVE A BODY.") - # goto 1630 - else: - print("I NOW HAVE A NECK.") - Q = 1 - C = 0 - # goto 1630 - elif X == 3: - print("3=HEAD") - if Q == 0: - print("I DO NOT HAVE A NECK.") - # goto 1630 - elif R == 1: - print("I HAVE A HEAD.") - # goto 1630 - else: - print("I NEEDED A HEAD.") - R = 1 - C = 0 - # goto 1630 - elif X == 4: - print("4=FEELERS") - if R == 0: - print("I DO NOT HAVE A HEAD.") - # goto 1630 - elif S == 2: - print("I HAVE TWO FEELERS ALREADY.") - # goto 1630 - else: - print("I GET A FEELER.") - S = S + 1 - C = 0 - # goto 1630 - elif X == 5: - print("5=TAIL") - if P == 0: - print("I DO NOT HAVE A BODY.") - # goto 1630 - elif U == 1: - print("I ALREADY HAVE A TAIL.") - # goto 1630 - else: - print("I NOW HAVE A TAIL.") - U = 1 - C = 0 - # goto 1630 - elif X == 6: - print("6=LEG") - if V == 6: - print("I HAVE 6 FEET.") - # goto 1630 - elif P == 0: - print("I DO NOT HAVE A BODY.") - # goto 1630 - else: - V = V + 1 - C = 0 - print(f"I NOW HAVE {V} LEGS") - # goto 1630 - - # 1630 - if (A == 2) and (T == 1) and (L == 6): - print("YOUR BUG IS FINISHED.") - Y = Y + 1 - if (S == 2) and (P == 1) and (V == 6): - print("MY BUG IS FINISHED.") - Y = Y + 2 - if C == 1: - continue - Z = input("DO YOU WANT THE PICTURES? ") + Z = input("DO YOU WANT INSTRUCTIONS? ") if Z != "NO": - print("*****YOUR BUG*****") + print("THE OBJECT OF BUG IS TO FINISH YOUR BUG BEFORE I FINISH") + print("MINE. EACH NUMBER STANDS FOR A PART OF THE BUG BODY.") + print("I WILL ROLL THE DIE FOR YOU, TELL YOU WHAT I ROLLED FOR YOU") + print("WHAT THE NUMBER STANDS FOR, AND IF YOU CAN GET THE PART.") + print("IF YOU CAN GET THE PART I WILL GIVE IT TO YOU.") + print("THE SAME WILL HAPPEN ON MY TURN.") + print("IF THERE IS A CHANGE IN EITHER BUG I WILL GIVE YOU THE") + print("OPTION OF SEEING THE PICTURES OF THE BUGS.") + print("THE NUMBERS STAND FOR PARTS AS FOLLOWS:") + table = [ + ["NUMBER", "PART", "NUMBER OF PART NEEDED"], + ["1", "BODY", "1"], + ["2", "NECK", "1"], + ["3", "HEAD", "1"], + ["4", "FEELERS", "2"], + ["5", "TAIL", "1"], + ["6", "LEGS", "6"], + ] + for row in table: + print(f"{row[0]:<16}{row[1]:<16}{row[2]:<20}") print_n_newlines(2) - if A != 0: - print_feelers(A, is_player=True) - if H != 0: - print_head() - if N != 0: - print_neck() - if B != 0: - print_body(True) if T == 1 else print_body(False) - if L != 0: - print_legs(L) - print_n_newlines(4) - print("*****MY BUG*****") - print_n_newlines(3) - if S != 0: - print_feelers(S, is_player=False) - if R == 1: - print_head() - if Q != 0: - print_neck() - if P != 0: - print_body(True) if U == 1 else print_body(False) - if V != 0: - print_legs(V) - if Y != 0: - break + A = 0 + B = 0 + H = 0 + L = 0 + N = 0 + P = 0 + Q = 0 + R = 0 # NECK + S = 0 # FEELERS + T = 0 + U = 0 + V = 0 + Y = 0 -print("I HOPE YOU ENJOYED THE GAME, PLAY IT AGAIN SOON!!") + while Y <= 0: + Z = random.randint(1, 6) + print() + C = 1 + print("YOU ROLLED A", Z) + if Z == 1: + print("1=BODY") + if B == 1: + print("YOU DO NOT NEED A BODY.") + # goto 970 + else: + print("YOU NOW HAVE A BODY.") + B = 1 + C = 0 + # goto 970 + elif Z == 2: + print("2=NECK") + if N == 1: + print("YOU DO NOT NEED A NECK.") + # goto 970 + elif B == 0: + print("YOU DO NOT HAVE A BODY.") + # goto 970 + else: + print("YOU NOW HAVE A NECK.") + N = 1 + C = 0 + # goto 970 + elif Z == 3: + print("3=HEAD") + if N == 0: + print("YOU DO NOT HAVE A NECK.") + # goto 970 + elif H == 1: + print("YOU HAVE A HEAD.") + # goto 970 + else: + print("YOU NEEDED A HEAD.") + H = 1 + C = 0 + # goto 970 + elif Z == 4: + print("4=FEELERS") + if H == 0: + print("YOU DO NOT HAVE A HEAD.") + # goto 970 + elif A == 2: + print("YOU HAVE TWO FEELERS ALREADY.") + # goto 970 + else: + print("I NOW GIVE YOU A FEELER.") + A = A + 1 + C = 0 + # goto 970 + elif Z == 5: + print("5=TAIL") + if B == 0: + print("YOU DO NOT HAVE A BODY.") + # goto 970 + elif T == 1: + print("YOU ALREADY HAVE A TAIL.") + # goto 970 + else: + print("I NOW GIVE YOU A TAIL.") + T = T + 1 + C = 0 + # goto 970 + elif Z == 6: + print("6=LEG") + if L == 6: + print("YOU HAVE 6 FEET ALREADY.") + # goto 970 + elif B == 0: + print("YOU DO NOT HAVE A BODY.") + # goto 970 + else: + L = L + 1 + C = 0 + print(f"YOU NOW HAVE {L} LEGS") + # goto 970 + + # 970 + X = random.randint(1, 6) + print() + time.sleep(2) + + print("I ROLLED A", X) + if X == 1: + print("1=BODY") + if P == 1: + print("I DO NOT NEED A BODY.") + # goto 1630 + else: + print("I NOW HAVE A BODY.") + C = 0 + P = 1 + # goto 1630 + elif X == 2: + print("2=NECK") + if Q == 1: + print("I DO NOT NEED A NECK.") + # goto 1630 + elif P == 0: + print("I DO NOT HAVE A BODY.") + # goto 1630 + else: + print("I NOW HAVE A NECK.") + Q = 1 + C = 0 + # goto 1630 + elif X == 3: + print("3=HEAD") + if Q == 0: + print("I DO NOT HAVE A NECK.") + # goto 1630 + elif R == 1: + print("I HAVE A HEAD.") + # goto 1630 + else: + print("I NEEDED A HEAD.") + R = 1 + C = 0 + # goto 1630 + elif X == 4: + print("4=FEELERS") + if R == 0: + print("I DO NOT HAVE A HEAD.") + # goto 1630 + elif S == 2: + print("I HAVE TWO FEELERS ALREADY.") + # goto 1630 + else: + print("I GET A FEELER.") + S = S + 1 + C = 0 + # goto 1630 + elif X == 5: + print("5=TAIL") + if P == 0: + print("I DO NOT HAVE A BODY.") + # goto 1630 + elif U == 1: + print("I ALREADY HAVE A TAIL.") + # goto 1630 + else: + print("I NOW HAVE A TAIL.") + U = 1 + C = 0 + # goto 1630 + elif X == 6: + print("6=LEG") + if V == 6: + print("I HAVE 6 FEET.") + # goto 1630 + elif P == 0: + print("I DO NOT HAVE A BODY.") + # goto 1630 + else: + V = V + 1 + C = 0 + print(f"I NOW HAVE {V} LEGS") + # goto 1630 + + # 1630 + if (A == 2) and (T == 1) and (L == 6): + print("YOUR BUG IS FINISHED.") + Y = Y + 1 + if (S == 2) and (P == 1) and (V == 6): + print("MY BUG IS FINISHED.") + Y = Y + 2 + if C == 1: + continue + Z = input("DO YOU WANT THE PICTURES? ") + if Z != "NO": + print("*****YOUR BUG*****") + print_n_newlines(2) + if A != 0: + print_feelers(A, is_player=True) + if H != 0: + print_head() + if N != 0: + print_neck() + if B != 0: + print_body(True) if T == 1 else print_body(False) + if L != 0: + print_legs(L) + print_n_newlines(4) + print("*****MY BUG*****") + print_n_newlines(3) + if S != 0: + print_feelers(S, is_player=False) + if R == 1: + print_head() + if Q != 0: + print_neck() + if P != 0: + print_body(True) if U == 1 else print_body(False) + if V != 0: + print_legs(V) + + if Y != 0: + break + + print("I HOPE YOU ENJOYED THE GAME, PLAY IT AGAIN SOON!!") + + +if __name__ == "__main__": + main() diff --git a/17_Bullfight/python/Bullfight.py b/17_Bullfight/python/Bullfight.py index c2a68887..06f35e8e 100644 --- a/17_Bullfight/python/Bullfight.py +++ b/17_Bullfight/python/Bullfight.py @@ -214,28 +214,35 @@ while True: if death: break -# 1310 -print_n_newlines(3) -if D[4] == 0: - print("THE CROWD BOOS FOR TEN MINUTES. IF YOU EVER DARE TO SHOW") - print("YOUR FACE IN A RING AGAIN, THEY SWEAR THEY WILL KILL YOU--") - print("UNLESS THE BULL DOES FIRST.") -else: - if D[4] == 2: - print("THE CROWD CHEERS WILDLY!") - elif D[5] == 2: - print("THE CROWD CHEERS!") - print() - print("THE CROWD AWARDS YOU") - if FNC() < 2.4: - print("NOTHING AT ALL.") - elif FNC() < 4.9: - print("ONE EAR OF THE BULL.") - elif FNC() < 7.4: - print("BOTH EARS OF THE BULL!") - print("OLE!") - else: - print("OLE! YOU ARE 'MUY HOMBRE'!! OLE! OLE!") - print() - print("ADIOS") + + +def main(): + # 1310 print_n_newlines(3) + if D[4] == 0: + print("THE CROWD BOOS FOR TEN MINUTES. IF YOU EVER DARE TO SHOW") + print("YOUR FACE IN A RING AGAIN, THEY SWEAR THEY WILL KILL YOU--") + print("UNLESS THE BULL DOES FIRST.") + else: + if D[4] == 2: + print("THE CROWD CHEERS WILDLY!") + elif D[5] == 2: + print("THE CROWD CHEERS!") + print() + print("THE CROWD AWARDS YOU") + if FNC() < 2.4: + print("NOTHING AT ALL.") + elif FNC() < 4.9: + print("ONE EAR OF THE BULL.") + elif FNC() < 7.4: + print("BOTH EARS OF THE BULL!") + print("OLE!") + else: + print("OLE! YOU ARE 'MUY HOMBRE'!! OLE! OLE!") + print() + print("ADIOS") + print_n_newlines(3) + + +if __name__ == "__main__": + main() diff --git a/18_Bullseye/python/Bullseye.py b/18_Bullseye/python/Bullseye.py index fab6ec9e..d5e22959 100644 --- a/18_Bullseye/python/Bullseye.py +++ b/18_Bullseye/python/Bullseye.py @@ -10,108 +10,113 @@ def print_n_newlines(n: int): print() -print_n_whitespaces(32) -print("BULLSEYE") -print_n_whitespaces(15) -print("CREATIVE COMPUTING MORRISTOWN, NEW JERSEY") -print_n_newlines(3) -print("IN THIS GAME, UP TO 20 PLAYERS THROW DARTS AT A TARGET") -print("WITH 10, 20, 30, AND 40 POINT ZONES. THE OBJECTIVE IS") -print("TO GET 200 POINTS.") -print() -print("THROW", end="") -print_n_whitespaces(20) -print("DESCRIPTION", end="") -print_n_whitespaces(45) -print("PROBABLE SCORE") -print(" 1", end="") -print_n_whitespaces(20) -print("FAST OVERARM", end="") -print_n_whitespaces(45) -print("BULLSEYE OR COMPLETE MISS") -print(" 2", end="") -print_n_whitespaces(20) -print("CONTROLLED OVERARM", end="") -print_n_whitespaces(45) -print("10, 20 OR 30 POINTS") -print(" 3", end="") -print_n_whitespaces(20) -print("UNDERARM", end="") -print_n_whitespaces(45) -print("ANYTHING") -print() - -nb_winners = 0 -round = 0 - -winners = {} -for i in range(1, 11): - winners[i] = 0 - -total_score = {} -for i in range(1, 21): - total_score[i] = 0 - -nb_players = int(input("HOW MANY PLAYERS? ")) -player_names = {} -for i in range(1, nb_players + 1): - player_name = input("NAME OF PLAYER #") - player_names[i] = player_name - -while nb_winners == 0: - round = round + 1 +def main(): + print_n_whitespaces(32) + print("BULLSEYE") + print_n_whitespaces(15) + print("CREATIVE COMPUTING MORRISTOWN, NEW JERSEY") + print_n_newlines(3) + print("IN THIS GAME, UP TO 20 PLAYERS THROW DARTS AT A TARGET") + print("WITH 10, 20, 30, AND 40 POINT ZONES. THE OBJECTIVE IS") + print("TO GET 200 POINTS.") + print() + print("THROW", end="") + print_n_whitespaces(20) + print("DESCRIPTION", end="") + print_n_whitespaces(45) + print("PROBABLE SCORE") + print(" 1", end="") + print_n_whitespaces(20) + print("FAST OVERARM", end="") + print_n_whitespaces(45) + print("BULLSEYE OR COMPLETE MISS") + print(" 2", end="") + print_n_whitespaces(20) + print("CONTROLLED OVERARM", end="") + print_n_whitespaces(45) + print("10, 20 OR 30 POINTS") + print(" 3", end="") + print_n_whitespaces(20) + print("UNDERARM", end="") + print_n_whitespaces(45) + print("ANYTHING") print() - print(f"ROUND {round}---------") - for i in range(1, nb_players + 1): - print() - while True: - throw = int(input(f"{player_names[i]}'S THROW? ")) - if throw not in [1, 2, 3]: - print("INPUT 1, 2, OR 3!") - else: - break - if throw == 1: - P1 = 0.65 - P2 = 0.55 - P3 = 0.5 - P4 = 0.5 - elif throw == 2: - P1 = 0.99 - P2 = 0.77 - P3 = 0.43 - P4 = 0.01 - elif throw == 3: - P1 = 0.95 - P2 = 0.75 - P3 = 0.45 - P4 = 0.05 - throwing_luck = random.random() - if throwing_luck >= P1: - print("BULLSEYE!! 40 POINTS!") - points = 40 - elif throwing_luck >= P2: - print("30-POINT ZONE!") - points = 30 - elif throwing_luck >= P3: - print("20-POINT ZONE") - points = 20 - elif throwing_luck >= P4: - print("WHEW! 10 POINTS.") - points = 10 - else: - print("MISSED THE TARGET! TOO BAD.") - points = 0 - total_score[i] = total_score[i] + points - print(f"TOTAL SCORE = {total_score[i]}") - for player_index in range(1, nb_players + 1): - if total_score[player_index] > 200: - nb_winners = nb_winners + 1 - winners[nb_winners] = player_index -print() -print("WE HAVE A WINNER!!") -print() -for i in range(1, nb_winners + 1): - print(f"{player_names[winners[i]]} SCORED {total_score[winners[i]]} POINTS.") -print() -print("THANKS FOR THE GAME.") + nb_winners = 0 + round = 0 + + winners = {} + for i in range(1, 11): + winners[i] = 0 + + total_score = {} + for i in range(1, 21): + total_score[i] = 0 + + nb_players = int(input("HOW MANY PLAYERS? ")) + player_names = {} + for i in range(1, nb_players + 1): + player_name = input("NAME OF PLAYER #") + player_names[i] = player_name + + while nb_winners == 0: + round = round + 1 + print() + print(f"ROUND {round}---------") + for i in range(1, nb_players + 1): + print() + while True: + throw = int(input(f"{player_names[i]}'S THROW? ")) + if throw not in [1, 2, 3]: + print("INPUT 1, 2, OR 3!") + else: + break + if throw == 1: + P1 = 0.65 + P2 = 0.55 + P3 = 0.5 + P4 = 0.5 + elif throw == 2: + P1 = 0.99 + P2 = 0.77 + P3 = 0.43 + P4 = 0.01 + elif throw == 3: + P1 = 0.95 + P2 = 0.75 + P3 = 0.45 + P4 = 0.05 + throwing_luck = random.random() + if throwing_luck >= P1: + print("BULLSEYE!! 40 POINTS!") + points = 40 + elif throwing_luck >= P2: + print("30-POINT ZONE!") + points = 30 + elif throwing_luck >= P3: + print("20-POINT ZONE") + points = 20 + elif throwing_luck >= P4: + print("WHEW! 10 POINTS.") + points = 10 + else: + print("MISSED THE TARGET! TOO BAD.") + points = 0 + total_score[i] = total_score[i] + points + print(f"TOTAL SCORE = {total_score[i]}") + for player_index in range(1, nb_players + 1): + if total_score[player_index] > 200: + nb_winners = nb_winners + 1 + winners[nb_winners] = player_index + + print() + print("WE HAVE A WINNER!!") + print() + for i in range(1, nb_winners + 1): + print(f"{player_names[winners[i]]} SCORED {total_score[winners[i]]} POINTS.") + print() + print("THANKS FOR THE GAME.") + + +if __name__ == "__main__": + main() diff --git a/20_Buzzword/python/buzzword.py b/20_Buzzword/python/buzzword.py index a5cf4df1..f4ff0baa 100644 --- a/20_Buzzword/python/buzzword.py +++ b/20_Buzzword/python/buzzword.py @@ -22,86 +22,89 @@ import random -WORDS = [ - [ - "Ability", - "Basal", - "Behavioral", - "Child-centered", - "Differentiated", - "Discovery", - "Flexible", - "Heterogeneous", - "Homogenous", - "Manipulative", - "Modular", - "Tavistock", - "Individualized", - ], - [ - "learning", - "evaluative", - "objective", - "cognitive", - "enrichment", - "scheduling", - "humanistic", - "integrated", - "non-graded", - "training", - "vertical age", - "motivational", - "creative", - ], - [ - "grouping", - "modification", - "accountability", - "process", - "core curriculum", - "algorithm", - "performance", - "reinforcement", - "open classroom", - "resource", - "structure", - "facility", - "environment", - ], -] +def main(): + WORDS = [ + [ + "Ability", + "Basal", + "Behavioral", + "Child-centered", + "Differentiated", + "Discovery", + "Flexible", + "Heterogeneous", + "Homogenous", + "Manipulative", + "Modular", + "Tavistock", + "Individualized", + ], + [ + "learning", + "evaluative", + "objective", + "cognitive", + "enrichment", + "scheduling", + "humanistic", + "integrated", + "non-graded", + "training", + "vertical age", + "motivational", + "creative", + ], + [ + "grouping", + "modification", + "accountability", + "process", + "core curriculum", + "algorithm", + "performance", + "reinforcement", + "open classroom", + "resource", + "structure", + "facility", + "environment", + ], + ] -# Display intro text -print("\n Buzzword Generator") -print("Creative Computing Morristown, New Jersey") -print("\n\n") -print("This program prints highly acceptable phrases in") -print("'educator-speak' that you can work into reports") -print("and speeches. Whenever a question mark is printed,") -print("type a 'Y' for another phrase or 'N' to quit.") -print("\n\nHere's the first phrase:") + # Display intro text + print("\n Buzzword Generator") + print("Creative Computing Morristown, New Jersey") + print("\n\n") + print("This program prints highly acceptable phrases in") + print("'educator-speak' that you can work into reports") + print("and speeches. Whenever a question mark is printed,") + print("type a 'Y' for another phrase or 'N' to quit.") + print("\n\nHere's the first phrase:") -still_running = True -while still_running: - phrase = "" - for section in WORDS: - if len(phrase) > 0: - phrase += " " - phrase += section[random.randint(0, len(section) - 1)] + still_running = True + while still_running: + phrase = "" + for section in WORDS: + if len(phrase) > 0: + phrase += " " + phrase += section[random.randint(0, len(section) - 1)] - print(phrase) - print("") + print(phrase) + print("") - response = input("? ") - try: - if response.upper()[0] != "Y": + response = input("? ") + try: + if response.upper()[0] != "Y": + still_running = False + except Exception: still_running = False - except Exception: - still_running = False + + print("Come back when you need help with another report!\n") -print("Come back when you need help with another report!\n") - +if __name__ == "__main__": + main() ###################################################################### # diff --git a/29_Craps/python/craps.py b/29_Craps/python/craps.py index 9ac079b2..3e47d014 100644 --- a/29_Craps/python/craps.py +++ b/29_Craps/python/craps.py @@ -18,64 +18,69 @@ def throw_dice(): return randint(1, 6) + randint(1, 6) -print(" " * 33 + "Craps") -print(" " * 15 + "Creative Computing Morristown, New Jersey") -print() -print() -print() +def main(): + print(" " * 33 + "Craps") + print(" " * 15 + "Creative Computing Morristown, New Jersey") + print() + print() + print() -winnings = 0 -print("2,3,12 are losers; 4,5,6,8,9,10 are points; 7,11 are natural winners.") + winnings = 0 + print("2,3,12 are losers; 4,5,6,8,9,10 are points; 7,11 are natural winners.") -play_again = True -while play_again: - wager = int(input("Input the amount of your wager: ")) + play_again = True + while play_again: + wager = int(input("Input the amount of your wager: ")) - print("I will now throw the dice") - roll_1 = throw_dice() + print("I will now throw the dice") + roll_1 = throw_dice() - if roll_1 in [7, 11]: - print(f"{roll_1} - natural.... a winner!!!!") - print(f"{roll_1} pays even money, you win {wager} dollars") - winnings += wager - elif roll_1 == 2: - print(f"{roll_1} - snake eyes.... you lose.") - print(f"You lose {wager} dollars") - winnings -= wager - elif roll_1 in [3, 12]: - print(f"{roll_1} - craps.... you lose.") - print(f"You lose {wager} dollars") - winnings -= wager - else: - print(f"{roll_1} is the point. I will roll again") - roll_2 = 0 - while roll_2 not in [roll_1, 7]: - roll_2 = throw_dice() - if roll_2 == 7: - print(f"{roll_2} - craps. You lose.") - print(f"You lose $ {wager}") - winnings -= wager - elif roll_2 == roll_1: - print(f"{roll_1} - a winner.........congrats!!!!!!!!") - print( - f"{roll_1} at 2 to 1 odds pays you...let me see... {2 * wager} dollars" - ) - winnings += 2 * wager - else: - print(f"{roll_2} - no point. I will roll again") + if roll_1 in [7, 11]: + print(f"{roll_1} - natural.... a winner!!!!") + print(f"{roll_1} pays even money, you win {wager} dollars") + winnings += wager + elif roll_1 == 2: + print(f"{roll_1} - snake eyes.... you lose.") + print(f"You lose {wager} dollars") + winnings -= wager + elif roll_1 in [3, 12]: + print(f"{roll_1} - craps.... you lose.") + print(f"You lose {wager} dollars") + winnings -= wager + else: + print(f"{roll_1} is the point. I will roll again") + roll_2 = 0 + while roll_2 not in [roll_1, 7]: + roll_2 = throw_dice() + if roll_2 == 7: + print(f"{roll_2} - craps. You lose.") + print(f"You lose $ {wager}") + winnings -= wager + elif roll_2 == roll_1: + print(f"{roll_1} - a winner.........congrats!!!!!!!!") + print( + f"{roll_1} at 2 to 1 odds pays you...let me see... {2 * wager} dollars" + ) + winnings += 2 * wager + else: + print(f"{roll_2} - no point. I will roll again") + + m = input(" If you want to play again print 5 if not print 2: ") + if winnings < 0: + print(f"You are now under ${-winnings}") + elif winnings > 0: + print(f"You are now ahead ${winnings}") + else: + print("You are now even at 0") + play_again = m == "5" - m = input(" If you want to play again print 5 if not print 2: ") if winnings < 0: - print(f"You are now under ${-winnings}") + print("Too bad, you are in the hole. Come again.") elif winnings > 0: - print(f"You are now ahead ${winnings}") + print("Congratulations---you came out a winner. Come again.") else: - print("You are now even at 0") - play_again = m == "5" + print("Congratulations---you came out even, not bad for an amateur") -if winnings < 0: - print("Too bad, you are in the hole. Come again.") -elif winnings > 0: - print("Congratulations---you came out a winner. Come again.") -else: - print("Congratulations---you came out even, not bad for an amateur") + +if __name__ == "__main__": + main() diff --git a/33_Dice/python/dice.py b/33_Dice/python/dice.py index c86c4bc4..3aedc5ce 100644 --- a/33_Dice/python/dice.py +++ b/33_Dice/python/dice.py @@ -28,50 +28,54 @@ import random -# We'll track counts of roll outcomes in a 13-element list. -# The first two indices (0 & 1) are ignored, leaving just -# the indices that match the roll values (2 through 12). -freq = [0] * 13 + +def main(): + # We'll track counts of roll outcomes in a 13-element list. + # The first two indices (0 & 1) are ignored, leaving just + # the indices that match the roll values (2 through 12). + freq = [0] * 13 + + # Display intro text + print("\n Dice") + print("Creative Computing Morristown, New Jersey") + print("\n\n") + # "Danny Freidus" + print("This program simulates the rolling of a") + print("pair of dice.") + print("You enter the number of times you want the computer to") + print("'roll' the dice. Watch out, very large numbers take") + print("a long time. In particular, numbers over 5000.") + + still_playing = True + while still_playing: + print("") + n = int(input("How many rolls? ")) + + # Roll the dice n times + for _ in range(n): + die1 = random.randint(1, 6) + die2 = random.randint(1, 6) + roll_total = die1 + die2 + freq[roll_total] += 1 + + # Display final results + print("\nTotal Spots Number of Times") + for i in range(2, 13): + print(" %-14d%d" % (i, freq[i])) + + # Keep playing? + print("") + response = input("Try again? ") + if len(response) > 0 and response.upper()[0] == "Y": + # Clear out the frequency list + freq = [0] * 13 + else: + # Exit the game loop + still_playing = False -# Display intro text -print("\n Dice") -print("Creative Computing Morristown, New Jersey") -print("\n\n") -# "Danny Freidus" -print("This program simulates the rolling of a") -print("pair of dice.") -print("You enter the number of times you want the computer to") -print("'roll' the dice. Watch out, very large numbers take") -print("a long time. In particular, numbers over 5000.") - -still_playing = True -while still_playing: - print("") - n = int(input("How many rolls? ")) - - # Roll the dice n times - for _ in range(n): - die1 = random.randint(1, 6) - die2 = random.randint(1, 6) - roll_total = die1 + die2 - freq[roll_total] += 1 - - # Display final results - print("\nTotal Spots Number of Times") - for i in range(2, 13): - print(" %-14d%d" % (i, freq[i])) - - # Keep playing? - print("") - response = input("Try again? ") - if len(response) > 0 and response.upper()[0] == "Y": - # Clear out the frequency list - freq = [0] * 13 - else: - # Exit the game loop - still_playing = False - +if __name__ == "__main__": + main() ######################################################## # diff --git a/41_Guess/python/guess.py b/41_Guess/python/guess.py index d70ecffb..b1cc8e97 100644 --- a/41_Guess/python/guess.py +++ b/41_Guess/python/guess.py @@ -55,42 +55,47 @@ def limit_set(): return limit, limit_goal -limit, limit_goal = limit_set() -while True: - guess_count = 1 - still_guessing = True - won = False - my_guess = int(limit * random() + 1) +def main(): + limit, limit_goal = limit_set() + while True: + guess_count = 1 + still_guessing = True + won = False + my_guess = int(limit * random() + 1) - print(f"I'm thinking of a number between 1 and {limit}") - print("Now you try to guess what it is.") + print(f"I'm thinking of a number between 1 and {limit}") + print("Now you try to guess what it is.") - while still_guessing: - n = int(input()) + while still_guessing: + n = int(input()) - if n < 0: - break + if n < 0: + break - insert_whitespaces() - if n < my_guess: - print("Too low. Try a bigger answer") - guess_count += 1 - elif n > my_guess: - print("Too high. Try a smaller answer") - guess_count += 1 + insert_whitespaces() + if n < my_guess: + print("Too low. Try a bigger answer") + guess_count += 1 + elif n > my_guess: + print("Too high. Try a smaller answer") + guess_count += 1 + else: + print(f"That's it! You got it in {guess_count} tries") + won = True + still_guessing = False + + if won: + if guess_count < limit_goal: + print("Very good.") + elif guess_count == limit_goal: + print("Good.") + else: + print(f"You should have been able to get it in only {limit_goal}") + insert_whitespaces() else: - print(f"That's it! You got it in {guess_count} tries") - won = True - still_guessing = False + insert_whitespaces() + limit, limit_goal = limit_set() - if won: - if guess_count < limit_goal: - print("Very good.") - elif guess_count == limit_goal: - print("Good.") - else: - print(f"You should have been able to get it in only {limit_goal}") - insert_whitespaces() - else: - insert_whitespaces() - limit, limit_goal = limit_set() + +if __name__ == "__main__": + main() diff --git a/58_Love/python/love.py b/58_Love/python/love.py index 4e4967d3..739fb5dc 100644 --- a/58_Love/python/love.py +++ b/58_Love/python/love.py @@ -71,42 +71,48 @@ DATA = [ # is the line length used by every row ROW_LEN = sum(DATA[0]) -# Display intro text -print("\n Love") -print("Creative Computing Morristown, New Jersey") -print("\n\n") -print("A tribute to the great American artist, Robert Indiana.") -print("His great work will be reproduced with a message of") -print("your choice up to 60 characters. If you can't think of") -print("a message, simple type the word 'love'\n") # (sic) -# Get message from user -message = input("Your message, please? ") -if message == "": - message = "LOVE" +def main(): + # Display intro text + print("\n Love") + print("Creative Computing Morristown, New Jersey") + print("\n\n") + print("A tribute to the great American artist, Robert Indiana.") + print("His great work will be reproduced with a message of") + print("your choice up to 60 characters. If you can't think of") + print("a message, simple type the word 'love'\n") # (sic) -# Repeat the message until we get at least one line's worth -while len(message) < ROW_LEN: - message += message + # Get message from user + message = input("Your message, please? ") + if message == "": + message = "LOVE" -# Display image -print("\n" * 9) -for row in DATA: - print_message = True - position = 0 - line_text = "" - for length in row: - if print_message: - text = message[position : (position + length)] - print_message = False - else: - text = " " * length - print_message = True - line_text += text - position += length - print(line_text) + # Repeat the message until we get at least one line's worth + while len(message) < ROW_LEN: + message += message -print("") + # Display image + print("\n" * 9) + for row in DATA: + print_message = True + position = 0 + line_text = "" + for length in row: + if print_message: + text = message[position : (position + length)] + print_message = False + else: + text = " " * length + print_message = True + line_text += text + position += length + print(line_text) + + print("") + + +if __name__ == "__main__": + main() ###################################################################### diff --git a/63_Name/python/name.py b/63_Name/python/name.py index 5c567d5a..589d97f2 100644 --- a/63_Name/python/name.py +++ b/63_Name/python/name.py @@ -59,4 +59,5 @@ def main(): print("HAVE A NICE DAY!") -main() +if __name__ == "__main__": + main() diff --git a/76_Russian_Roulette/python/russianroulette.py b/76_Russian_Roulette/python/russianroulette.py index 2ace69cd..84960761 100644 --- a/76_Russian_Roulette/python/russianroulette.py +++ b/76_Russian_Roulette/python/russianroulette.py @@ -39,39 +39,43 @@ def parse_input(): return i -initial_message() -while True: - dead = False - n = 0 - print("Type '1' to Spin chamber and pull trigger") - print("Type '2' to Give up") - print("Go") - while not dead: - i = parse_input() +def main(): + initial_message() + while True: + dead = False + n = 0 + print("Type '1' to Spin chamber and pull trigger") + print("Type '2' to Give up") + print("Go") + while not dead: + i = parse_input() - if i == 2: - break + if i == 2: + break - if random() > 0.8333333333333334: - dead = True + if random() > 0.8333333333333334: + dead = True + else: + print("- CLICK -\n") + n += 1 + + if n > NUMBER_OF_ROUNDS: + break + if dead: + print("BANG!!!!! You're Dead!") + print("Condolences will be sent to your relatives.\n\n\n") + print("...Next victim...") else: - print("- CLICK -\n") - n += 1 + if n > NUMBER_OF_ROUNDS: + print("You win!!!!!") + print("Let someone else blow his brain out.\n") + else: + print(" Chicken!!!!!\n\n\n") + print("...Next victim....") - if n > NUMBER_OF_ROUNDS: - break - if dead: - print("BANG!!!!! You're Dead!") - print("Condolences will be sent to your relatives.\n\n\n") - print("...Next victim...") - else: - if n > NUMBER_OF_ROUNDS: - print("You win!!!!!") - print("Let someone else blow his brain out.\n") - else: - print(" Chicken!!!!!\n\n\n") - print("...Next victim....") +if __name__ == "__main__": + main() ######################################################## # Porting Notes diff --git a/77_Salvo/python/salvo.py b/77_Salvo/python/salvo.py index 91919fcb..59e9a6ae 100644 --- a/77_Salvo/python/salvo.py +++ b/77_Salvo/python/salvo.py @@ -489,36 +489,36 @@ def execute_turn(turn): # ###################################### -###################### -# -# main game flow -# -###################### -# initialize the player and computer -# boards -initialize_game() +def main(): + # initialize the player and computer + # boards + initialize_game() -# execute turns until someone wins or we run -# out of squares to shoot + # execute turns until someone wins or we run + # out of squares to shoot -game_over = False -while not game_over: + game_over = False + while not game_over: - # increment the turn - current_turn = current_turn + 1 + # increment the turn + current_turn = current_turn + 1 - print("\n") - print("TURN", current_turn) + print("\n") + print("TURN", current_turn) - # print("computer") - # print_board(computer_board) - # print("player") - # print_board(player_board) + # print("computer") + # print_board(computer_board) + # print("player") + # print_board(player_board) - if execute_turn(first_turn) == 0: - game_over = True - continue - if execute_turn(second_turn) == 0: - game_over = True - continue + if execute_turn(first_turn) == 0: + game_over = True + continue + if execute_turn(second_turn) == 0: + game_over = True + continue + + +if __name__ == "__main__": + main() diff --git a/78_Sine_Wave/python/sinewave.py b/78_Sine_Wave/python/sinewave.py index 5706225b..f5ade637 100644 --- a/78_Sine_Wave/python/sinewave.py +++ b/78_Sine_Wave/python/sinewave.py @@ -24,47 +24,50 @@ import math import time -# Constants -STRINGS = ("Creative", "Computing") # Text to display -MAX_LINES = 160 -STEP_SIZE = 0.25 # Number of radians to increase at each -# line. Controls speed of horizontal -# printing movement. -CENTER = 26 # Controls left edge of "middle" string -DELAY = 0.05 # Amount of seconds to wait between lines + +def main(): + # Constants + STRINGS = ("Creative", "Computing") # Text to display + MAX_LINES = 160 + STEP_SIZE = 0.25 # Number of radians to increase at each + # line. Controls speed of horizontal + # printing movement. + CENTER = 26 # Controls left edge of "middle" string + DELAY = 0.05 # Amount of seconds to wait between lines + + # Display "intro" text + print("\n Sine Wave") + print(" Creative Computing Morristown, New Jersey") + print("\n\n\n\n") + # "REMarkable program by David Ahl" + + string_index = 0 + radians = 0 + width = CENTER - 1 + + # "Start long loop" + for _line_num in range(MAX_LINES): + + # Get string to display on this line + curr_string = STRINGS[string_index] + + # Calculate how far over to print the text + sine = math.sin(radians) + padding = int(CENTER + width * sine) + print(curr_string.rjust(padding + len(curr_string))) + + # Increase radians and increment our tuple index + radians += STEP_SIZE + string_index += 1 + if string_index >= len(STRINGS): + string_index = 0 + + # Make sure the text doesn't fly by too fast... + time.sleep(DELAY) -# Display "intro" text -print("\n Sine Wave") -print(" Creative Computing Morristown, New Jersey") -print("\n\n\n\n") -# "REMarkable program by David Ahl" - - -string_index = 0 -radians = 0 -width = CENTER - 1 - -# "Start long loop" -for _line_num in range(MAX_LINES): - - # Get string to display on this line - curr_string = STRINGS[string_index] - - # Calculate how far over to print the text - sine = math.sin(radians) - padding = int(CENTER + width * sine) - print(curr_string.rjust(padding + len(curr_string))) - - # Increase radians and increment our tuple index - radians += STEP_SIZE - string_index += 1 - if string_index >= len(STRINGS): - string_index = 0 - - # Make sure the text doesn't fly by too fast... - time.sleep(DELAY) - +if __name__ == "__main__": + main() ######################################################## # diff --git a/79_Slalom/python/slalom.py b/79_Slalom/python/slalom.py index 4e361f26..bc68649f 100644 --- a/79_Slalom/python/slalom.py +++ b/79_Slalom/python/slalom.py @@ -160,39 +160,44 @@ def run(): medals["bronze"] += 1 -while True: - gates = ask_int("How many gates does this course have (1 to 25)") - if gates < 1: - print("Try again,") - else: - if gates > 25: - print("25 is the limit.") - break - -pre_run() - -while True: - lvl = ask_int("Rate yourself as a skier, (1=Worst, 3=Best)") - if lvl < 1 or lvl > 3: - print("The bounds are 1-3.") - else: - break - -while True: - run() +def main(): while True: - answer = ask("Do you want to play again?") - if answer == "YES" or answer == "NO": - break + gates = ask_int("How many gates does this course have (1 to 25)") + if gates < 1: + print("Try again,") else: - print('Please type "YES" or "NO"') - if answer == "NO": - break + if gates > 25: + print("25 is the limit.") + break -print("Thanks for the race") -if medals["gold"] > 0: - print(f"Gold medals: {medals['gold']}") -if medals["silver"] > 0: - print(f"Silver medals: {medals['silver']}") -if medals["bronze"] > 0: - print(f"Bronze medals: {medals['bronze']}") + pre_run() + + while True: + lvl = ask_int("Rate yourself as a skier, (1=Worst, 3=Best)") + if lvl < 1 or lvl > 3: + print("The bounds are 1-3.") + else: + break + + while True: + run() + while True: + answer = ask("Do you want to play again?") + if answer == "YES" or answer == "NO": + break + else: + print('Please type "YES" or "NO"') + if answer == "NO": + break + + print("Thanks for the race") + if medals["gold"] > 0: + print(f"Gold medals: {medals['gold']}") + if medals["silver"] > 0: + print(f"Silver medals: {medals['silver']}") + if medals["bronze"] > 0: + print(f"Bronze medals: {medals['bronze']}") + + +if __name__ == "__main__": + main() diff --git a/80_Slots/python/slots.py b/80_Slots/python/slots.py index 6af1bcbd..16495518 100644 --- a/80_Slots/python/slots.py +++ b/80_Slots/python/slots.py @@ -126,27 +126,31 @@ def final_message(profits): print("Collect your winings from the H&M cashier.") -profits = 0 -keep_betting = True +def main(): + profits = 0 + keep_betting = True -initial_message() -while keep_betting: - m = input_betting() - w = spin_wheels() - profits = adjust_profits(w, m, profits) + initial_message() + while keep_betting: + m = input_betting() + w = spin_wheels() + profits = adjust_profits(w, m, profits) - print(f"Your standings are ${profits}") - answer = input("Again?") + print(f"Your standings are ${profits}") + answer = input("Again?") - try: - if not answer[0].lower() == "y": + try: + if not answer[0].lower() == "y": + keep_betting = False + except IndexError: keep_betting = False - except IndexError: - keep_betting = False -final_message(profits) + final_message(profits) +if __name__ == "__main__": + main() + ###################################################################### # # Porting notes diff --git a/81_Splat/python/splat.py b/81_Splat/python/splat.py index 909151e2..357f358e 100644 --- a/81_Splat/python/splat.py +++ b/81_Splat/python/splat.py @@ -293,27 +293,28 @@ def print_header(): ) -# -# Main program. -# +def main(): + print_header() -print_header() - -successful_jumps = [] -while True: - chute_altitude = jump() - if chute_altitude > 0: - # We want the statistics on previous jumps (i.e. not including the - # current jump.) - n_previous_jumps, n_better = jump_stats(successful_jumps, chute_altitude) - successful_jumps.append(chute_altitude) - print_results(n_previous_jumps, n_better) - else: - # Splat! - print("I'LL GIVE YOU ANOTHER CHANCE.") - z = yes_no_input("DO YOU WANT TO PLAY AGAIN") - if not z: - z = yes_no_input("PLEASE") + successful_jumps = [] + while True: + chute_altitude = jump() + if chute_altitude > 0: + # We want the statistics on previous jumps (i.e. not including the + # current jump.) + n_previous_jumps, n_better = jump_stats(successful_jumps, chute_altitude) + successful_jumps.append(chute_altitude) + print_results(n_previous_jumps, n_better) + else: + # Splat! + print("I'LL GIVE YOU ANOTHER CHANCE.") + z = yes_no_input("DO YOU WANT TO PLAY AGAIN") if not z: - print("SSSSSSSSSS.") - break + z = yes_no_input("PLEASE") + if not z: + print("SSSSSSSSSS.") + break + + +if __name__ == "__main__": + main() diff --git a/82_Stars/python/stars.py b/82_Stars/python/stars.py index 6d674908..ab67d9d3 100644 --- a/82_Stars/python/stars.py +++ b/82_Stars/python/stars.py @@ -57,53 +57,57 @@ def get_guess(): return guess -# Display intro text -print("\n Stars") -print("Creative Computing Morristown, New Jersey") -print("\n\n") -# "*** Stars - People's Computer Center, MenloPark, CA" +def main(): + # Display intro text + print("\n Stars") + print("Creative Computing Morristown, New Jersey") + print("\n\n") + # "*** Stars - People's Computer Center, MenloPark, CA" -response = input("Do you want instructions? ") -if response.upper()[0] == "Y": - print_instructions() + response = input("Do you want instructions? ") + if response.upper()[0] == "Y": + print_instructions() -still_playing = True -while still_playing: + still_playing = True + while still_playing: - # "*** Computer thinks of a number" - secret_number = random.randint(1, MAX_NUM) - print("\n\nOK, I am thinking of a number, start guessing.") + # "*** Computer thinks of a number" + secret_number = random.randint(1, MAX_NUM) + print("\n\nOK, I am thinking of a number, start guessing.") - # Init/start guess loop - guess_number = 0 - player_has_won = False - while (guess_number < MAX_GUESSES) and not player_has_won: + # Init/start guess loop + guess_number = 0 + player_has_won = False + while (guess_number < MAX_GUESSES) and not player_has_won: - print("") - guess = get_guess() - guess_number += 1 + print("") + guess = get_guess() + guess_number += 1 - if guess == secret_number: - # "*** We have a winner" - player_has_won = True - print("**************************************************!!!") - print(f"You got it in {guess_number} guesses!!!") + if guess == secret_number: + # "*** We have a winner" + player_has_won = True + print("**************************************************!!!") + print(f"You got it in {guess_number} guesses!!!") - else: - print_stars(secret_number, guess) + else: + print_stars(secret_number, guess) - # End of guess loop + # End of guess loop - # "*** Did not guess in [MAX_GUESS] guesses" - if not player_has_won: - print(f"\nSorry, that's {guess_number} guesses, number was {secret_number}") + # "*** Did not guess in [MAX_GUESS] guesses" + if not player_has_won: + print(f"\nSorry, that's {guess_number} guesses, number was {secret_number}") - # Keep playing? - response = input("\nPlay again? ") - if response.upper()[0] != "Y": - still_playing = False + # Keep playing? + response = input("\nPlay again? ") + if response.upper()[0] != "Y": + still_playing = False +if __name__ == "__main__": + main() + ###################################################################### # # Porting Notes diff --git a/87_3-D_Plot/python/3dplot.py b/87_3-D_Plot/python/3dplot.py index c53e9508..8452f0a4 100644 --- a/87_3-D_Plot/python/3dplot.py +++ b/87_3-D_Plot/python/3dplot.py @@ -11,18 +11,23 @@ def equation(x: float) -> float: return 30 * exp(-x * x / 100) -print(" " * 32 + "3D PLOT") -print(" " * 15 + "CREATIVE COMPUTING MORRISTOWN, NEW JERSEY\n\n\n\n") +def main(): + print(" " * 32 + "3D PLOT") + print(" " * 15 + "CREATIVE COMPUTING MORRISTOWN, NEW JERSEY\n\n\n\n") -for x in range(-300, 315, 15): - x1 = x / 10 - max_column = 0 - y1 = 5 * floor(sqrt(900 - x1 * x1) / 5) - y_plot = [" "] * 80 + for x in range(-300, 315, 15): + x1 = x / 10 + max_column = 0 + y1 = 5 * floor(sqrt(900 - x1 * x1) / 5) + y_plot = [" "] * 80 - for y in range(y1, -(y1 + 5), -5): - column = floor(25 + equation(sqrt(x1 * x1 + y * y)) - 0.7 * y) - if column > max_column: - max_column = column - y_plot[column] = "*" - print("".join(y_plot)) + for y in range(y1, -(y1 + 5), -5): + column = floor(25 + equation(sqrt(x1 * x1 + y * y)) - 0.7 * y) + if column > max_column: + max_column = column + y_plot[column] = "*" + print("".join(y_plot)) + + +if __name__ == "__main__": + main() diff --git a/90_Tower/python/tower_test.py b/90_Tower/python/test_tower.py similarity index 88% rename from 90_Tower/python/tower_test.py rename to 90_Tower/python/test_tower.py index b3e0e2f0..3fa4771b 100644 --- a/90_Tower/python/tower_test.py +++ b/90_Tower/python/test_tower.py @@ -3,7 +3,7 @@ import unittest import tower -class MyTestCase(unittest.TestCase): +class TowerTestCase(unittest.TestCase): def test_something(self): t = tower.Tower() self.assertTrue(t.empty()) @@ -44,9 +44,6 @@ class MyTestCase(unittest.TestCase): t.add(d5) t.add(d3) - f = t.vertical_format(6, 3) - self.assertEqual(f, [" ", "[ 3 ] ", "[ 5 ] "]) - if __name__ == "__main__": unittest.main() diff --git a/90_Tower/python/tower.py b/90_Tower/python/tower.py index 9f41e444..fcca9e96 100644 --- a/90_Tower/python/tower.py +++ b/90_Tower/python/tower.py @@ -44,23 +44,6 @@ class Tower: print(r) -print( - """ -IN THIS PROGRAM, WE SHALL REFER TO DISKS BY NUMERICAL CODE. -3 WILL REPRESENT THE SMALLEST DISK, 5 THE NEXT SIZE, -7 THE NEXT, AND SO ON, UP TO 15. IF YOU DO THE PUZZLE WITH -2 DISKS, THEIR CODE NAMES WOULD BE 13 AND 15. WITH 3 DISKS -THE CODE NAMES WOULD BE 11, 13 AND 15, ETC. THE NEEDLES -ARE NUMBERED FROM LEFT TO RIGHT, 1 TO 3. WE WILL -START WITH THE DISKS ON NEEDLE 1, AND ATTEMPT TO MOVE THEM -TO NEEDLE 3. - -GOOD LUCK! - -""" -) - - class Game: def __init__(self): # use fewer sizes to make debugging easier @@ -144,27 +127,48 @@ class Game: from_tower.add(disk) -game = Game() -while True: - game.print() +def main(): + print( + """ + IN THIS PROGRAM, WE SHALL REFER TO DISKS BY NUMERICAL CODE. + 3 WILL REPRESENT THE SMALLEST DISK, 5 THE NEXT SIZE, + 7 THE NEXT, AND SO ON, UP TO 15. IF YOU DO THE PUZZLE WITH + 2 DISKS, THEIR CODE NAMES WOULD BE 13 AND 15. WITH 3 DISKS + THE CODE NAMES WOULD BE 11, 13 AND 15, ETC. THE NEEDLES + ARE NUMBERED FROM LEFT TO RIGHT, 1 TO 3. WE WILL + START WITH THE DISKS ON NEEDLE 1, AND ATTEMPT TO MOVE THEM + TO NEEDLE 3. - game.take_turn() + GOOD LUCK! - if game.winner(): - print( - "CONGRATULATIONS!!\nYOU HAVE PERFORMED THE TASK IN %s MOVES.\n" - % game.moves() - ) - while True: - yesno = input("TRY AGAIN (YES OR NO)\n") - if yesno.upper() == "YES": - game = Game() - break - elif yesno.upper() == "NO": - print("THANKS FOR THE GAME!\n") - sys.exit(0) - else: - print("'YES' OR 'NO' PLEASE\n") - elif game.moves() > 128: - print("SORRY, BUT I HAVE ORDERS TO STOP IF YOU MAKE MORE THAN 128 MOVES.") - sys.exit(0) + """ + ) + + game = Game() + while True: + game.print() + + game.take_turn() + + if game.winner(): + print( + "CONGRATULATIONS!!\nYOU HAVE PERFORMED THE TASK IN %s MOVES.\n" + % game.moves() + ) + while True: + yesno = input("TRY AGAIN (YES OR NO)\n") + if yesno.upper() == "YES": + game = Game() + break + elif yesno.upper() == "NO": + print("THANKS FOR THE GAME!\n") + sys.exit(0) + else: + print("'YES' OR 'NO' PLEASE\n") + elif game.moves() > 128: + print("SORRY, BUT I HAVE ORDERS TO STOP IF YOU MAKE MORE THAN 128 MOVES.") + sys.exit(0) + + +if __name__ == "__main__": + main()