135 lines
3.7 KiB
Python
135 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 = ['level1.txt', 'level2.txt', 'level3.txt', 'level4.txt', 'level5.txt', 'level6.txt']
|
|||
|
#random.seed()
|
|||
|
main_menu_loop()
|