为了账号安全,请及时绑定邮箱和手机立即绑定

Pygame 不解释键盘输入

Pygame 不解释键盘输入

梦里花落0921 2021-09-28 20:47:41
所以我最终需要为我的一个班级创建一个游戏,我想使用 pygame。所以我试图按照教程进行操作,而 pygame 无法识别键盘输入。游戏加载没有错误,但 m 角色不动。有什么帮助吗?我的代码:#Importimport pygamefrom pygame.locals import*#initializationpygame.init()width, height = 640, 480screen=pygame.display.set_mode((width, height))#keyskeys = [False, False, False, False]playerpos=[100,100]#imagesplayer = pygame.image.load("resources/images/dude.png")grass = pygame.image.load("resources/images/grass.png")castle = pygame.image.load("resources/images/castle.png")#loopwhile 1:    #clear screen    screen.fill(0)     #screen elements    for x in range(width/grass.get_width()+1):     for y in range(height/grass.get_height()+1):             screen.blit(grass,(x*100,y*100))    screen.blit(castle,(0,30))    screen.blit(castle,(0,135))    screen.blit(castle,(0,240))    screen.blit(castle,(0,345))    screen.blit(player,playerpos)    #update screen    pygame.display.flip()    #loop events    for event in pygame.event.get():        #check if event is the X button        if event.type==pygame.QUIT:            #key_input            if event.type == pygame.KEYDOWN:                if event.key==K_w:                    keys[0]=True                elif event.key==K_a:                    keys[1]=True                elif event.key==K_s:                    keys[2]=True                elif event.key==K_d:                    keys[3]=True            if event.type == pygame.KEYUP:                if event.key==pygame.K_w:                    keys[0]=False                elif event.key==pygame.K_a:                    keys[1]=False                elif event.key==pygame.K_s:                    keys[2]=False                elif event.key==pygame.K_d:                    keys[3]=False            #if it quits            pygame.quit()            exit(0)    #9-Move player    if keys[0]:        playerpos[1]-=5    elif keys[2]:        playerpos[1]+=5    if keys[1]:        playerpos[0]-=5    elif keys[3]:         playerpos[0]+=5同样,当我按下 wasd 时,加载的字符不会移动。任何帮助将不胜感激,因为我正在尝试了解有关游戏开发的更多信息(:
查看完整描述

1 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

您正在检查您检查的 if 语句中的 event.type 是否有按键


if event.type == pygame.QUIT

意思是,您的程序仅在您尝试退出程序后检查按键操作。


将所有检查关键操作的 if 语句向左移动一个选项卡,它应该可以工作。


但是,当退出时,您将不得不移动要执行的代码


if event.type == pygame.QUIT

像这样:


if event.type==pygame.QUIT:

    #if it quits

    pygame.quit()

    exit(0)

#key_input

elif event.type == pygame.KEYDOWN:

    if event.key==K_w:

        keys[0]=True

    elif event.key==K_a:

        keys[1]=True

    elif event.key==K_s:

        keys[2]=True

    elif event.key==K_d:

        keys[3]=True

elif event.type == pygame.KEYUP:

    if event.key==pygame.K_w:

        keys[0]=False

    elif event.key==pygame.K_a:

        keys[1]=False

    elif event.key==pygame.K_s:

        keys[2]=False

    elif event.key==pygame.K_d:

        keys[3]=False

为了提高性能,使用 elif-statements 来检查 event.type 而不是 if-statements,因为 event.type 不能是 pygame.QUIT、pygame.KEYDOWN 和 pygame.KEYUP。


查看完整回答
反对 回复 2021-09-28
  • 1 回答
  • 0 关注
  • 213 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信