This commit is contained in:
Steinadler 2020-12-18 14:33:14 +01:00
parent 8ec1091199
commit 30389951b0
4 changed files with 51 additions and 36 deletions

View File

@ -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.")

70
game.py
View File

@ -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:

View File

@ -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.\

View File

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