Change project structure
This commit is contained in:
parent
80be880558
commit
24411632ab
186
LaddersV1.py
186
LaddersV1.py
|
@ -1,186 +0,0 @@
|
||||||
import random
|
|
||||||
from Player import Player
|
|
||||||
|
|
||||||
|
|
||||||
class LaddersV1():
|
|
||||||
|
|
||||||
def dice(self):
|
|
||||||
diced = random.randint(1, 6)
|
|
||||||
print(f'{diced} was diced')
|
|
||||||
return diced
|
|
||||||
|
|
||||||
def move(self, player, steps, field):
|
|
||||||
# Алгоритм действий такой:
|
|
||||||
|
|
||||||
# сначала увеличиваем позицию игрока на кол-во шагов.
|
|
||||||
player.position += steps
|
|
||||||
|
|
||||||
if player.position >= len(field):
|
|
||||||
player.position = len(field) - 1
|
|
||||||
|
|
||||||
# Затем проверяем, нет ли особых действий на клетке, на которую попал игрок.
|
|
||||||
cell = field[player.position]
|
|
||||||
if cell > 0:
|
|
||||||
# Если есть, то либо перемещаем игрока на новую позицию, либо выставляем свойство skip.
|
|
||||||
if cell == player.position:
|
|
||||||
# Пропусти следующий ход!
|
|
||||||
player.skip = True
|
|
||||||
else:
|
|
||||||
player.position = cell
|
|
||||||
|
|
||||||
def draw(self, field, players):
|
|
||||||
for i in range(0, len(field), 10):
|
|
||||||
sub = field[i:i+10]
|
|
||||||
line = ''
|
|
||||||
|
|
||||||
for j in range(len(sub)):
|
|
||||||
e = sub[j]
|
|
||||||
pos = i + j
|
|
||||||
|
|
||||||
player_found = False
|
|
||||||
|
|
||||||
for player_index in range(len(players)):
|
|
||||||
pl = players[player_index]
|
|
||||||
if pl.position == pos:
|
|
||||||
line += pl.color[:2]
|
|
||||||
player_found = True
|
|
||||||
break
|
|
||||||
|
|
||||||
if not player_found:
|
|
||||||
if 0 <= e < 10:
|
|
||||||
line += ' ' + str(e)
|
|
||||||
else:
|
|
||||||
line += str(e)
|
|
||||||
|
|
||||||
line += ' '
|
|
||||||
print(line)
|
|
||||||
|
|
||||||
def game_loop(self, auto, field):
|
|
||||||
random.seed()
|
|
||||||
|
|
||||||
exit_game = False
|
|
||||||
stop_game = False
|
|
||||||
winner = None
|
|
||||||
result = 0
|
|
||||||
|
|
||||||
# Инициализируем список игроков
|
|
||||||
players = [Player("red"), Player("green"), Player("blue"), Player("yellow")]
|
|
||||||
|
|
||||||
if not auto:
|
|
||||||
# Изначально вывести пустое поле без игроков
|
|
||||||
self.draw(field, players)
|
|
||||||
|
|
||||||
# Игровой цикл (бесконечный)
|
|
||||||
while True:
|
|
||||||
|
|
||||||
# Если дана команда выйти из игры
|
|
||||||
if exit_game:
|
|
||||||
if not auto:
|
|
||||||
# Рисуем поле
|
|
||||||
self.draw(field, players)
|
|
||||||
|
|
||||||
# Вывод информации
|
|
||||||
print("Игра прервана")
|
|
||||||
|
|
||||||
# Сохранить результат
|
|
||||||
result = -1
|
|
||||||
break
|
|
||||||
|
|
||||||
# Если у игры выявлен победитель
|
|
||||||
if winner is not None:
|
|
||||||
if not auto:
|
|
||||||
# Нарисовать поле
|
|
||||||
self.draw(field, players)
|
|
||||||
|
|
||||||
# Вывести победителя
|
|
||||||
print((f'{winner.color} is winner'))
|
|
||||||
print(f'moves of winner are {winner.dices}')
|
|
||||||
|
|
||||||
# Сохранить результат
|
|
||||||
result = len(winner.dices)
|
|
||||||
|
|
||||||
break
|
|
||||||
|
|
||||||
# Если выходим по причине зацикливания
|
|
||||||
if stop_game:
|
|
||||||
if not auto:
|
|
||||||
# Рисуем поле
|
|
||||||
self.draw(field, players)
|
|
||||||
|
|
||||||
# Вывод информации
|
|
||||||
print("Игра прервана по причине зацикливания")
|
|
||||||
|
|
||||||
# Сохранить результат
|
|
||||||
result = -1
|
|
||||||
break
|
|
||||||
|
|
||||||
# Выполняет действия для каждого игрока
|
|
||||||
for p in players:
|
|
||||||
|
|
||||||
# Если игрок должен пропустить ход
|
|
||||||
if p.skip:
|
|
||||||
|
|
||||||
if not auto:
|
|
||||||
# Вывести на экран информацию о том, что он пропускает ход
|
|
||||||
print(f'{p.color} skips')
|
|
||||||
|
|
||||||
# Не пропускать СЛЕДУЮЩИЙ ход
|
|
||||||
p.skip = False
|
|
||||||
|
|
||||||
# Если ход пропускать не надо
|
|
||||||
else:
|
|
||||||
if not auto:
|
|
||||||
# Выводит текст на экран и ждет ввода
|
|
||||||
inp = input(f'{p.color} to move')
|
|
||||||
else:
|
|
||||||
inp = ''
|
|
||||||
|
|
||||||
# Обработка ввода
|
|
||||||
# Если пользователь ввел exit или quit
|
|
||||||
if inp == 'exit' or inp == 'quit':
|
|
||||||
# Даем команду выйти из игры
|
|
||||||
exit_game = True
|
|
||||||
|
|
||||||
# Прервать цикл обработки игроков
|
|
||||||
break
|
|
||||||
|
|
||||||
# Бросаем кубик с возможностью повторить
|
|
||||||
repeat = True
|
|
||||||
while repeat:
|
|
||||||
# Бросает кубик один раз
|
|
||||||
diced = self.dice()
|
|
||||||
|
|
||||||
# Двигаем игрока на кол-во шагов с кубика
|
|
||||||
# Возвращает True, если нужно повторить ход
|
|
||||||
repeat = self.move(p, diced, field)
|
|
||||||
|
|
||||||
# Сохраняем значение кубика
|
|
||||||
p.dices.append(diced)
|
|
||||||
|
|
||||||
# Eсли игрок попал в последнюю клетку
|
|
||||||
if p.position == len(field) - 1:
|
|
||||||
# Установить победителя (таким образом дать команду выйти из игры)
|
|
||||||
winner = p
|
|
||||||
|
|
||||||
# Прервать цикл обработки игроков
|
|
||||||
break
|
|
||||||
|
|
||||||
# Проверяем "зацикливание"
|
|
||||||
if len(p.dices) >= 1000:
|
|
||||||
# Даем команду прервать игру
|
|
||||||
stop_game = True
|
|
||||||
|
|
||||||
# Прервать цикл обработки игроков
|
|
||||||
break
|
|
||||||
|
|
||||||
if not auto:
|
|
||||||
# Пустая строка
|
|
||||||
print()
|
|
||||||
|
|
||||||
# Рисует поле
|
|
||||||
self.draw(field, players)
|
|
||||||
|
|
||||||
# Возвращаем кол-во бросков
|
|
||||||
return result
|
|
||||||
|
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
import random
|
|
||||||
from LaddersV1 import LaddersV1
|
|
||||||
|
|
||||||
|
|
||||||
class LaddersV2(LaddersV1):
|
|
||||||
|
|
||||||
def dice(self):
|
|
||||||
return random.randint(1, 3)
|
|
|
@ -1,9 +0,0 @@
|
||||||
from LaddersV1 import LaddersV1
|
|
||||||
|
|
||||||
|
|
||||||
class LaddersV3(LaddersV1):
|
|
||||||
|
|
||||||
def move(self, player, steps, field):
|
|
||||||
super().move(player, steps, field)
|
|
||||||
|
|
||||||
player.skip = False
|
|
16
LaddersV4.py
16
LaddersV4.py
|
@ -1,16 +0,0 @@
|
||||||
from LaddersV1 import LaddersV1
|
|
||||||
|
|
||||||
|
|
||||||
class LaddersV4(LaddersV1):
|
|
||||||
|
|
||||||
def move(self, player, steps, field):
|
|
||||||
super().move(player, steps, field)
|
|
||||||
|
|
||||||
# Возвращаем True если значение поля отрицательное
|
|
||||||
return field[player.position] < 0
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
25
LaddersV5.py
25
LaddersV5.py
|
@ -1,25 +0,0 @@
|
||||||
from LaddersV1 import LaddersV1
|
|
||||||
|
|
||||||
|
|
||||||
class LaddersV5(LaddersV1):
|
|
||||||
|
|
||||||
def move(self, player, steps, field):
|
|
||||||
# считаем сколько клеток осталось до конца
|
|
||||||
r = len(field) - 1 - player.position
|
|
||||||
|
|
||||||
super().move(player,steps, field)
|
|
||||||
|
|
||||||
# если количество клеток, которые игроку надо пройти, больше чем клеток до конца
|
|
||||||
if steps > r:
|
|
||||||
# двигаем игрока назад от конца поля
|
|
||||||
# на количество клеток в виде разнице оставшихся клеток до конца и клеток которые надо пройти
|
|
||||||
player.position = len(field) - 1 - (steps - r)
|
|
||||||
|
|
||||||
# Возвращаем True если значение поля отрицательное
|
|
||||||
return field[player.position] < 0
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
class Player:
|
|
||||||
|
|
||||||
def __init__(self, color):
|
|
||||||
self.color = color
|
|
||||||
self.position = -1
|
|
||||||
self.skip = False
|
|
||||||
self.dices = []
|
|
33
files.py
33
files.py
|
@ -1,33 +0,0 @@
|
||||||
import os
|
|
||||||
|
|
||||||
|
|
||||||
def list_levels():
|
|
||||||
files = os.listdir(path='.')
|
|
||||||
result = []
|
|
||||||
for file in files:
|
|
||||||
if file.lower().endswith('.txt'):
|
|
||||||
result.append(file)
|
|
||||||
|
|
||||||
return result
|
|
||||||
|
|
||||||
|
|
||||||
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
|
|
|
@ -1,60 +0,0 @@
|
||||||
def find_second_max(array):
|
|
||||||
# Проверяем входные данные
|
|
||||||
if array and len(array) > 0:
|
|
||||||
# Максимальное значение - первое значение
|
|
||||||
my_max = array[0]
|
|
||||||
# Второе по величине число пока не найдено
|
|
||||||
my_second_max = None
|
|
||||||
|
|
||||||
# Проходим все элементы массива
|
|
||||||
for i in array:
|
|
||||||
# Если текущий элемент массива больше максимального
|
|
||||||
if i > my_max:
|
|
||||||
# Бывшее до сих пор максимальное значение - становится вторым по величине
|
|
||||||
my_second_max = my_max
|
|
||||||
# Текущий элемент становится максимальным значением
|
|
||||||
my_max = i
|
|
||||||
# Если текущий элемент массива меньше максималььного
|
|
||||||
elif i < my_max:
|
|
||||||
# Если второе по величине значение еще не найдено
|
|
||||||
if my_second_max is None:
|
|
||||||
# Текущий элемент становится вторым по величине значением
|
|
||||||
my_second_max = i
|
|
||||||
# Если второе по величине значение уже определено
|
|
||||||
else:
|
|
||||||
# Если текущий элемент больше текущего второго по величине значения
|
|
||||||
if i > my_second_max:
|
|
||||||
# Текущий элемент становится вторым по величине значением
|
|
||||||
my_second_max = i
|
|
||||||
|
|
||||||
# Вариант когда текущий элемент равен минимальному значению, мы не рассматриваем,
|
|
||||||
# т.к. он никак не влияет на найденные значения
|
|
||||||
|
|
||||||
return my_second_max
|
|
||||||
|
|
||||||
# Если массив пустой или вообще не имеет значения
|
|
||||||
return None
|
|
||||||
|
|
||||||
|
|
||||||
#################################################
|
|
||||||
def verifier(test_name, actual, expected):
|
|
||||||
print(test_name)
|
|
||||||
if actual != expected:
|
|
||||||
print("=======> FAILED! <=======")
|
|
||||||
print(f"Got value <{actual}>")
|
|
||||||
print(f"Expected value is <{expected}>")
|
|
||||||
else:
|
|
||||||
print("PASSED")
|
|
||||||
print()
|
|
||||||
|
|
||||||
|
|
||||||
second_max_tests = [([1, 6, 3, 6, 54, 3, 6, 3, 1, 2, 8], 8),
|
|
||||||
([2, 2, 2, 2, 2, 2, 2, 2, 2], None),
|
|
||||||
([2, 2, 2, 2, 2, 2, 2, 2, 4], 2),
|
|
||||||
([], None),
|
|
||||||
([1, 0, -1], 0),
|
|
||||||
([4, -7, 6, 23, -5, 23, -4, 5, 7, 100], 23)]
|
|
||||||
|
|
||||||
for i in range(len(second_max_tests)):
|
|
||||||
verifier(f"Second max test {i+1}", find_second_max(second_max_tests[i][0]), second_max_tests[i][1])
|
|
||||||
|
|
10
level1.txt
10
level1.txt
|
@ -1,10 +0,0 @@
|
||||||
0, 0, 2, 3, 4, 0, 0, 0, 0, 0,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 1, 0
|
|
10
level2.txt
10
level2.txt
|
@ -1,10 +0,0 @@
|
||||||
0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
||||||
0, 0, 0, 0, 0, 0, 4, 0, 0, 0,
|
|
||||||
0, 7, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
||||||
0, 6, 0, 0, 0, 0, 3, 0, 0, 0,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
||||||
0, 0, 0, 0, 5, 0, 0, 0, 0, 0,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 1, 0
|
|
10
level3.txt
10
level3.txt
|
@ -1,10 +0,0 @@
|
||||||
6, 0, 2, 0, 0, 0, 0, 0, 0, 0,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
||||||
0, 0, 0, 5, 0, 0, 0, 0, 0, 0,
|
|
||||||
7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
||||||
0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 3, 1, 0
|
|
10
level4.txt
10
level4.txt
|
@ -1,10 +0,0 @@
|
||||||
0, 0, -1, -1, -1, 0, 0, 0, 0, 0,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
||||||
0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
||||||
0, 9, 0, 8, 0, 0, 0, 0, 0, 0,
|
|
||||||
0, 0, 0, 0, 0, 3, 0, 0, 0, 0,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
||||||
0, 0, 0, 0, 4, 0, 0, 0, 0, 0,
|
|
||||||
0, 0, 0, 0, 0, 5, 6, 7, 1, 0
|
|
10
level5.txt
10
level5.txt
|
@ -1,10 +0,0 @@
|
||||||
0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
||||||
0, 0, 0, 9, 0, 9, 0, 0, 0, 0,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
||||||
0, 3, 0, 0, 4, 0, 5, 0, 6, 0,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 80, 0, 0,
|
|
||||||
0, 0, 0, 9, 9, 0, 8, 90, 7, 0,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
||||||
0, 0, 9, 0, 0, 9, 9, 9, 1, 0
|
|
136
main.py
136
main.py
|
@ -1,136 +0,0 @@
|
||||||
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()
|
|
31
run.py
31
run.py
|
@ -1,31 +0,0 @@
|
||||||
from LaddersV1 import LaddersV1
|
|
||||||
from LaddersV2 import LaddersV2
|
|
||||||
from LaddersV3 import LaddersV3
|
|
||||||
from LaddersV4 import LaddersV4
|
|
||||||
|
|
||||||
|
|
||||||
def run(level, runs, version):
|
|
||||||
if version == 1:
|
|
||||||
game = LaddersV1()
|
|
||||||
if version == 2:
|
|
||||||
game = LaddersV2()
|
|
||||||
if version == 3:
|
|
||||||
game = LaddersV3()
|
|
||||||
if version == 4:
|
|
||||||
game = LaddersV4()
|
|
||||||
|
|
||||||
# Ручной или авто режим
|
|
||||||
auto = False
|
|
||||||
|
|
||||||
# Если больше одного запуска
|
|
||||||
if runs > 1:
|
|
||||||
# Автоматически включаем авто режим
|
|
||||||
auto = True
|
|
||||||
|
|
||||||
results = []
|
|
||||||
|
|
||||||
for i in range(runs):
|
|
||||||
results.append(game.game_loop(auto, level))
|
|
||||||
|
|
||||||
print(f'Average: {sum(results)/runs}')
|
|
||||||
print()
|
|
Loading…
Reference in New Issue