python实现飞机大战完整代码,可运行,基于python的飞机大战设计论文

  python实现飞机大战完整代码,可运行,基于python的飞机大战设计论文

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

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

  游戏的实现本质是多个图片的快速切换,类似动画一样,达到动态的效果。

  比如子弹的发射,实际上是一个子弹的照片根据列表中存储的位置多次粘贴到界面上。

  还有飞机的移动是首先收集到移动信息将坐标变化,然后下一次覆盖页面的时候进行粘贴。

  导入简介及安装

  导入时间

  从pygame.locals导入*

  英雄x=150

  英雄y=600

  # 子弹夹

  mybullet=[]

  # 导弹夹

  bomb_list=[]

  敌人x=0

  敌人y=0

  标志=0

  敌人_生活=生活

  hero_life=live

  # 飞机爆炸

  a=pygame.image.load( ./飞姬/敌人1 _ down 1。png’)

  b=pygame.image.load( ./飞姬/敌1 _降2。png’)

  c=pygame.image.load( ./飞姬/敌1 _降3。png’)

  d=pygame.image.load( ./飞姬/敌1 _降4。png’)

  e=pygame.image.load( ./飞姬/敌人1 _命中。png’)

  a1=pygame.image.load( ./飞姬/英雄_炸掉_ n1。png’)

  b1=pygame.image.load( ./feiji/hero _炸毁_ N2。png’)

  c1=pygame.image.load(./飞姬/英雄_炸掉_ n3。png’)

  d1=pygame.image.load(./飞姬/英雄_炸裂_ n4。png’)

  hero_explode=[a1,b1,c1,d1]

  explode=[a,b,c,d,e]

  数量=0

  hnum=0

  计数=0

  极好的敌人_植物(屏幕,敌人,炸弹):

  全球敌人_x

  全球敌人_y

  全球旗帜

  全局编号

  全局计数

  全球炸弹_列表

  全球敌人_生活

  如果敌人_生活==活 :

  如果flag==1且敌人x=0:

  敌人x -=20

  else:

  标志=0

  如果标志==0且enemy_x=320:

  敌人x=20

  else:

  标志=1

  screen.blit(敌人,(敌人_x,敌人_y))

  elif敌人_生命==死亡 :

  screen.blit(explode[num],(enemy_x,enemy_y))

  bomb_list.clear()

  数量=1

  如果数量==4:

  敌人_生活=生活

  数量=0

  如果计数% 10==0:

  bomb_list.append({x:敌人_x 30, y:敌人_y 20})

  计数=1

  对于b在炸弹_列表:中

  screen.blit(bomb,(b[x],b[y]))

  b[y]=10

  极好的英雄_植物(屏幕,英雄,子弹):

  全球英雄_x

  全球英雄_y

  全球敌人_生活

  全球英雄_爆炸

  全球敌人_x

  全球敌人_y

  全球hnum

  全球炸弹_列表

  全球英雄_生活

  对于b在炸弹_列表:中

  # 注意区间的取值

  如果b[x]

  <= hero_x + 30 and b["x"] >= hero_x and b["y"] >= hero_y and b["y"] <= hero_y + 30:

              hero_life = "death"

              break

      if hero_life == "death":

          mybullet.clear()

          screen.blit(hero_explode[hnum], (hero_x, hero_y))

          hnum += 1

          if hnum == 4:

              hnum = 0

              hero_life = "live"

      if hero_life == "live":

          screen.blit(hero, (hero_x, hero_y))

          # 事件捕获,将捕获的事件放在列表中

          # 快速运行然后接受命令造成连续性的画面,有的时候可能为空。

          for event in pygame.event.get():

              # 关闭游戏

              if event.type == pygame.QUIT:

                  # 退出游戏

                  exit()

              elif event.type == pygame.KEYDOWN:

                  if event.key == pygame.K_RIGHT:

                      hero_x += 10

                  elif event.key == pygame.K_LEFT:

                      hero_x -= 10

                  elif event.key == pygame.K_DOWN:

                      hero_y += 10

                  elif event.key == pygame.K_UP:

                      hero_y -= 10

                  elif event.key == pygame.K_SPACE:

                      print("发射子弹")

                      mybullet.append({"x": hero_x + 30, "y": hero_y - 20})

          for i in mybullet:

              # 注意出界的子弹所以要大于0

              if i["x"] <= enemy_x + 20 and i["x"] >= enemy_x and i["y"] <= 20 and i["y"] >= 0:

                  enemy_life = "death"

              screen.blit(bullet, (i["x"], i["y"]))

              # 散弹模式

              # screen.blit(bullet, (i["x"]-20, i["y"]))

              # screen.blit(bullet, (i["x"]+20, i["y"]))

              # 这样就可以自动控制上升和时间间隔了

              i["y"] -= 10

  def main():

      流程控制

      # 1 创建一个游戏窗口

      # display方法:展示相关的都会用到这个方法

      # 参数1:元组(长,高)像素

      # 参数2:有无特殊功能

      # 参数3:像素深度

      screen = pygame.display.set_mode((400, 800), 0, 32)

      # 加载背景图片

      background = pygame.image.load("./feiji/background.png")

      # 加载飞机图片

      hero = pygame.image.load("./feiji/hero1.png")

      # 加载子弹照片

      bullet = pygame.image.load("./feiji/plane.png")

      # 加载导弹

      bomb = pygame.image.load("./feiji/bomb-1.gif")

      # 加载敌人飞机照片

      enemy = pygame.image.load("./feiji/enemy1.png")

      # 图片添加到屏幕

      # blit剪切,粘贴

      # screen 类似指针的使用带动目的地址的数据改动

      while True:

          screen.blit(background, (0, 0))

          # 显示英雄飞机

          hero_plant(screen, hero, bullet)

          # 显示敌人飞机

          enemy_plant(screen, enemy, bomb)

          # 数据更新加载出来

          pygame.display.update()

          # 图片多显示一会

          time.sleep(0.1)

  main()

  

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

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

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