我最近开始使用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
这本书是完全错误的还是只有一些小事情我需要更改。谢谢!
答案 0 :(得分:1)
您检查事件类型而不是事件键。例如,您应该使用event.key == pygame.K_LEFT
而不是event.type == pygame.K_LEFT
等。
您如何认为event.type
可以同时等于pygame.K_LEFT
和pygame.KEYDOWN
?
有关正确的示例,请参见How to use pygame.KEYDOWN。