【问题标题】:Python Pygame winning diagonal move isnt workingPython Pygame赢得对角线移动不起作用
【发布时间】:2019-08-03 14:52:50
【问题描述】:

我已经使用 Pygame 在 python 中制作了一个 Connect Four 游戏,但我现在卡住了。

水平和垂直的获胜动作都起作用了,但是从左上角到右下角的对角线不起作用,而从左下角到右上角的对角线起作用了。我找不到问题。也许有人可以帮助我?

我的代码:

def controleer_winnaar(beurt):

    for x in range(RIJEN - 3):
        for y in range(KOLOMMEN):
            #berekening voor verticaal winnen
            if(bord[x][y] == beurt and bord[x + 1][y] == beurt and bord[x + 2][y] == beurt and bord[x + 3][y] == beurt):
                return True

    for x in range(RIJEN):
        for y in range(KOLOMMEN - 3):
            # berekening voor horizontaal winnen
            if (bord[x][y] == beurt and bord[x][y + 1] == beurt and bord[x][y + 2] == beurt and bord[x][y + 3] == beurt):
                return True

    for x in range(RIJEN - 3):
        for y in range(KOLOMMEN - 3):
            # berekening voor schuin-omhoog winnen
            if (bord[x][y] == beurt and bord[x + 1][y + 1] == beurt and bord[x + 2][y + 2] == beurt and bord[x + 3][y + 3] == beurt):
                return True

    for x in range(RIJEN - 3):
        for y in range(KOLOMMEN - 3):
            # berekening voor schuin-omlaag winnen
            if (bord[x][y] == beurt and bord[x + 1][y - 1] == beurt and bord[x + 2][y - 2] == beurt and bord[x + 3][y - 3] == beurt):
                return True

【问题讨论】:

    标签: python pygame


    【解决方案1】:

    您的循环限制错误:您需要移动起点的矩形,以便列值在正确的范围内:

    for x in range(RIJEN - 3):
        for y in range(3, KOLOMMEN):
            # berekening voor schuin-omlaag winnen
            if (bord[x][y] == beurt and bord[x + 1][y - 1] == beurt and bord[x + 2][y - 2] == beurt and bord[x + 3][y - 3] == beurt):
                return True
    

    这种的情况下,y:y-3 具有正确的值,它将到达远角,而不是从bord 的另一端跑出。

    【讨论】:

    • 对不起,我不明白你的意思。我现在需要改变什么?
    • 对角线的合法起点矩形。对于“反向”对角线,您不能从 (0,0) 迭代到 (6-3, 7-3) [假设是 6x7 棋盘],因为您的四线试图立即离开棋盘。您需要将起点移动到 (0,3) 并在 (6-3,7) 结束。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-08
    • 1970-01-01
    • 2019-05-09
    • 1970-01-01
    相关资源
    最近更新 更多