如何将 checkForWin Python 函数链接到 Connect-Four 板?

问题描述

我想将 def checkForWin 函数连接到电路板以检查是否获胜 drawField 函数结合 currentField 列表来创建板。 但是,我似乎无法让 checkForWin 函数与板一起工作。

def drawField(field):
    for row in range(6):
        #i.e. 0,1,2,3,4
                # We map:      0,.,2
        #if row%2 == 1:
        #newRow = 6  # to convert any float number to integer
        # print(" | | ")
        for column in range(7):  # i.e. 0,4
                                # We map:  0,2 to match our moves columns and rows

        # if column % 2 == 1:
        #     newColumn = int(column / 2)  # to convert any float number to integer

        if column != 7:
            print(field[column][row],end="")
        else:
            print("")

    else:
        print("")

Player = 1

currentField = [[" "," "," "],[" "," "]]

print(currentField)



drawField(currentField)
while(True): # means while(True == True)
    print("Player's Turn: ",Player)

    moveColumn = int(input("Please enter a column number (Hint: 0 - 6): \n"))

    if Player == 1:
        moveRow = 6
        tile = "X"
        for i in reversed(range(moveRow)):
            moveRow = i
        # Make move for Player 1

            if currentField[moveColumn][moveRow] == " ":
                currentField[moveColumn][moveRow] = "X"
                #checkForWin(currentField)
                break

            else:
                if currentField[moveColumn][0] == "X" or "O":
                    print("Column is full. Select another column: ")



        drawField(currentField)
        Player = 2



else:
    moveRow = 6
    tile = "O"
    # # Make move for Player 2
    for i in reversed(range(moveRow)):
        moveRow = i
        if currentField[moveColumn][moveRow] == " ":
            currentField[moveColumn][moveRow] = tile
            break

        else:
            print("Column is full. Select another column: ")
            continue


    drawField(currentField)
    Player = 1

我需要帮助检查我的代码,以及如何最好地将它链接到开发板。我知道有更有效的方法,但由于我是初学者,我想利用我迄今为止所掌握的知识来获得相同的结果。

def checkForWin(field):
    # Checking for horizontal tiles
    boardHeight = len(currentField[0])
    boardWidth = len(currentField)

    for y in range(boardHeight):
        for x in range(boardWidth - 3):
            if field[x][y] == field[x + 1][y] == field[x + 2][y] == field[x + 3][y]:
                print("PLAYER",Player,"WINS!")
                return
            # else:
            #     continue

    # Checking for vertical tiles
    for x in range(boardWidth):
        for y in range(boardHeight - 3):
            if field[x][y] == field[x][y + 1] == field[x][y + 2] == field[x][y + 3]:
                print("PLAYER","WINS")
                return


    # Checking for positive diagonal tiles (/)
    for x in range(boardWidth - 3):
        for y in range(3,boardHeight):
            if field[x][y] == field[x + 1][y - 1] == field[x + 2][y - 2] == field[x + 3][y - 3]:
                print("PLAYER","WINS")
                return
            # else:
            #     continue

    # Checking for positive diagonal tiles (\)
    for y in range(boardHeight - 3):
        for x in range(3,boardWidth):
            if field[x][y] == field[x + 1][y + 1] == field[x + 2][y + 2] == field[x + 3][y + 3]:
                print("PLAYER 1 WINS")

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)