最近我一直在尝试使用Pygame创建一个小游戏,我设法显示一个可以左右移动的图像,我遇到的麻烦是让它使用空格键来发射子弹。
到目前为止,我的代码是: http://pastebin.com/24xDYwY7
我现在已经看到了子弹,但它并没有从“turret.png”中出来,只是位于屏幕的左上角。
有人能帮我这个吗?我是python的新手,非常感谢帮助
答案 0 :(得分:2)
看起来你正在使用我喜欢在PyGame中使用的一种技术 - 使用不同的精灵组来分离好人,坏人,子弹,积木等......用一个统一的“所有东西”组。
我看不到的是all_sprites.update()
调用使整个事情发挥作用,尽管我确实看到了player.update()
。 PyGame群组旨在让您拨打group.update()
来代替for x in y
来电,例如:
for sprite in my_sprites:
sprite.update()
编辑:没有在正确的地方看到你的图像?如果它们被设置在左上角,这通常是因为没有任何东西可以将绘制图像的表面设置为出现在您想要的位置。
我发现有关PyGame的get_rect()
调用的一件事是,它允许你传递参数来设置你回来的rect
的属性。例如,我的sprite.draw(self)
方法看起来像这样:
def draw(self):
"""Sets the image's Rect to the middle of the sprite,
then blits to the screen.
"""
draw_rect = self.drawn_image.get_rect(center=self.rect.center)
SCREEN.blit(self.drawn_image, draw_rect)
这假设sprite对象的self.x和self.y也正在正确更新,但它基本上是正确的做法;获取正在绘制的对象的rect
,将其设置为正确的坐标,就像执行实际的精灵一样,然后将图像和rect
传递给SCREEN.blit()
。