Python 键盘事件或其他问题

Python 键盘事件或其他问题,python,python-3.x,pygame,keyboard-events,Python,Python 3.x,Pygame,Keyboard Events,我试着用箭头键让一个盒子在屏幕上移动。虽然当我按下箭头键时,什么也没发生。因为我看不到我做错了什么,也找不到支持pygame的可视化工具,所以我不得不问你。代码如下: import pygame, sys FPS = 60 Clock = pygame.time.Clock() pygame.init() SURF = pygame.display.set_mode((600, 700)) pygame.display.set_caption("BOX GAME V1.0") RED =

我试着用箭头键让一个盒子在屏幕上移动。虽然当我按下箭头键时,什么也没发生。因为我看不到我做错了什么,也找不到支持pygame的可视化工具,所以我不得不问你。代码如下:

import pygame, sys

FPS = 60
Clock = pygame.time.Clock()

pygame.init()

SURF = pygame.display.set_mode((600, 700))
pygame.display.set_caption("BOX GAME V1.0")

RED = (255, 0, 0)
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)

box_x = 50
box_y = 50

box = (box_x, box_y, 50, 50)

while True:
    SURF.fill(BLACK)

    pygame.draw.circle(SURF, RED, (200, 150), 25)
    pygame.draw.rect(SURF, WHITE, box)

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                box_x -= 20
            elif event.key == pygame.K_RIGHT:
                box_x += 20
            elif event.key == pygame.K_UP:
                box_y -= 20
            elif event.key == pygame.K_DOWN:
               box_y += 20



    pygame.display.update()
    Clock.tick(FPS)

我假设游戏运行时,不管你用键盘输入,盒子都不会移动。如果我是对的,那么这是一个事实,即您没有在while循环中每次更新长方体的位置

pygame.draw.rect(SURF,WHITE,box)
引用您在开始游戏循环之前定义的框,但该框的位置不会更新。只需在绘制框之前更新框的位置。这可以通过将
box=(box\ux,box\uy,50,50)
移动到游戏循环的顶部来完成

while True:
    box = (box_x, box_y, 50, 50)

    SURF.fill(BLACK)
    pygame.draw.circle(SURF, RED, (200, 150), 25)
    pygame.draw.rect(SURF, WHITE, box)

    ### key press logic

在pygame.event.get()的
for event循环中,您是否尝试过打印出来?没有想到。谢谢我试试看!