Skip to main content
 首页 » 编程设计

python之只有 1 个事件键有效

2025年05月04日16linjiqin

所以我正在用 Python 开发游戏。这是我的代码:

bif="main_background.jpg" 
pif="player_head.png" 
 
import pygame, sys 
from pygame.locals import * 
 
pygame.init() 
screen=pygame.display.set_mode((900,600),0,32) 
 
background=pygame.image.load(bif).convert() 
player_sprite=pygame.image.load(pif).convert_alpha() 
 
x,y=0,0 
movex, movey=0,0 
 
while True: 
    for event in pygame.event.get(): 
        if event.type == QUIT: 
            pygame.quit() 
            sys.exit() 
        if event.type==KEYDOWN: 
            if event.key==K_RIGHT: 
                movex=+1 
            if event.type==K_LEFT: 
                movex=-1 
            if event.type==K_UP: 
                movey=-1 
            if event.type==K_DOWN: 
                movey=+1 
        if event.type==KEYUP: 
            if event.key==K_RIGHT: 
                movex=0 
            if event.type==K_LEFT: 
                movex=0 
            if event.type==K_UP: 
                movey=0 
            if event.type==K_DOWN: 
                movey=0 
 
    x+=movex 
    y+=movey 
 
    screen.blit(background, (0,0)) 
    screen.blit(player_sprite, (x,y)) 
 
    pygame.display.update() 

但问题是只有第一个 event.key 有效(K_RIGHT)

Sprite 只有在我按下右箭头键时才会移动。

我也尝试用 elif 替换第二个、第三个和第四个 event.key,但它也没有用。

请您参考如下方法:

您正在使用 event.type 而不是 event.key 作为所有其他键,除了 K_RIGHT(有效)。这就解释了为什么其他键不起作用。另外,你应该写:

movex += 1 

或

movey -=1 

等等使 Sprite 改变位置。这将增加和减少 Sprite 的位置。 movex += 1 是 movex = movex + 1 的简写。