diff --git a/main.py b/main.py index 1af2f02..ffefad1 100644 --- a/main.py +++ b/main.py @@ -148,41 +148,46 @@ def check_value(throw: str) -> bool: return hodnota -def add_players(iter=False): - global players - global pointer - global first - global final_score +def add_players(): + global pointer, first, final_score - if not iter: - var = "prvního hráče" - else: - var = "dalšího hráče nebo [x] pro ukončení zadávání hráčů" - - inp = input(f"Zadejte jméno {var}: ") + while True: + inp = input("Zadejte jméno prvního hráče: ") + if inp == "": + print("Jméno nemůže být prázdné.") + else: + players[inp] = [] + aggr[inp] = 0 + pointer = inp + first = inp + print(f"Do seznamu přidáno jméno {inp}.") + break - if inp == "x": - if not iter: - add_players() - inp = input("Zadejte finální skóre (nechte prázdné pro výchozích 10 000): ") - if inp != "": - inp = int(inp) - final_score = inp - - elif inp == "": - print("Jméno nemůže být prázdné.") - add_players(iter) - else: - if inp in players: + while True: + inp = input("Zadejte jméno dalšího hráče nebo [x] pro ukončení zadávání hráčů: ") + if inp == "": + print("Jméno nemůže být prázdné.") + elif inp == "x": + break + elif inp in players: print("Zadávejte, prosím, unikátní jména.") else: players[inp] = [] aggr[inp] = 0 print(f"Do seznamu přidáno jméno {inp}.") - if not iter: - pointer = inp - first = inp - add_players(True) + + while True: + inp = input("Zadejte finální skóre (nechte prázdné pro výchozích 10 000): ") + if inp != "": + try: + inp = int(inp) + final_score = inp + except ValueError: + print("Zadejte prosím platnou číselnou hodnotu.") + else: + break + else: + break def check_win() -> str: over_limit = {} @@ -209,53 +214,53 @@ def check_win() -> str: return winner def game(data: tuple): - if data[0] == "count": - count = data[1] - th = data[2] - if(th == ""): - th = throw(count) - clear() - print(f"Vítězné skóre: {final_score}.") - print(f"Na tahu je {pointer} ({aggr[pointer]}).") - print(show_throw(th)) - if not check_value(th) and data[2] == "" and count != 0: - global score - score = 0 - input("Oh no... anyway.") - data = evaluate("k", count, th) - game(data) - else: - if count == 0: - count = 6 - msg = ("Jakou akci chcete provést?\n" - " - Zadejte kombinaci kostek k ponechání (dojde k jejich vyhodnocení): [pozice kostek] (např. 1 nebo 34 nebo 123456).\n" - " - Hodit znovu: [h].\n" - f" - Ukončit hod a ponechat si skóre z tohoto hodu ({score}): [k].\n" - ) - inp = input(msg) - data = evaluate(inp, count, th) - game(data) - - elif data[0] == "msg": - if data[1] == "ER01" or data[1] == "ER02" or data[1] == "ER03": - msg = data[2] - count = data[3] - th = data[4] + while True: + if data[0] == "count": + count = data[1] + th = data[2] + if(th == ""): + th = throw(count) clear() - inp = input(msg) - data = evaluate(inp, count, th) - game(data) - else: - msg = data[1] - print(msg) - - elif data[0] == "win": - winner = data[1] - score = data[2] + print(f"Vítězné skóre: {final_score}.") + print(f"Na tahu je {pointer} ({aggr[pointer]}).") + print(show_throw(th)) + if not check_value(th) and data[2] == "" and count != 0: + global score + score = 0 + input("Oh no... anyway.") + data = evaluate("k", count, th) + else: + if count == 0: + count = 6 + msg = ("Jakou akci chcete provést?\n" + " - Zadejte kombinaci kostek k ponechání (dojde k jejich vyhodnocení): [pozice kostek] (např. 1 nebo 34 nebo 123456).\n" + " - Hodit znovu: [h].\n" + f" - Ukončit hod a ponechat si skóre z tohoto hodu ({score}): [k].\n" + ) + inp = input(msg) + data = evaluate(inp, count, th) - clear() - print(f"Vítězem se stává {winner} s {score} body!") - print("Díky za hru a zase příště.") + elif data[0] == "msg": + if data[1] == "ER01" or data[1] == "ER02" or data[1] == "ER03": + msg = data[2] + count = data[3] + th = data[4] + clear() + inp = input(msg) + data = evaluate(inp, count, th) + else: + msg = data[1] + print(msg) + break + + elif data[0] == "win": + winner = data[1] + score = data[2] + + clear() + print(f"Vítězem se stává {winner} s {score} body!") + print("Díky za hru a zase příště.") + break def main(): clear()