Уведомления

Группа в Telegram: @pythonsu

#1 Май 6, 2020 07:45:29

aidar4ik
Зарегистрирован: 2020-04-28
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Определить выигрышную диагональ в игре Крестики нолики

Делаю игру крестики нолики, размер поля от 3*3 до 10*10
Победу по прямой диагонали проверяю так
Прямая диагональ 3*3 будут ячейки
00 / 11 / 22

Нахожу так:

 win = True
        for i in range(self.field.size):
            if self.field.cells[i][i] != player.char:
                win = False
                break
        if win:
            return True

Победа по обратной диагонали будут координаты 02 / 11 / 20 (на рисунке выделено жёлтым цветом)
При размере поля 4 * 4 обратная диагональ будет 03 / 12 / 21 / 30
5 * 5 будет 04 / 13 / 22 / 31 /40

Помогите придумать алгоритм для определения победы по обратной диагонали.
вижу зависимость, все цифры зеркальные, в центре одинаковые.
но, не могу придумать как проверить это в цикле.



была идея использовать range с шагом Range(старт, стоп, шаг)
но, что то не сраслось.

Отредактировано aidar4ik (Май 6, 2020 07:46:09)

Офлайн

#2 Май 6, 2020 08:38:46

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10026
Репутация: +  857  -
Профиль   Отправить e-mail  

Определить выигрышную диагональ в игре Крестики нолики

Сделай цикл

  
for i in ...
    for j in ...



Офлайн

#3 Май 6, 2020 09:38:08

aidar4ik
Зарегистрирован: 2020-04-28
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Определить выигрышную диагональ в игре Крестики нолики

придумал уже, так
Вроде работает)

         win = True
        for i in range(self.field.size):
            if self.field.cells[i][2-i] != player.char:
                win = False
                break
        if win:
            return True

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version