|  | 
 
 发表于 2023-8-9 17:38:17
|
显示全部楼层 
| 在你的代码中,你尝试使用了一些未定义的变量,例如 K_w 、 K_UP 、 K_s 等等。这些变量实际上是Pygame模块中的常量,它们用于检测按键事件。 
 要解决这个问题,你需要在导入Pygame模块时同时导入 pygame.locals 模块,它包含了这些常量。你可以将以下代码添加到开头的导入语句中:
 
 
 复制代码from pygame.locals import *
 这样,你就可以使用 K_w 、 K_UP 、 K_s 等常量来检测按键事件了。记得在使用这些常量之前加上 pygame. 前缀,例如 pygame.K_w 、 pygame.K_UP 、 pygame.K_s 。
 
 以下是修改后的代码:
 
 
 复制代码import pygame
import sys
import traceback
import my_plane
from pygame.locals import *
pygame.init()
bg_size = weight, height = 400, 700
screen = pygame.display.set_mode(bg_size)
pygame.display.set_caption("飞机大战")
background = pygame.image.load('背景.png').convert()
def main():
    me = my_plane.MyPlane(bg_size)
    clock = pygame.time.Clock()
    running = True
    while running:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
        key_pressed = pygame.key.get_pressed()
        if key_pressed[pygame.K_w] or key_pressed[pygame.K_UP]:
            me.move_up()
        if key_pressed[pygame.K_s] or key_pressed[pygame.K_DOWN]:
            me.move_down()
        if key_pressed[pygame.K_a] or key_pressed[pygame.K_LEFT]:
            me.move_left()
        if key_pressed[pygame.K_d] or key_pressed[pygame.K_RIGHT]:
            me.move_right()
        screen.blit(background, (0, 0))
        pygame.display.flip()
        clock.tick(60)
if __name__ == "__main__":
    try:
        main()
    except SystemExit:
        pass
    traceback.print_exc()
    pygame.quit()
    input()
 希望这可以解决你的问题!如果你还有其他问题,请随时提问。
 | 
 |