Как очистить сетку или настроить ее так, чтобы на ней работала функция проверки?[ПОДКЛЮЧИТЬ 4 ИГРЫ] - PullRequest
0 голосов
/ 27 сентября 2019

Так что я делаю игру connect4, за исключением того, что вместо 4, это должно быть 5 последовательных символов, чтобы выиграть.Я уже на проверочной части.Итак, у меня есть функция isWin, и я хочу иметь возможность проверить, появляется ли фигура 5 раз подряд где-либо в сетке, и объявить победителя и остановить прибытие, когда это произойдет.Проблема в том, что я не совсем понимаю свою сетку, потому что я просто скорректировал некоторые значения, пока она не заработала, поэтому я не могу точно понять, как работает система координат, поэтому мне труднофункция isWin тоже.

Так вот мой код для сетки:

def displayGrid(grid,grid_height,grid_width): 
    for row in range(1,grid_height):
        #print(row) #for checking
        for col in range(grid_width):
            #print(col)
            print("|", end="")
            print(str(grid[row-1][col-1]),end = "")
        print("|")
    print(" "+" ".join([str(i) for i in range(1, grid_width+1)]))
    return grid

def updateGrid(grid,grid_height,grid_width,move,p_char):
    for i in range(1,grid_height+1):
        #print(i) #ROW COUNTING STARTS FROM 1 
        if grid[grid_height-i][move-2] == " ":
            grid[grid_height-i][move-2]= p_char #REPLACES THE " " TO THE CURRENT PLAYER'S CHARACTER (p_char)
        else:
            continue
        break

    return grid

Это мой код (рекомендуемый код) для функции isWin: (она проверяет по горизонтали, вертикали и диагонали):

def isWin(p_char,grid,grid_height,grid_width):
    # Horizontal
    for i in range(grid_height):
        for j in range(grid_width - 4):
            if set(grid[i][j:j+5]) == {p_char}:
                return True
    # Vertical
    for i in range(grid_height - 4):
        for j in range(grid_width):
            if { grid[i+k][j] for k in range(5) } == {p_char}:
                return True
    # Diagonal
    for i in range(grid_height - 4):
        for j in range(grid_width - 4):
            if { grid[i+k][j+k] for k in range(5) } == {p_char}:
                return True
    return False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...