choose_loser() now chooses a loser.

When a game ends it gets restarted.
This commit is contained in:
Steinadler 2020-12-16 17:09:31 +01:00
parent e0712804f5
commit eb90944d6d
2 changed files with 66 additions and 25 deletions

View File

91
game.py
View File

@ -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()