我一直致力于在pygame中创建一个小型的太空入侵者风格游戏。我差不多已经到了尽头,如果敌人的船只与我的船发生碰撞,我会想要这样做,发现碰撞,游戏结束。
到目前为止,我已经有了用于检测子弹和敌舰发生碰撞的代码,但是当我试图为敌人/玩家碰撞重写它时它没有按预期工作,所以我认为我做的事情不正确。
有问题的代码:
for block in block_list:
player_hit_list = pygame.sprite.spritecollide(block, player_list, True)
for player in player_hit_list:
explosion.play()
block_list.remove(block)
player_list.remove(player)
all_sprites_list.remove(block)
all_sprites_list.remove(player)
if block.rect.y < +10:
block_list.remove(block)
all_sprites_list.remove(block)
完整代码:http://pastebin.com/FShPuR6A
有人能告诉我为什么我的代码无法运作吗?
非常感谢
答案 0 :(得分:0)
class Block(pygame.sprite.Sprite):
def __init__(self, color):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.image.load("spaceship.png")
self.rect = self.image.get_rect()
def update(self):
self.rect.y += 1
class Player(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.x=0
self.y=0
self.image = pygame.image.load("alien.png")
self.rect = self.image.get_rect()
def update(self):
pos = pygame.mouse.get_pos()
self.rect.x = pos[0]
乍一看,你有一个Block类,有一张像外星人一样移动的宇宙飞船的照片。 Player类,有一个外星人的图像,并用鼠标移动。
我的建议是重命名课程,以便你知道什么是什么。发现错误会更容易。
编辑:
看起来你的玩家根本不动:
def render(self):
if (self.currentImage==0):
screen.blit(self.image, (self.x, self.y))
您可以通过self.rect.x
更新播放器,但使用self.x
和self.y
进行绘制。