Minor usability improvements

This commit is contained in:
2022-09-15 10:47:12 +02:00
parent 5ab0d996d2
commit 3e478b8b52
3 changed files with 30 additions and 12 deletions

View File

@@ -12,13 +12,16 @@ def query(text):
return result return result
def query_int(text): def query_int(text, default):
try: try:
ans = query(text) ans = query(text)
if ans or default is None:
return int(ans) return int(ans)
else:
return default
except ValueError: except ValueError:
droid.makeToast("Please enter a valid number!") droid.makeToast("Please enter a valid number!")
return query_int(text) return query_int(text, default)
def query_yes_no(question): def query_yes_no(question):

21
main.py
View File

@@ -62,7 +62,7 @@ def print_standings(players, guesses, results):
# Remove invisivle characters for padding calculation # Remove invisivle characters for padding calculation
clean = text clean = text
for color in COLORS.values(): for color in COLORS.values():
clean = clean.replace(color, '') clean = clean.replace(color, "")
pad = " " * (width - len(clean) - 2) pad = " " * (width - len(clean) - 2)
print(f" {pad}{text} |", end="") print(f" {pad}{text} |", end="")
@@ -110,11 +110,12 @@ def main():
for j in range(i, i + len(players)): for j in range(i, i + len(players)):
player = players[j % len(players)] player = players[j % len(players)]
if j == i: if j == i:
guess = ui.query_int(f"{player}, wie viele Stiche machst du?") guess = ui.query_int(f"{player}, wie viele Stiche machst du?", None)
else: else:
not_allowed = i - guess_sum not_allowed = i - guess_sum
guess = ui.query_int( guess = ui.query_int(
f"{player}?{f' ({not_allowed} ist nicht erlaubt)' if j == i + len(players) - 1 and i > 3 and i - guess_sum >= 0 else ''}" f"(Summe: {guess_sum}) {player}?{f' ({not_allowed} ist nicht erlaubt)' if j == i + len(players) - 1 and i > 3 and i - guess_sum >= 0 else ''}",
None,
) )
guesses[player] += [guess] guesses[player] += [guess]
guess_sum += guess guess_sum += guess
@@ -140,10 +141,13 @@ def main():
player = players[j % len(players)] player = players[j % len(players)]
if j == i: if j == i:
result = ui.query_int( result = ui.query_int(
f"{player}, wie viele Stiche hast du von {guesses[player][-1]} gemacht?" f"{player}, wie viele Stiche hast du von {guesses[player][-1]} gemacht? [{guesses[player][-1]}]",
guesses[player][-1],
) )
else: else:
result = ui.query_int(f"{player}? (von {guesses[player][-1]})") result = ui.query_int(
f"{player}? [{guesses[player][-1]}]", guesses[player][-1]
)
results[player] += [result] results[player] += [result]
if j != i + len(players) - 1: if j != i + len(players) - 1:
@@ -176,6 +180,9 @@ def main():
) )
) )
print("\n\n---------------RESULTS---------------")
print("-------------------------------------\n")
print_standings(players, guesses, results)
print() print()
place = 0 place = 0
count = 1 count = 1
@@ -184,7 +191,9 @@ def main():
if result != last: if result != last:
place += count place += count
count = 0 count = 0
print(f"{place}. {player} mit {result} Punkten{' WOOOHOO!!' if place == 1 else ''}") print(
f"{place}. {player} mit {result} Punkten{' WOOOHOO!!' if place == 1 else ''}"
)
count += 1 count += 1
last = result last = result

View File

@@ -1,14 +1,20 @@
from typing import Optional
def query(text): def query(text):
return input(f"{text} \n> ") return input(f"{text} \n> ")
def query_int(text): def query_int(text: str, default: Optional[int] = None):
try: try:
ans = query(text) ans = query(text)
if ans or default is None:
return int(ans) return int(ans)
else:
return default
except ValueError: except ValueError:
print("Please enter a valid number!") print("Please enter a valid number!")
return query_int(text) return query_int(text, default)
def query_yes_no(question, default="yes"): def query_yes_no(question, default="yes"):