Pygame不响应键

时间:2018-10-05 15:53:18

标签: python function pygame

我最近开始使用Python,并且正在从一本书中学习,但是我认为这本书使用的是旧版本,或者制作得不好。使用一些代码,我试图创建一个简单的移动角色。

#!/usr/bin/python3
import pygame
from pygame.locals import *
pygame.init()

running = True
gamewindow=pygame.display.set_mode((800, 600))
pygame.display.set_caption("Game")
black=(0, 0, 0)
white=(255, 255, 255)
img=pygame.image.load("/home/leo/Downloads/pixel.png")
def sprite(x,y):
        gamewindow.blit(img, (x,y))

x=(800*0.2)
y=(600*0.735)

xchange=0
imgspeed=0

while running:
    for event in pygame.event.get():
        if event.type==QUIT:
            running = False

    if event.type == pygame.KEYDOWN:
        if event.type == pygame.K_LEFT:
            xchange=-5
        elif event.type == pygame.K_RIGHT:
            xchange=5
    if event.type==pygame.KEYUP:
        if event.type==pygame.K_LEFT or event.key==pygame.K_RIGHT:
            xchange=0
    x= x + xchange

    gamewindow.fill(white)
    sprite(x,y)
    pygame.display.update()


pygame.quit()

使用此代码,角色不会移动,我认为这可能是由于本节中的错误功能造成的:

while running:
    for event in pygame.event.get():
        if event.type==QUIT:
            running = False

    if event.type == pygame.KEYDOWN:
        if event.type == pygame.K_LEFT:
            xchange=-5
        elif event.type == pygame.K_RIGHT:
            xchange=5
    if event.type==pygame.KEYUP:
        if event.type==pygame.K_LEFT or event.key==pygame.K_RIGHT:
            xchange=0
    x= x + xchange

这本书是完全错误的还是只有一些小事情我需要更改。谢谢!

1 个答案:

答案 0 :(得分:1)

您检查事件类型而不是事件键。例如,您应该使用event.key == pygame.K_LEFT而不是event.type == pygame.K_LEFT等。

您如何认为event.type可以同时等于pygame.K_LEFTpygame.KEYDOWN

有关正确的示例,请参见How to use pygame.KEYDOWN