我试图blit一个图像作为背景,然后有一个精灵在所有方向上移动和旋转。到目前为止,我有以下几点:
import pygame, sys
from pygame.locals import *
BGimageName = 'joker.jpg'
FGimageName = 'bmanicon.tga'
pygame.init()
DisWidth = 900
DisHeight = 600
x = -500
y = -300
spriteROT = 1.0
SPHpos = (DisWidth//2, DisHeight//2)
DISPLAYSURF = pygame.display.set_mode((DisWidth, DisHeight), 0, 32)
BGimage = pygame.image.load(BGimageName).convert()
FGimage = pygame.image.load(FGimageName).convert_alpha()
def main():
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
if event.type == KEYDOWN:
if event.key == K_LEFT:
move_x = -1
elif event.key == K_RIGHT:
move_x = +1
elif event.key == K_UP:
move_y = -1
elif event.key == K_DOWN:
move_y = +1
elif event.key == K_r:
rotationDIR = + 1.0
elif event.key == K_w:
rotationDIR = - 1.0
elif event.type == KEYUP:
if event.key == K_LEFT:
move_x = 0
elif event.key == K_RIGHT:
move_x = 0
elif event.key == K_UP:
move_y = 0
elif event.key == K_DOWN:
move_y = 0
elif event.key == K_r:
rotationDIR = 0
elif event.key == K_w:
rotationDIR = 0
DISPLAYSURF.blit(BGimage, (x, y))
RotSPH = pygame.transform.rotate(FGimage, spriteROT)
w, h = RotSPH.get_size()
spriteDrawPos = (SPHpos[0] - w // 2, SPHpos[1] - h // 2)
DISPLAYSURF.blit(RotSPH, spriteDrawPos)
pygame.display.update()
main()
这对我来说都是新鲜事。大部分都是我们的教授提供的,然后我们就得弄清楚剩下的部分并进行个性化设置。不幸的是,我们讨论事件的那一天我没来上课,所以我不太理解。我认为我目前的一切工作,因为背景和精灵都显示,但精灵没有移动时,我按下任何按钮。我怎样才能让Python意识到我想要精灵移动呢
我试着在事件键中放入FGimage.move_x
等
if event.key == K_LEFT:
FGimage.move_x = -1
但这不管用,给了我一个错误
Attribute Error: 'pygame.Surface' object has no attribute 'move_x'
我想我很接近了,但我还是错过了最后一步
之所以不移动精灵,是因为没有随事件更改任何变量
具体地说,位置变量
spriteDrawPos
没有改变,因为修改它的行spriteDrawPos = (SPHpos[0] - w // 2, SPHpos[1] - h // 2)
没有改变,因为SPHpos
永远不会改变,因为spriteROT
永远不会改变若要修复此问题,请修改代码以使用在事件中更改的变量
这将有希望让你的精灵移动,但可能太快了
相关问题 更多 >
编程相关推荐