Кажется, я не могу понять, как заставить свой вертикальный ход работать. Моя доска - это вложенный список, состоящий из 6 списков по 6 элементов в каждом.
Мне удалось выяснить мое горизонтальное и диагональное условия выигрыша.Но я не могу обернуть голову вокруг вертикальной
Это мое горизонтальное условие, например
#the list itself
board = [
[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],
]
def hor_condition(board, player):
"""the hor_condition checks whether the list contains necessary amount of checkers in order to call it a win"""
for row in board:
for cell in row:
if row.index(cell) < 2:
check_list = [row[row.index(cell)],
row[row.index(cell) + 1],
row[row.index(cell) + 2],
row[row.index(cell) + 3]
]
if check_list[0] == player and\
check_list[1] == player and \
check_list[2] == player and \
check_list[3] == player:
return True
Здесь проверяется, есть ли 4 одинаковых элемента в одной строкеигрок, чтобы назвать это победой.Я ожидаю, что вертикальное условие будет выполнено, чтобы проверить, есть ли 4 одинаковые шашки в одном столбце
Это может быть больно смотреть, но имейте в виду, что я только начал с Python иЯ начинаю понимать основы.
Я на самом деле не спрашиваю о чёрном на белом коде, скорее о толчке в правильном направлении
Я был бы рад предоставить любую дополнительную информацию, еслинеобходимо!Заранее спасибо!
Редактировать: Уже немного поздно, но я хотел бы помочь всем, у кого была такая же проблема, как и у меня.В конце концов я исправил свою проблему следующим образом:
def vert_condition(board, player):
"""The vert_condition iterates over the board and checks whether 4 vertical slots contain the same player input by
with the help of a nested loop"""
for row in range(3):
for col in range(6):
if (board[row][col] == \
board[row + 1][col] == \
board[row + 2][col] == \
board[row + 3][col] == player):
return True