|
发表于 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()
复制代码
希望这可以解决你的问题!如果你还有其他问题,请随时提问。 |
|