From eb90944d6d906f0223ae5057cf2c51fe37b29391 Mon Sep 17 00:00:00 2001 From: Steinadler Date: Wed, 16 Dec 2020 17:09:31 +0100 Subject: [PATCH] choose_loser() now chooses a loser. When a game ends it gets restarted. --- 16-dead-fun.py | 0 game.py | 91 ++++++++++++++++++++++++++++++++++++-------------- 2 files changed, 66 insertions(+), 25 deletions(-) delete mode 100644 16-dead-fun.py diff --git a/16-dead-fun.py b/16-dead-fun.py deleted file mode 100644 index e69de29..0000000 diff --git a/game.py b/game.py index dabdf21..8addbbf 100644 --- a/game.py +++ b/game.py @@ -13,48 +13,43 @@ def check_special_score(score, p): """ if score == 9 and p[1]: - print("9 erreicht. Ende.") return True, score elif score == 10 and p[1]: print("10 erreicht. Noch ein letzter Wurf.") - time.sleep(3) + time.sleep(1) r = roll_dice() - print(r) + print(f"Sie würfeln {r}.") + if score + sum(r) == 16: + print(f"Sie haben insgesamt {score} gewürfelt und damit verloren.\n") + return False, "restart" return True, score + sum(r) elif score >= 16 and p[1]: - print("Sie haben 16 erreicht/überschritten.") - return True, score + print(f"Sie haben insgesamt {score} gewürfelt und damit verloren.\n") + return False, "restart" elif score == 9 and not p[1]: return True, score elif score == 10 and not p[1]: + print(f"{p[0]} hat insgesamt 10 gewürfelt und muss noch einmal würfeln.") r = roll_dice() + print(f"{p[0]} würfelt {r}.") + if score + sum(r) == 16: + print(f"{p[0]} habt insgeamt {score} gewürfelt und damit verloren.\n") + return False, "restart" return True, score + sum(r) elif score >= 16 and not p[1]: - print(str(p[0]) + " hat 16 erreicht/überschritten.") - return True, score + print(f"{p[0]} hat {score} gewürfelt.") + print(f"{p[0]} hat damit verloren!\n") + return False, "restart" else: return False, score -def welcome(): +def choose_loser(all_results): """ + :param all_results: :return: """ - name = input("Wie heißen Sie?") - player_number = input("Gegen wie viele Personen wollen Sie spielen?") - - players = [] - human = (name, True) - players.append(human) - - for p in range(int(player_number)): - players.append(("P" + str(p), False)) - - sixteen_is_dead(players) - - -def choose_loser(all_results): loser_score = 15 losers = [] @@ -66,6 +61,15 @@ def choose_loser(all_results): if r["final_score"] == loser_score: losers.append(r["player"]) + loser_string = "Die folgenden Spieler haben verloren: " + losers = ",".join(losers) + loser_string = loser_string + losers + + print(loser_string) + + main() + + def roll_dice(number=1, faces=6, seed=None): """ Throws a certain number of dice with a certain number of faces. @@ -104,11 +108,16 @@ def sixteen_is_dead(players): while button != "n": current_roll = roll_dice() print("Sie haben " + str(current_roll) + " gewürfelt!") + player_score += sum(current_roll) - print("Damit haben Sie insgesamt " + str(player_score) + " gewürfelt.") button, player_score = check_special_score(player_score, p) + if not button and player_score == "restart": + main() + + print("Damit haben Sie insgesamt " + str(player_score) + " gewürfelt.") + if player_score >= 16: print("Sie haben verloren!") sys.exit() @@ -123,17 +132,49 @@ def sixteen_is_dead(players): else: # AI ai_score = 0 - while ai_score < 9: # roll until score at least 9 + while ai_score < 13: # roll until score at least 9 current_roll = roll_dice() + print(f"{p[0]} würfelt {current_roll}.") + ai_score += sum(current_roll) button, ai_score = check_special_score(ai_score, p) + if not button and ai_score == "restart": + main() + + print(f"{p[0]} hat damit insgesamt {ai_score} gewürfelt.") + if button: break all_results.append({"player": p[0], "final_score": ai_score}) + else: + print(all_results) + choose_loser(all_results) + + +def main(): + """ + + :return: + """ + name = "" + while not name: + name = input("Wie heißen Sie?") + print(f"Willkommen, {name}!") + player_number = input("Gegen wie viele Personen wollen Sie spielen?") + # TODO: player_number check for integer + + players = [] + human = (name, True) + players.append(human) + + for p in range(int(player_number)): + players.append(("P" + str(p), False)) + + sixteen_is_dead(players) if __name__ == "__main__": - welcome() + main()