【发布时间】:2017-09-09 01:04:33
【问题描述】:
我正在使用 pygame 在 Python 中制作一个小游戏,我试图让我的角色在屏幕上向不同方向移动,以响应用户按下键盘上的方向箭头。角色移动的每个方向都有 3 个应该连续显示的精灵。问题是,即使根据我按下键盘箭头的上下移动,角色确实会上下移动。只有向上箭头的精灵有效,如果我尝试将角色向下移动,它确实会移动,但它会保持在我向上移动时的先前精灵状态(即根本不显示向下精灵)。这很奇怪,因为上下精灵的代码完全相同,但只有一个在另一个之上工作!我已经包含了我认为相关的代码部分,任何帮助将不胜感激。
pygame.init()
screen = pygame.display.set_mode((900,70))
finished = False
x = 450 - 35/2
y = 650 #initial co-ordiantes of the player
backSprites = ["data/hero/walk-back1.png", "data/hero/walk-back2.png", "data/hero/stand-back.png"]
back_index = 0
backSpritesModified1 = [pygame.image.load(filename) for filename in backSprites]
backSpritesModified2 = [pygame.transform.scale((filename), (45, 50) for filename in backSpritesModified1]
backSpritesModified3 = [(filename).convert_alpha() for filename in backSpritesModified2]
#These previous lines work perfectly when the up button is pressed
frontSprites = ["data/hero/walk-front1.png", "data/hero/walk-front2.png", "data/hero/stand-front.png"]
front_index = 0
frontSpritesModified1 = [pygame.image.load(filename) for filename in frontSprites]
frontSpritesModified2 = [pygame.transform.scale((filename), (45, 50) for filename in frontSpritesModified1]
frontSpritesModified3 = [(filename).convert_alpha() for filename in frontSpritesModified2]
#as you can see it's written in the same syntax as the previous part but doesn,t work
代码的以下部分包含在 while 循环中,就像我说的,它是唯一相关的部分,所以我只包括它们
while finished == False #while the game isn't finished yet
for event in pygame.event.get():
if event.type == pygame.QUIT:
finished = True
pressedKeys = pygame.key.get_pressed()
if pressedKeys[pygame.K_UP] == 1:
y -= 5
back_index = (back_index + 1) %len(backSpritesModified3)
if pressedKeys[pygame.K_DOWN] == 1:
y += 5
front_index = (front_index + 1) %len(frontSpritesModified3)
#not working even though it's the same syntax as the previous one!
【问题讨论】:
-
请提供minimal, runnable example。我们至少需要了解您如何对图像/表面进行 blit。
-
好的,这里是到目前为止游戏完整代码的链接。目标是让玩家到达屏幕顶部有宝藏的地方,避免被僵尸击中。随意在精灵的路径中放置不同的图像drive.google.com/file/d/0B7F-SKlHDPGlak9xQkhUTmhjUlk/view
-
不要发布代码链接,而是在问题中插入一个最小、完整且可验证的示例。
标签: python python-2.7 pygame