diff --git a/clean_input.py b/clean_input.py index 2a39697..2256641 100644 --- a/clean_input.py +++ b/clean_input.py @@ -15,7 +15,6 @@ def io_str(message: str, options: list) -> str: if i in options: return i - break else: if i == "q": @@ -35,17 +34,15 @@ def io_int(message: str) -> int: if unfiltered_input == "q": print("--------------------------\nSpiel wird beendet...\n--------------------------") sys.exit() - #elif unfiltered_input == "r": - #print("--------------------------\nSpiel wird neu gestartet...\n--------------------------") - #game.main() #DAS FUNKTIONIERT NOCH NICHT + elif unfiltered_input == "r": + print("--------------------------\nSpiel wird neu gestartet...\n--------------------------") + game.main() # DOCH TUT ES try: i = int(unfiltered_input) if i >= 1: return i - print("deine Zahl ist", i) - break else: print('Bitte gib eine ganze Zahl größer als 0 ein. ') @@ -55,5 +52,5 @@ def io_int(message: str) -> int: #testing -io_int("Bitte gib eine Zahl ein.") +#io_int("Bitte gib eine Zahl ein.") diff --git a/game.py b/game.py index 3096202..5681502 100644 --- a/game.py +++ b/game.py @@ -1,14 +1,21 @@ -"""game""" +"""This is the main module of the game 16-is-dead. +Main functionality and calculations are handled here. +""" + +__author__ = "" +__credits__ = "" +__email__ = "" import random import time -# import user_interface.user_interface as ui -import clean_input as ci +import sys +import user_interface as ui +import clean_input def check_special_score(score, p): """ - Checks if player of AI have a score of 9, 10 or >=16. + Checks if player or AI have a score of 9, 10 or >=16. If a score is >=16, 'restart' gets returned and the game is immediately over. Otherwise the score is returned. @@ -27,9 +34,11 @@ def check_special_score(score, p): print("Sie haben 10 erreicht. Noch ein letzter Wurf...") time.sleep(1) r = roll_dice() + ui.dice_animation() + ui.pling(r) print(f"Sie würfeln {r}.") if score + sum(r) == 16: - print(f"Sie haben insgesamt {score} gewürfelt und damit verloren.\n") + print(f"Sie haben insgesamt {score + sum(r)} gewürfelt und damit verloren.\n") return False, "restart" return True, score + sum(r) elif score >= 16 and p[1]: # player has too much @@ -72,16 +81,19 @@ def choose_loser(all_results): if r["final_score"] == loser_score: losers.append(r["player"]) - loser_string = "Die folgenden Spieler haben verloren: " + loser_string = "\nDie folgenden Spieler haben verloren: " losers = ",".join(losers) loser_string = loser_string + losers print(loser_string) - main() + ui.the_end() + + clean_input.io_str("Wollen Sie noch eine Runde spielen? Drücken Sie 'r'" + " für eine neue Runde oder 'q' zum Beenden. ", []) -def roll_dice(number=1, faces=6, seed=None): +def roll_dice(number=1, faces=6, seed=3.8): """ Throws a certain number of dice with a certain number of faces. @@ -96,7 +108,6 @@ def roll_dice(number=1, faces=6, seed=None): results = [] for n in range(number): - # ui.dice_animation() result = random.randint(1, faces) results.append(result) @@ -117,11 +128,13 @@ def sixteen_is_dead(players): for p in players: if p[1]: # human player - button = input("Sie sind an der Reihe!") + button = clean_input.io_str("Sie sind an der Reihe!", ["", "n"]) player_score = 0 while button != "n": current_roll = roll_dice() + ui.dice_animation() + ui.pling(current_roll) print("Sie haben " + str(current_roll) + " gewürfelt!") player_score += sum(current_roll) @@ -133,25 +146,25 @@ def sixteen_is_dead(players): print("Damit haben Sie insgesamt " + str(player_score) + " gewürfelt.") - # if player_score >= 16: - # print("Sie haben verloren!") - # sys.exit() - if button: break - button = ci.io("Wollen Sie weiterwürfeln? ",["", "n"]) - # button = input("Wollen Sie weiterwürfeln?") + button = clean_input.io_str("Wollen Sie weiterwürfeln? ", ["", "n"]) all_results.append({"player": p[0], "final_score": player_score}) else: # AI + print("Nächster Spieler...") ai_score = 0 + time.sleep(1.5) + while ai_score < 13: # roll until score at least 12 current_roll = roll_dice() print(f"{p[0]} würfelt {current_roll}.") + time.sleep(1) + ai_score += sum(current_roll) button, ai_score = check_special_score(ai_score, p) @@ -165,8 +178,8 @@ def sixteen_is_dead(players): break all_results.append({"player": p[0], "final_score": ai_score}) + else: - print(all_results) choose_loser(all_results) @@ -179,23 +192,26 @@ def main(): """ with open("player_welcome_message", "r", encoding="utf8") as f: welcome = "" - for l in f.readlines(): - welcome += l - # print(welcome) + for line in f.readlines(): + welcome += line + eval(welcome) name = "" while not name: - name = input("Wie heißen Sie? ") + name = input("Wie heißen Sie? ") + if name == 'r': + main() + elif name == 'q': + ui.the_end() + sys.exit() + else: + pass print(f"Willkommen, {name}!") player_number = 0 while not player_number: - try: - player_number = int(input("Gegen wie viele Personen wollen Sie spielen? ")) - except: - print("Ihre Eingabe war nicht korrekt. Bitte versuchen Sie es nochmal. ") - # TODO: player_number check for integer + player_number = clean_input.io_int("Gegen wie viele Personen wollen Sie spielen? ") players = [] human = (name, True) @@ -209,3 +225,5 @@ def main(): if __name__ == "__main__": main() + +# Tests: diff --git a/player_welcome_message b/player_welcome_message index b7d1d7d..1dbd1cb 100644 --- a/player_welcome_message +++ b/player_welcome_message @@ -1,6 +1,6 @@ print('Willkommen im vituellen Kneipenspiel "16 ist tot". \ Jedoch kommt mit dem Rumhocken in Kneipen \ - der gewisse Haken, dass jemand die Runde bezahlen muss.\ +der gewisse Haken, dass jemand die Runde bezahlen muss.\ Dies und nichts weniger steht hier auf dem Spiel!\n\n \ --------------------------REGELN-------------------------- \n \ Jede Spielerin würfelt die Runde so oft sie will mit einem 6-seitigen Würfel.\ diff --git a/user_interface.py b/user_interface.py index 7852788..60a77d5 100644 --- a/user_interface.py +++ b/user_interface.py @@ -46,7 +46,7 @@ def pling(current_roll): if line[0] == '#': clear() print(scan_lines[:-2]) - time.sleep(1) + time.sleep(0.5) scan_lines = "" #for item in animations: @@ -60,4 +60,4 @@ def the_end(): #dice_animation() #for i in range(1,7): #pling(i) -the_end() +#the_end()