python实现飞机大战

  

本文实例为大家分享了python实现飞机大战的具体代码,供大家参考,具体内容如下

  

实现的效果如下:

  

 python实现飞机大战”>,</p>
  <p>主程序代码如下:</p>
  
  <pre类=   进口pygame   从plane_sprites进口*         类PlaneGame(对象):   ”““飞机大战主游戏”“      def __init__(自我):   打印(“游戏初始化”)   # 1,绘制屏幕窗口   自我。屏幕=pygame.display.set_mode (SCREEN_RECT.size)   # 2,创建时钟   自我。时钟=pygame.time.Clock ()   # 3,调用私有方法,精灵和精灵组的创建   self.sprite_creat ()   # 4,设置定时器事件,创建敌机   pygame.time。set_timer (CREATE_ENEMY_EVENT, 400)   pygame.time。set_timer (HERO_FIRE_EVENT, 200)      def sprite_creat(自我):   bg1=背景()   bg2=背景(真正的)      自我。bg_group=pygame.sprite。集团(bg1 bg2)   自我。enemy_group=pygame.sprite.Group ()      #创建英雄的精灵和精灵组   自我。英雄=英雄()   自我。hero_group=pygame.sprite.Group (self.hero)      def start_game(自我):   打印(“游戏开始……”)   而真正的:   # 1,设置刷新帧率   self.clock.tick (FRAME_PER_SEC)   # 2,事件监听   self.__event_handle ()   # 3,碰撞检测   self.__check_collide ()   # 4,更新/绘制精灵和精灵组   self.__updtae_sprites ()   # 5,更新显示   pygame.display.update ()      def __event_handle(自我):   在pygame.event.get事件():   如果事件。类型==pygame.QUIT:   PlaneGame.__game_over ()   elif事件。类型==CREATE_ENEMY_EVENT:   打印(“敌机出场…”)   #创建敌机精灵   敌人的敌人=()   #敌机精灵添加到敌机精灵组   self.enemy_group.add(敌人)   elif事件。类型==HERO_FIRE_EVENT:   self.hero.fire ()      #移动英雄   keys_pressed=pygame.key.get_pressed ()   如果keys_pressed (pygame.K_RIGHT):   self.hero。速度=5   elif keys_pressed [pygame.K_LEFT]:   self.hero。速度=5   其他:   self.hero。速度=0      def __check_collide(自我):   pygame.sprite.groupcollide (self.hero。子弹,自我。enemy_group,真的,真的)   敌人=pygame.sprite.spritecollide(自我。英雄,自我。enemy_group,真的)   如果len(敌人)的在0:   self.hero.kill ()   PlaneGame.__game_over ()      def __updtae_sprites(自我):      self.bg_group.update ()   self.bg_group.draw (self.screen)      self.enemy_group.update ()   self.enemy_group.draw (self.screen)      self.hero_group.update ()   self.hero_group.draw (self.screen)      self.hero.bullets.update ()   self.hero.bullets.draw (self.screen)      @staticmethod   def __game_over ():   打印(“游戏结束了”)   pygame.quit ()   退出()         if __name__==癬_main__”:      #创建游戏对象   游戏=PlaneGame ()      #启动游戏   game.start_game ()   之前      

各个类的代码如下:

        进口pygame   进口随机      #屏幕大小   SCREEN_RECT=pygame。矩形(0,0,480,700)   #刷新帧率   FRAME_PER_SEC=60   #创建敌机的定时器常量   CREATE_ENEMY_EVENT=pygame.USEREVENT   #创建发射子弹事件常量   HERO_FIRE_EVENT=pygame。USEREVENT + 1         类GameSprite (pygame.sprite.Sprite):      def __init__(自我、image_name速度=1):   super () . __init__ ()   自我。形象=pygame.image.load (image_name)   自我。矩形=self.image.get_rect ()   自我。速度=速度      def(自我更新):   self.rect。y +=self.speed         类背景(GameSprite):      def __init__(自我,is_alt=False):   超级(). __init__ (“。/feiji/background.png”)   如果is_alt:   self.rect。y=-self.rect.height      def(自我更新):   self.rect。y +=self.speed   #自我。速度+=0.0001   #判断背景图片是否移出屏幕窗口   如果self.rect。y比;SCREEN_RECT.height:   self.rect。y=-self.rect.height         阶级敌人(GameSprite):      def __init__(自我):   超级(). __init__ (“。/feiji/enemy0.png”)   #随机敌机的速度   自我。速度=随机的。randint (2、5)      #随机敌机的水平位置   self.rect。x=随机的。randint (0, (SCREEN_RECT.width-self.rect.width))      def(自我更新):   super () .update ()   #判断敌机是否移出屏幕   如果self.rect。y比;SCREEN_RECT.height:   打印(“飞出屏幕……”)   #将敌机从敌机精灵组中删除   self.kill ()      def __del__(自我):   打印(“删除敌机”)         类英雄(GameSprite):   ”““英雄类”“”      def __init__(自我):   超级(英雄,自我). __init__ (“。/feiji/hero1。png”, 0)   self.rect。centerx=SCREEN_RECT.centerx   self.rect。底=SCREEN_RECT。底- 80   自我。子弹=pygame.sprite.Group ()      def(自我更新):   self.rect。x +=self.speed   如果self.rect。x & lt;=0:   self.rect。x=0   elif self.rect。x祝辞=(SCREEN_RECT。宽度- self.rect.width):   self.rect。x=SCREEN_RECT。宽度——self.rect.width      def火(自我):   #创建子弹精灵   子弹=()      #设置子弹精灵的位置   bullet.rect。底=self.rect。y 5   bullet.rect。centerx=self.rect.centerx      #将子弹精灵添加到子弹精灵组中去   self.bullets.add(子弹)         类子弹(GameSprite):      def __init__(自我):   超级(子弹,自我). __init__ ('。/feiji/子弹。png ', 2)      def(自我更新):   超级(子弹,自我).update ()   如果self.rect。y & lt;=0:   self.kill ()   

python实现飞机大战