130 lines
3.7 KiB
Python
130 lines
3.7 KiB
Python
from Player import Player
|
||
|
||
|
||
def load(file):
|
||
# 1. Загрузить весь файл в строку
|
||
f = open(file, 'r')
|
||
s = f.read()
|
||
|
||
# 2. Заменить все пробелы и переводы строки на "ничего"
|
||
s = s.replace(' ', '')
|
||
s = s.replace('\n', '')
|
||
|
||
# 3. Из полученной строки создать массив, используя разделитель ","
|
||
a = s.split(',')
|
||
|
||
# a - массив строк, в которых хранятся числа
|
||
b = []
|
||
for x in a:
|
||
b.append(int(x))
|
||
# b - массив чисел из а
|
||
|
||
f.close()
|
||
return b
|
||
|
||
|
||
def level_menu():
|
||
for i in range(1, len(levels) + 1):
|
||
print(f'{i}. Level {i}')
|
||
print(f'{len(levels) + 1}. Назад')
|
||
|
||
|
||
def level_menu_loop():
|
||
while True:
|
||
level_menu()
|
||
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 main_menu():
|
||
print('1. Выбор уровня')
|
||
print('2. Выбор кол-ва запусков')
|
||
print('3. Запуск')
|
||
print('4. Выход')
|
||
|
||
|
||
def main_menu_loop():
|
||
level = ''
|
||
runs = 1
|
||
|
||
while True:
|
||
print(f'Выбранный уровень: {level}')
|
||
print(f'Кол-во запусков: {runs}')
|
||
print()
|
||
|
||
# Вывод меню на экран
|
||
main_menu()
|
||
# Ввод от пользователя
|
||
inp = input()
|
||
|
||
# Валидация ввода пользователя
|
||
if inp.isnumeric():
|
||
op = int(inp)
|
||
if 1 <= op <= 4:
|
||
# Ввод пользователя валидирован, выполняем действие
|
||
if op == 1:
|
||
# Выбор уровня
|
||
ret = level_menu_loop()
|
||
|
||
if ret is not None:
|
||
level = ret
|
||
|
||
elif op == 2:
|
||
# Ввод кол-во запусков
|
||
inp2 = input('Введите кол-во запусков: ')
|
||
if inp2.isnumeric():
|
||
runs = int(inp2)
|
||
else:
|
||
print('Вводите только цифры!')
|
||
|
||
elif op == 3:
|
||
# Запуск
|
||
if level in levels:
|
||
run(load(level), runs)
|
||
else:
|
||
print('Для начала выберите уровень!')
|
||
|
||
else:
|
||
# Завершение программы
|
||
break
|
||
|
||
else:
|
||
print('Выберите номер из меню!')
|
||
else:
|
||
print('Вводите только цифры!')
|
||
|
||
|
||
def run(level, runs):
|
||
# Ручной или авто режим
|
||
auto = False
|
||
|
||
# Если больше одного запуска
|
||
if runs > 1:
|
||
# Автоматически включаем авто режим
|
||
auto = True
|
||
|
||
results = []
|
||
|
||
for i in range(runs):
|
||
results.append(game_loop(auto, level))
|
||
|
||
print(f'Average: {sum(results)/runs}')
|
||
print()
|
||
|
||
|
||
levels = ['level_1.txt', 'level_2.txt', 'level_3.txt', 'level_4.txt', 'level_5.txt']
|
||
#random.seed()
|
||
main_menu_loop() |