2023-06-27 20:04:17 +02:00
|
|
|
|
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()
|
|
|
|
|
|
|
|
|
|
|
2023-07-19 16:23:15 +02:00
|
|
|
|
levels = ['level_1.txt', 'level_2.txt', 'level_3.txt', 'level_4.txt', 'level_5.txt']
|
2023-06-27 20:04:17 +02:00
|
|
|
|
#random.seed()
|
|
|
|
|
main_menu_loop()
|