一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python實戰小游戲飛機大戰詳解

Python實戰小游戲飛機大戰詳解

2022-02-24 00:28嗨!程序媛 Python

飛機大戰想必是很多人童年時期的經典游戲,我們依舊能記得抱個老人機娛樂的場景,下面這篇文章主要給大家介紹了關于如何利用python寫一個簡單的飛機大戰小游戲的相關資料,需要的朋友可以參考下

導語

“看見別人都那么努力,那么勤奮,那么意氣風發地走在成功的道路上,你問問自己:難道就不想成為他們的絆腳石嗎?”

——周一整理好心情好好出發吧!

Python實戰小游戲飛機大戰詳解

大家好啊,還在學習的小小伙伴兒慢慢學哈~學完基礎的你,今天可以放松下,跟著小編玩會兒游戲再繼續哦!

新的一周要努力哦!趕不上別人至少也要慢慢溜上去,曉得吧?乖巧.jpg “曉得曉得,會努力的”。

Python實戰小游戲飛機大戰詳解

大家還記得微信版《經典飛機大戰》嘛?

今天做的這款“打飛機”小游戲――畫面詼諧,精致,完全復刻經典微信飛機大戰哦!

完全復刻?怎么?大家不信嘛!那跟著小編一起來看看吧~

Python實戰小游戲飛機大戰詳解

 

?正文

一、環境安裝

本文是寫的游戲代碼,基于Pygame的源碼項目,這里是自己寫的飛機大戰的1.0版本,比較簡陋。

準備:Python3、Pycharm、pygame模塊以及自帶的部分模塊。

pip install -i https://pypi.douban.com/simple/  pygame

二、我方飛機

def main():
  global is_hit
  global nums
  screen = pygame.display.set_mode((480, 852), 0, 32)
  background = pygame.image.load("./feiji/background.png")
  # 創建飛機
  hero = HeroPlane(screen)
  enermy_plane = EnermyPlane(screen)
  while True:
      global hero_nums
      global enermy_nums
      # 顯示背景
      screen.blit(background, (0, 0))
      # 顯示我方飛機
      hero.display()
      # 測試是否被子彈擊中
      hero.test(enermy_plane.bullets)
      if hero.is_hit:
          hero_nums += 1
          if hero_nums == 10:
              hero.image = pygame.image.load("./feiji/hero_blowup_n1.png")
          elif hero_nums == 20:
              hero.image = pygame.image.load("./feiji/hero_blowup_n2.png")
          elif hero_nums == 30:
              hero.image = pygame.image.load("./feiji/hero_blowup_n3.png")
          elif hero_nums == 40:
              hero.image = pygame.image.load("./feiji/hero_blowup_n4.png")
          elif hero_nums > 50:
              break

三、敵方飛機

# 顯示敵飛機
      enermy_plane.display()
      enermy_plane.test(hero.bullets)
      if enermy_plane.is_hit:
          enermy_nums += 1
          if enermy_nums == 10:
              enermy_plane.image = pygame.image.load("./feiji/enemy0_down1.png")
          elif enermy_nums == 20:
              enermy_plane.image = pygame.image.load("./feiji/enemy0_down2.png")
          elif enermy_nums == 30:
              enermy_plane.image = pygame.image.load("./feiji/enemy0_down3.png")
          elif enermy_nums == 40:
              enermy_plane.image = pygame.image.load("./feiji/enemy0_down4.png")
          elif enermy_nums > 50:
              enermy_plane = EnermyPlane(screen)
              enermy_nums = 0
      else:
          enermy_plane.move()
          enermy_plane.fire()

      # 控制飛機左右
      key_control(hero)
      # 刷新屏幕
      pygame.display.update()
      # 程序休眠0.01秒
      time.sleep(0.01)

四、控制鍵盤移動

def key_control(hero):
  for event in pygame.event.get():
      if event.type == QUIT:
          print("exit")
          exit()
      elif event.type == KEYDOWN:
          if event.key == K_a or event.key == K_LEFT:
              hero.move_left()
              print("left")
          elif event.key == K_d or event.key == K_RIGHT:
              hero.move_right()
              print("right")
          elif event.key == K_SPACE:
              hero.fire()
              print("space")

五、檢測子彈碰撞

class BasePlane(object):
  def __init__(self, screen, x, y, image):
      self.x = x
      self.y = y
      self.screen = screen
      self.image = pygame.image.load(image)
      self.is_hit = False  # 此標志用來表示飛機是否被擊中了
      self.bullets = []

  def test(self, bullets):
      for bullet in bullets:
          if self.x < bullet.x < self.x + self.image.get_width() and \
                                  self.y < bullet.y < self.y + self.image.get_height():
              self.is_hit = True

              #  檢測子彈碰撞
      for item in self.bullets:
          for bullet in bullets:
              if item.x < bullet.x < item.x + item.image.get_width() and \
                                      item.y < bullet.y < item.y + item.image.get_height():
                  item.is_hit = True
                  bullet.is_hit = True

六、效果圖

?Python實戰小游戲飛機大戰詳解

?Python實戰小游戲飛機大戰詳解

 

總結

嘿~簡單版本是無限流的,沒補給包,大飛機小飛機啥的!

后續有時間的話小編會繼續完善,奧里給~

Python實戰小游戲飛機大戰詳解

好啦!本次文章就到這里了~如有想跟著小編一起學習交流的,歡迎大家!

Python實戰小游戲飛機大戰詳解

到此這篇關于Python實戰小游戲飛機大戰詳解的文章就介紹到這了,更多相關Python 飛機大戰內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/xy258009/article/details/121114186

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 色琪琪久久草在线视频 | 亲爱的客栈第二季免费观看完整版 | 国产成人精品一区二区仙踪林 | 午夜国产小视频 | 日你逼 | 成年人在线免费观看视频网站 | 国产午夜亚洲精品一区网站 | 欧美日韩一区二区三区在线视频 | 国产成+人+综合+亚洲欧美丁香花 | aaa毛片在线 | 亚洲久草视频 | xxx95日本老师xxx学生 | 高清视频在线播放 | 青草久久伊人 | 欧美高清一级 | 好男人社区www影院在线观看 | 波多野结衣中文丝袜字幕 | 国产成人v爽在线免播放观看 | 亚洲国产天堂久久精品网 | 天天操天天射天天爽 | 国产一区风间由美在线观看 | 日本成熟| 亚洲va久久久噜噜噜久久狠狠 | 精品一区二区三区自拍图片区 | 免费视频一区 | 青青草国产一区二区三区 | 亚洲一欧洲中文字幕在线 | 精品九九视频 | 久久精选视频 | 欧美久久综合网 | 99久久精品免费观看区一 | 日本zzzzwww大片免费 | 国产精品色图 | 欧美日韩精品一区二区三区视频 | 欧美日韩精品一区二区三区视频播放 | 亚洲欧洲网站 | 红杏网 | 福利视频一区二区思瑞 | 97午夜| 男人天堂2023 | 奇米影视888四色首页 |