137 lines
4.0 KiB
Python
137 lines
4.0 KiB
Python
from run import run
|
|
from files import list_levels
|
|
from files import load
|
|
|
|
|
|
def level_menu(levels):
|
|
for i in range(1, len(levels) + 1):
|
|
print(f'{i}. Level {i}')
|
|
print(f'{len(levels) + 1}. Назад')
|
|
|
|
|
|
def level_menu_loop(levels):
|
|
while True:
|
|
level_menu(levels)
|
|
inp = input()
|
|
if inp.isnumeric():
|
|
op = int(inp)
|
|
if 1 <= op <= len(levels) + 1:
|
|
if op <= len(levels):
|
|
# Выбор уровня
|
|
return levels[op - 1]
|
|
else:
|
|
# Выход из меню
|
|
return None
|
|
|
|
else:
|
|
print('Выберите номер из меню!')
|
|
else:
|
|
print('Вводите только цифры!')
|
|
|
|
|
|
# Добавляем подменю для выбора версии игры
|
|
def game_versions_menu():
|
|
## 1 ##
|
|
max_version = 6
|
|
for i in range(1, max_version):
|
|
print(f'{i}. Version {i}')
|
|
|
|
print(f'{max_version}. Назад')
|
|
|
|
|
|
def game_version_loop():
|
|
## 2 ##
|
|
while True:
|
|
game_versions_menu()
|
|
inp = input()
|
|
if inp.isnumeric():
|
|
op = int(inp)
|
|
if 1 <= op <= 6:
|
|
## 3 ##
|
|
if op <= 5:
|
|
return op
|
|
else:
|
|
# Выход из меню
|
|
return 0
|
|
else:
|
|
print('Выберите номер из меню!')
|
|
else:
|
|
print('Вводите только цифры!')
|
|
|
|
|
|
def main_menu():
|
|
print('1. Выбор уровня')
|
|
print('2. Выбор кол-ва запусков')
|
|
print('3. Выбор версии игры') ## 4 ##
|
|
print('4. Запуск')
|
|
print('5. Выход')
|
|
|
|
|
|
def main_menu_loop():
|
|
levels = list_levels()
|
|
level = ''
|
|
runs = 1
|
|
version = 0 ## 5.1 ##
|
|
|
|
while True:
|
|
print(f'Выбранный уровень: {level}')
|
|
print(f'Кол-во запусков: {runs}')
|
|
print(f'Выбранная версия правил: {version}')
|
|
|
|
print()
|
|
|
|
# Вывод меню на экран
|
|
main_menu()
|
|
# Ввод от пользователя
|
|
inp = input()
|
|
|
|
# Валидация ввода пользователя
|
|
if inp.isnumeric():
|
|
op = int(inp)
|
|
if 1 <= op <= 5:
|
|
# Ввод пользователя валидирован, выполняем действие
|
|
if op == 1:
|
|
# Выбор уровня
|
|
ret = level_menu_loop(levels)
|
|
|
|
if ret is not None:
|
|
level = ret
|
|
|
|
elif op == 2:
|
|
# Ввод кол-во запусков
|
|
inp2 = input('Введите кол-во запусков: ')
|
|
if inp2.isnumeric():
|
|
runs = int(inp2)
|
|
else:
|
|
print('Вводите только цифры!')
|
|
|
|
## 5.2 ##
|
|
elif op == 3:
|
|
# Выбор версии игры
|
|
ret = game_version_loop()
|
|
|
|
if ret > 0:
|
|
version = ret
|
|
|
|
elif op == 4:
|
|
# Запуск
|
|
if level in levels:
|
|
if version > 0:
|
|
run(load(level), runs, version) ## 7 ##
|
|
else:
|
|
print('Для начала выберите версию!') ## 8 ##
|
|
else:
|
|
print('Для начала выберите уровень!')
|
|
|
|
else:
|
|
# Завершение программы
|
|
break
|
|
|
|
else:
|
|
print('Выберите номер из меню!')
|
|
else:
|
|
print('Вводите только цифры!')
|
|
|
|
|
|
main_menu_loop()
|