68 lines
1.4 KiB
Python
Executable File
68 lines
1.4 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import string
|
|
import subprocess
|
|
import sys
|
|
import os
|
|
|
|
import gui
|
|
|
|
alphabet = "abcdefghijklmnopqrstuvwxyz/,:;[]_-."
|
|
|
|
prefix = "/app/quizzes/"
|
|
results = prefix + "pts.txt"
|
|
|
|
def menu():
|
|
print(gui.menu)
|
|
|
|
choice = int(input("> "))
|
|
if choice != 1 and choice != 2:
|
|
exit(0)
|
|
|
|
return choice
|
|
|
|
def get_user_string(text):
|
|
print(text)
|
|
s = input("> ").lower()
|
|
for c in s:
|
|
if c not in alphabet:
|
|
exit(0)
|
|
return s[:7]
|
|
|
|
def run_quizz(username, category):
|
|
command = f"make run quizz=\"{prefix + category}\" username=\"{username}\""
|
|
os.system(command)
|
|
|
|
def play():
|
|
username = get_user_string(gui.username)
|
|
category = get_user_string(gui.category)
|
|
run_quizz(username, category)
|
|
|
|
# TODO: improve and combine categories scores
|
|
def scoreboard():
|
|
scores = {}
|
|
for line in open(results, 'r').readlines():
|
|
k = line.split(' ')[0]
|
|
v = int(line.strip().split(',')[-1][:-1])
|
|
scores[k] = v
|
|
scores = sorted(scores.items(), reverse=True, key=lambda item: item[1])
|
|
|
|
print(gui.scoreboard_head)
|
|
for i, r in enumerate(scores):
|
|
print(f" {i+1}. {r[0]}\t{r[1]}")
|
|
print(gui.scoreboard_tail)
|
|
|
|
def main():
|
|
while True:
|
|
try:
|
|
choice = menu()
|
|
if choice == 1:
|
|
play()
|
|
elif choice == 2:
|
|
scoreboard()
|
|
except Exception:
|
|
exit()
|
|
|
|
if __name__ == '__main__':
|
|
main()
|