Pygame не отвечает на ключи - PullRequest
0 голосов
/ 05 октября 2018

Я недавно запустил 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 голосов
/ 05 октября 2018

Вы проверяете тип события вместо ключа события.Например, вы должны использовать event.key == pygame.K_LEFT вместо event.type == pygame.K_LEFT и т. Д.

Как вы думаете, event.type может быть равным pygame.K_LEFT и pygame.KEYDOWN одновременно?

См. Как использовать pygame.KEYDOWN для правильного примера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...