【问题标题】:Identifying Pygame KEYDOWN event识别 Pygame KEYDOWN 事件
【发布时间】:2018-12-08 18:03:31
【问题描述】:

我正在创建游戏 2048 并且处于此过程的早期阶段,但已经遇到了一个让我完全困惑的问题。 这是我的主要功能(忽略缩进错误,我是stackoverflow的新手)

def main():

while True:

    #Process input
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            closeGame()

        if event.type == pygame.KEYDOWN and event.key == keyESC:
            closeGame()

        if event.type == pygame.KEYDOWN and event.key == keyLEFT:
            gameArray[3][2] = 1

    drawGame()

我希望在按下我的左按钮(在其他地方用 keyLEFT = (pygame.K_LEFT) 定义)后更改 gameArray[3][2] = 1 中提到的变量。

那我就有这个函数来绘制游戏了

def drawGame():
screen.fill(WHITE)
pygame.draw.rect(screen, BLACK, (0, 0, 450, 450), 0)
# Printing the rows
for i in range (4):
    # Printing the cells
    for j in range (4):
        pygame.draw.rect(screen, getColour(gameArray[i][j]), (tileGAP + ((tileSPACE) * j), tileGAP + (tileSPACE * i), tileWIDTH, tileWIDTH), 0)


pygame.display.flip()

我的问题是为什么按下左键后gameArray[3][2]的平方没有改变? 抱歉,如果我设置得很糟糕,我是新手。

【问题讨论】:

  • 你在哪里声明gameArray?这可能是一个范围问题,其中 gameArray 在一个特定函数中声明,而其他函数无法访问或修改它。
  • 就在程序的最开始,甚至在任何函数定义之前

标签: python pygame


【解决方案1】:

尝试根据pygame documentation 将“keyLEFT”替换为“pygame.K_LEFT”。

另见similar question

【讨论】:

    猜你喜欢
    • 2016-06-06
    • 1970-01-01
    • 1970-01-01
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多