Add android ui
This commit is contained in:
62
wizard.py
62
wizard.py
@@ -1,57 +1,17 @@
|
||||
import os
|
||||
|
||||
try:
|
||||
import android_ui as ui
|
||||
except ImportError:
|
||||
import terminal_ui as ui
|
||||
|
||||
MIN_CELL_WIDTH = 15
|
||||
|
||||
|
||||
def query(text):
|
||||
return input(f"{text} \n> ")
|
||||
|
||||
|
||||
def query_int(text):
|
||||
try:
|
||||
ans = query(text)
|
||||
return int(ans)
|
||||
except ValueError:
|
||||
print("Please enter a valid number!")
|
||||
return query_int(text)
|
||||
|
||||
|
||||
def clear():
|
||||
os.system("cls" if os.name in ("nt", "dos") else "clear")
|
||||
|
||||
|
||||
def query_yes_no(question, default="yes"):
|
||||
"""Ask a yes/no question via raw_input() and return their answer.
|
||||
|
||||
https://stackoverflow.com/questions/3041986/apt-command-line-interface-like-yes-no-input
|
||||
|
||||
"question" is a string that is presented to the user.
|
||||
"default" is the presumed answer if the user just hits <Enter>.
|
||||
It must be "yes" (the default), "no" or None (meaning
|
||||
an answer is required of the user).
|
||||
|
||||
The "answer" return value is True for "yes" or False for "no".
|
||||
"""
|
||||
valid = {"yes": True, "y": True, "ye": True, "no": False, "n": False}
|
||||
if default is None:
|
||||
prompt = " [y/n] "
|
||||
elif default == "yes":
|
||||
prompt = " [Y/n] "
|
||||
elif default == "no":
|
||||
prompt = " [y/N] "
|
||||
else:
|
||||
raise ValueError("invalid default answer: '%s'" % default)
|
||||
|
||||
while True:
|
||||
choice = query(question + prompt).lower()
|
||||
if default is not None and choice == "":
|
||||
return valid[default]
|
||||
elif choice in valid:
|
||||
return valid[choice]
|
||||
else:
|
||||
print("Please respond with 'yes' or 'no' (or 'y' or 'n').")
|
||||
|
||||
|
||||
def remove_line(d):
|
||||
for key in d.keys():
|
||||
del d[key][-1]
|
||||
@@ -98,7 +58,7 @@ def main():
|
||||
clear()
|
||||
print("Welcome! This is WiZaRδ!\n")
|
||||
|
||||
players = [name.strip() for name in query("Enter Player Names (separated by comma)").split(",")]
|
||||
players = [name.strip() for name in ui.query("Enter Player Names (separated by comma)").split(",")]
|
||||
guesses = {player: [] for player in players}
|
||||
results = {player: [] for player in players}
|
||||
|
||||
@@ -118,10 +78,10 @@ def main():
|
||||
guess_sum = 0
|
||||
for j in range(i, i + len(players)):
|
||||
player = players[j % len(players)]
|
||||
guess = query_int(f"{player}, enter your guess{f' (not {i - guess_sum})' if j == i + len(players) - 1 and i > 3 else ''}!")
|
||||
guess = ui.query_int(f"{player}, enter your guess{f' (not {i - guess_sum})' if j == i + len(players) - 1 and i > 3 else ''}!")
|
||||
guesses[player] += [guess]
|
||||
guess_sum += guess
|
||||
if not query_yes_no("Reenter guesses?", default="no"):
|
||||
if not ui.query_yes_no("Reenter guesses?"):
|
||||
break
|
||||
else:
|
||||
remove_line(guesses)
|
||||
@@ -129,15 +89,16 @@ def main():
|
||||
# PRINT STANDINGS
|
||||
print()
|
||||
print_standings(players, guesses, results)
|
||||
input("\nPress enter to continue...")
|
||||
|
||||
# INPUT RESULTS
|
||||
print()
|
||||
while True:
|
||||
for j in range(i, i + len(players)):
|
||||
player = players[j % len(players)]
|
||||
result = query_int(f"{player}, how many tricks did you take?")
|
||||
result = ui.query_int(f"{player}, how many tricks did you take?")
|
||||
results[player] += [result]
|
||||
if not query_yes_no("Reenter results?", default="no"):
|
||||
if not ui.query_yes_no("Reenter results?"):
|
||||
break
|
||||
else:
|
||||
remove_line(results)
|
||||
@@ -145,6 +106,7 @@ def main():
|
||||
# PRINT STANDINGS
|
||||
print()
|
||||
print_standings(players, guesses, results)
|
||||
input("\nPress enter to continue...")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
Reference in New Issue
Block a user