Тут немного доработанный код нашей игры «Домовой».
Я добавил очистку экрана и цветной вывод в консоль.
import random
import time
import subprocess
import platform
# Ребята, тут я назначаю цвета для надписей, чтобы был цветной вывод!
RESET = "\033[0m" # Сброс цвета
RED = "\033[91m" # Красный
GREEN = "\033[92m" # Зеленый
YELLOW = "\033[93m" # Желтый
# Эта функция очищает экран консоли! Для красоты =)
def ClearScreen():
command = 'cls' if platform.system() == 'Windows' else 'clear'
subprocess.run(command, shell=True)
TASK_POOL = [
"Убрать квартиру",
"Проверить трубы",
"Напугать жильцов",
"Покормить собаку"
]
PLACES_POOL = [100,101,102,103,104,105]
day = []
def GenerateDay():
day = []
placePool = [ PLACES_POOL[random.randint(0,len(PLACES_POOL)-1)] for i in range(random.randint(3,7)) ]
for place in placePool:
day.append( { place: TASK_POOL[ random.randint(0, len(TASK_POOL) - 1)] })
return day
def Timer(func):
def wrapper(*args, **kwargs):
startTime = time.time()
result = func(*args, **kwargs)
endTime = time.time()
if(endTime - startTime > 10):
print(f"{GREEN}Время выполнения: {endTime - startTime} секунд{RESET}")
return result
return wrapper
def PrintDay(day):
for tasknplace in day:
for place, task in tasknplace.items():
print(f"Задача: {task}, квартира {place}")
def startDay():
global day
if len(day) != 0:
print(f"{RED}Так-то день уже начался!{RESET}")
return
day = GenerateDay()
ClearScreen()
print(f"{YELLOW}Задачи были сгенерированы! Приступайте к выполнению!{RESET}")
def CompleteTask(place, task):
global day
if {place:task} in day:
day.remove({place:task})
ClearScreen()
print(f"{GREEN}Задание \"{task}\" выполнено!{RESET}")
else:
print(f"{RED}Ошибка! Нет такого задания!{RESET} ")
print(f"{YELLOW}Осталось заданий: {len(day)}{RESET}")
@Timer
def CompleteDay():
global day
if len(day) == 0:
ClearScreen()
print(f"{RED}День ещё не начался!{RESET}")
return
while len(day) != 0:
PrintDay(day)
try:
place,task = input("Введите через запятую квартиру и задачу: ").split(",")
place = int(place.strip())
except Exception as e:
print(f"{RED}Неверное значение: {e}{RESET}")
continue
CompleteTask(place, task.strip())
ClearScreen()
print(f"{GREEN}День завершён...{RESET}")
methods = {
1 : ["Начать день", startDay],
2 : ["Выполнить задачи", CompleteDay],
3 : ["Выйти", lambda:exit(0)]
}
while True:
for method in methods.keys():
print(f"{method}. {methods[method][0]}")
try:
choice = int(input("Выберите пункт меню: "))
if choice not in methods.keys():
continue
methods[choice][1]()
except Exception as e:
print(f"{RED}Неверный ввод! Будь внимательнее! {e}{RESET}")