Pygame 不解释键盘输入

所以我最终需要为我的一个班级创建一个游戏,我想使用 pygame。所以我试图按照教程进行操作,而 pygame 无法识别键盘输入。游戏加载没有错误,但 m 角色不动。有什么帮助吗?我的代码:


#Import

import pygame

from pygame.locals import*


#initialization

pygame.init()

width, height = 640, 480

screen=pygame.display.set_mode((width, height))



#keys

keys = [False, False, False, False]

playerpos=[100,100]


#images

player = pygame.image.load("resources/images/dude.png")

grass = pygame.image.load("resources/images/grass.png")

castle = pygame.image.load("resources/images/castle.png")


#loop

while 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 时,加载的字符不会移动。任何帮助将不胜感激,因为我正在尝试了解有关游戏开发的更多信息(:


梦里花落0921
浏览 214回答 1
1回答

繁星点点滴滴

您正在检查您检查的 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_inputelif 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]=Trueelif 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。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python