基于python的飞机大战游戏的设计与实现,用python实现飞机游戏_1

  基于python的飞机大战游戏的设计与实现,用python实现飞机游戏

  这篇文章主要为大家详细介绍了大蟒实现简单飞机大战小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  为了熟悉大蟒基础语法,学习了一个经典的案例:飞机大战,最后实现效果如下:

  实现步骤:

  下载64位对应大蟒版本的py游戏:py游戏-1。9 .6-cp38-cp38-win _ amd64。万海

   更新pip:python -m pip安装-升级点

   安装皮游戏:皮普安装py游戏-1。9 .6-cp38-cp38-win _ amd64。万海

   实现代码如下:

  导入系统#导入系统模块

  导入随机#随机数模块

  导入pygame #导入简介及安装模块

  导入pygame.locals #导入简介及安装本地策略

  ICO _ PATH= images/APP。ICO # APP _ ICO

  APP_NAME=飞机大战1.0版 #应用程序名称

  敌人_IMGS=(images/enemy1.png , images/enemy2.png) #敌人_IMGS

  # TODO定义一个公共类

  班级模型:

  窗口=无#主窗体窗户对象

  # 初始化函数

  def __init__(self,img_path,x,y):

  自我。img=py游戏。形象。加载(img _ path)

  self.x=x

  self.y=y

  # 将图片填充到背景中

  极好的显示器(自身):

  Model.window.blit(self.img,(self.x,self.y))

  # TODO背景

  类别背景(型号):

  # 背景移动

  定义移动(自己):

  如果self.y=Game .窗口_高度:

  self.y=1

  else:

  self.y=0

  # 背景图片展示

  极好的显示器(自身):

  Model.window.blit(self.img,(self.x,self.y)) #填充背景

  Model.window.blit(self.img,(self.x,self.y - Game .WINDOW_HEIGHT)) #填充辅助背景

  # TODO玩家类

  :类播放器(型号)

  def __init__(self,img_path,x,y):

  超级()。__init__(img_path,x,y)

  # 子弹

  self.bullets=[]

  极好的显示(己方、敌方):

  超级()。显示()

  remove_bullets=[]

  对于self .子弹中的项目符号3360

  bullet.move()

  bullet.display()

  # 如果子弹小于消失于屏幕,删除子弹

  if bullet.y -11:

  remove_bullets.append(项目符号)

  # 子弹的矩阵

  bullet _ rect=py游戏。当地人。rect(项目符号。x,bullet.y,5,11)

  # TODO进行碰撞检测

  为了敌人中敌人:

  # 敌机的矩阵

  enemy _ rect=pygame。当地人。rect(敌人。x,enemy.y,57,43)

  # 如果碰撞

  如果pygame .Rect.colliderect(bullet_rect

  , enemy_rect):

                      # 随机修改敌机的位置模拟敌机销毁并生成新敌机并删除子弹

                      enemy.img = pygame.image.load(Enemy_IMGS[random.randint(0, 1)])

                      enemy.x = random.randint(0, Game.WINDOW_WIDTH - 57)

                      enemy.y = random.randint(-Game.WINDOW_WIDTH, -43)

                      remove_bullets.append(bullet)

                      break

          for bullet in remove_bullets:

              self.bullets.remove(bullet)

  # TODO 敌机类

  class EnemyPlane(Model):

      def __init__(self):

          self.img = pygame.image.load(Enemy_IMGS[random.randint(0, 1)])

          self.x = random.randint(0, Game.WINDOW_WIDTH - 57)

          self.y = random.randint(-Game.WINDOW_WIDTH, -43)

      def move(self):

          if self.y > Game.WINDOW_HEIGHT:

              self.y = -43  # 返回初始位置

          else:

              self.y += 1

  # TODO 子弹类

  class Bullet(Model):

      def move(self):

          self.y -= 1

  # TODO 游戏类

  class Game:

      WINDOW_WIDTH = 410

      WINDOW_HEIGHT = 614

      # 初始化操作

      def __init__(self):

          self.window = pygame.display.set_mode([Game.WINDOW_WIDTH, Game.WINDOW_HEIGHT])  # 窗口的设置

          self.background = Background("images/background.png", 0, 0)  # 窗体模型的设置

          self.player = PlayerPlane("images/me1.png", 180, 400)

          self.enemyPlanes = []

          for _ in range(5):

              self.enemyPlanes.append(EnemyPlane())

      # 游戏的入口函数

      def run(self):

          self.frame_init()

          while True:

              self.background.move()  # 背景向上移动,模拟环境移动

              self.background.display()  # 将图片塞入到窗体中

              self.player.display(self.enemyPlanes)

              for enemy in self.enemyPlanes:

                  enemy.move()

                  enemy.display()

              pygame.display.update()  # 刷新窗体

              self.event_init()  # 监听事件

      # 初始化窗口

      def frame_init(self):

          Model.window = self.window  # 将window对象赋值给Model公有类

          ico = pygame.image.load(ICO_PATH)  # 加载图片

          pygame.display.set_icon(ico)  # 设置icon

          pygame.display.set_caption(APP_NAME)  # 设置app_name

      # 事件初始化方法

      def event_init(self):

          for event in pygame.event.get():

              # 关闭事件

              if event.type == pygame.locals.QUIT:

                  sys.exit()

              # 监听鼠标事件

              if event.type == pygame.locals.MOUSEMOTION:

                  pos = pygame.mouse.get_pos()

                  self.player.x = pos[0] - 51

                  self.player.y = pos[1] - 63

          focus_state = pygame.mouse.get_pressed()

          if focus_state[0] == 1:

              pos = pygame.mouse.get_pos()

              self.player.bullets.append(Bullet("images/bullet1.png", pos[0], pos[1] - 75))

  if __name__ == "__main__":

      Game().run()

  以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: