上一篇(Python游戏之Pygame——太空飞机大战(三))完成了英雄战机和星空,那么基本上飞机大战的主要元素都已经完成,该是总结成功玩自己游戏的时候了。
哦,差点忘了,Bullet类对于普通子弹和导弹发射来说是通用的,但是对于核弹,发射核弹部分当然也是相同的,但核弹爆炸的效果图以及杀伤情况就完全不同了。下面先给出展示核弹爆炸的方法:
# 处理核弹爆炸,由于核弹爆炸属于特殊事件,放在类里处理不合OOP理念。当然也可以单独为核弹做一个类,不放在 Bullet 类中
def nuclear_explosiing(targetSurf, sound):
for nuclear in nuclearGroup:
if nuclear.rect.top < 500:
nuclear.image = pygame.image.load(IMAGE_PATH + "nuclear_explosing.png").convert_alpha()
for i in range(10):
nuclear.image = pygame.transform.smoothscale(nuclear.image, (110 + 150 * i, 110 + 150 * i))
nuclear.rect = Rect((0, 0), nuclear.image.get_size())
nuclear.rect.center = (SCREEN_SIZE[0] // 2, SCREEN_SIZE[1] // 3)
targetSurf.blit(nuclear.image, nuclear.rect)
pygame.display.update()
sound.play()
# 核弹 kill
nuclear.kill()
return True
return False
这里主要使用了pygame的transform功能,如果想让核弹爆的过程炸稍微慢一点,可以在update()后添加一个延时方法就可以了。有兴趣的朋友可以自己试一下。
下面开始主程序了。
def main():
pygame.init()
screen = pygame.display.set_mode(SCREEN_SIZE, 0,