Программа игнорирует метод проверки
Прошу прощения за длинный код, но если выложить часть, наверное мало кто что поймёт.
Подскажите, пожалуйста, почему игнорируется проверка end_check ?
Метод end_check должен проверять не превысил ли self.coord значение 100 и действовать соответственно. Видимо я как-то не правильно применяю его в методе play, потому что если просто вызвать
SnakeLadders.end_check() c аргументами 100, >100, то метод отработает корректно.
Спасибо!
from random import randint
class SnakesLadders:
__log = []
end_game = ''
snakechecks = {16: 6, 46: 25, 49: 11, 62: 19, 64: 60, 74: 53, 89: 68, 92: 88, 95: 75, 99: 80}
ladderchecks = {2: 38, 7: 14, 8: 31, 15: 26, 21: 42, 28: 84, 36: 44, 51: 67, 71: 91, 78: 98, 87: 94}
def __init__(self, coord):
self.coord = coord
@staticmethod
def snake(coord): # определяем координаты при попадании на змею.
snakecoords = SnakesLadders.snakechecks.get(coord)
return snakecoords
@staticmethod
def ladder(coord): # определяем координаты при попадании на лестницу.
laddercoords = SnakesLadders.ladderchecks.get(coord)
return laddercoords
def statistics(self): # лог ходов
return SnakesLadders.__log
def findname(self): # нормальные имена игроков
for k, v in globals().items():
if self is v:
return k
@staticmethod
def end_check(coord): # проверяем закончилась ли игра
if SnakesLadders.end_game == 'Game over':
return SnakesLadders.end_game
if coord == 100:
SnakesLadders.end_game = 'Game over'
return True
elif coord > 100:
coord = 100 - (coord - 100)
return coord
def play(self): # бросание кубика \ передвижение игроков
self.coord += randint(2, 12)
type(self).end_check(self.coord)
if self.coord in SnakesLadders.snakechecks:
self.coord = type(self).snake(self.coord)
type(self).end_check(self.coord)
SnakesLadders.__log.append(f"{self.findname()}-{self.coord}")
elif self.coord in SnakesLadders.ladderchecks:
self.coord = type(self).ladder(self.coord)
type(self).end_check(self.coord)
SnakesLadders.__log.append(f"{self.findname()}-{self.coord}")
else:
type(self).end_check(self.coord)
SnakesLadders.__log.append(f"{self.findname()}-{self.coord}")
player1 = SnakesLadders(0)
player2 = SnakesLadders(96)
# print(player1.play())
# print(player1.play())
# print(player1.play())
# print(player2.play())
player2.play()
player2.play()
player2.play()
print(player2.statistics())