writeups/2024/inso/terminal/main.py

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