这个报错是因为在使用键盘事件时,你没有正确地引用pygame中的键盘按键常量。在pygame中,你应该使用pygame.K_w代表"W"键,pygame.K_UP代表上箭头键,以此类推。
此外,在你的代码中,当按下"A"键或者左箭头键时,应该将方向设置为'left',而不是'top'。下面是修改后的代码:import pygameimport syspygame.init()size = width, height = 600, 400bg = (255, 255, 255)snake = (0, 255, 0)fanxiang = 'right'left = 300top = 200screen = pygame.display.set_mode(size)pygame.display.set_caption('贪吃蛇')while True: for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() key_pressed = pygame.key.get_pressed() if key_pressed[pygame.K_w] or key_pressed[pygame.K_UP]: fanxiang = 'top' if key_pressed[pygame.K_s] or key_pressed[pygame.K_DOWN]: fanxiang = 'bottom' if key_pressed[pygame.K_d] or key_pressed[pygame.K_RIGHT]: fanxiang = 'right' if key_pressed[pygame.K_a] or key_pressed[pygame.K_LEFT]: fanxiang = 'left' if fanxiang == 'left': left -= 11 elif fanxiang == 'top': top -= 11 elif fanxiang == 'right': left += 11 elif fanxiang == 'bottom': top += 11 screen.fill(bg) pygame.draw.rect(screen, snake, (left, top, 10, 10), 0) pygame.display.flip() pygame.time.delay(100) # 将延迟时间修改为100ms
这样应该可以解决问题了。希望对你有帮助!如果还有其他问题,请随时提出。 |