|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
import pygame
import sys
pygame.init()
size = width, height = 600, 400
bg = (255, 255, 255)
snake = (0, 255, 0)
fanxiang = 'right'
left = 300
top = 200
screen = 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[K_w] or key_pressed[K_UP]:
fanxiang = 'top'
if key_pressed[K_s] or key_pressed[K_DOWN]:
fanxiang = 'bottom'
if key_pressed[K_d] or key_pressed[K_RIGHT]:
fanxiang = 'right'
if key_pressed[K_a] or key_pressed[K_LEFT]:
fanxiang = 'top'
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(1 * 1000)
我在运行时它老是给我报NameError: name 'K_w' is not defined谁能解释一下为什么?谢谢
这个报错是因为在使用键盘事件时,你没有正确地引用pygame中的键盘按键常量。在pygame中,你应该使用 pygame.K_w代表"W"键, pygame.K_UP代表上箭头键,以此类推。
此外,在你的代码中,当按下"A"键或者左箭头键时,应该将方向设置为'left',而不是'top'。下面是修改后的代码:
- import pygame
- import sys
- pygame.init()
- size = width, height = 600, 400
- bg = (255, 255, 255)
- snake = (0, 255, 0)
- fanxiang = 'right'
- left = 300
- top = 200
- screen = 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
复制代码
这样应该可以解决问题了。希望对你有帮助!如果还有其他问题,请随时提出。
|
|