<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      pygame小游戲打飛機_6發射子彈

      定義子彈的類:

      創建子彈時,通過設置子彈的初始位置坐標(與玩家的相對位置坐標)使子彈出現在玩家正上方

      # 新增 定義子彈的類,其中包括圖片(self.img)初始位置( self.x,self.y )運動速度(self.step)
      class Bullet:
          def __init__(self):
              self.img = pygame.image.load('bullet.png')
              # 新增 將子彈顯示在玩家上方
              self.x = playerX + 48
              self.y = playerY + 5
              # 新增 定義變量表示子彈運動速度。
              self.step = 1
      # 新增 保存現有的子彈
      bullets = []

      定義顯示子彈的函數:

      子彈以一定速度向上運動,當出界時刪除子彈

      # 新增 定義顯示子彈的函數
      def show_bullet():
          # 新增 循環控制所有子彈的顯示、移動和刪除
          for b in bullets:
              # 新增 使子彈出現在(b.x,b.y)的位置
              screen.blit(b.img, (b.x, b.y))
              # 新增 使子彈向上移動
              b.y -= b.step
              # 新增 判斷子彈是否出界,是則移除
              if b.y < 0 :
                  bullets.remove(b)

      定義空格鍵發射子彈:

      # 新增 判斷按下空格鍵
      elif event.key ==pygame.K_SPACE :
          # 新增 創建一顆子彈
          bullets.append(Bullet())

      完整代碼:

      # 引用 pygame
      import pygame
      # 引用隨機模塊
      import random
      
      # 使程序初始化
      pygame.init()
      # 設置游戲窗口大小
      screen = pygame.display.set_mode((480, 700))
      # 設置標題
      pygame.display.set_caption('打飛機')
      # 設置游戲圖標
      icon = pygame.image.load('ufo.png')
      pygame.display.set_icon(icon)
      # 引入背景圖片
      bgImg = pygame.image.load('background.png')
      
      # 引入玩家圖片
      playerImg = pygame.image.load('player.png')
      # 定義玩家初始位置
      playerX = 225
      playerY = 450
      # 定義變量表示玩家運動速度
      playerStep = 0
      # 變量表示敵人數量
      number_of_enemies = 6
      
      # 定義敵人的類,其中包括圖片(self.img)初始位置( self.x,self.y )運動速度(self.step)
      class Enemy:
          def __init__(self):
              self.img = pygame.image.load('enemy.png')
              # 通過 random 函數進行隨機位置坐標生成
              self.x = random.randint(100, 380)
              self.y = random.randint(30, 70)
              # 定義變量表示敵人運動速度。注意:將速度改為隨機數時由于為浮點型用.uniform函數
              self.step = random.uniform(0.05, 0.3)
              
      # 新增 定義子彈的類,其中包括圖片(self.img)初始位置( self.x,self.y )運動速度(self.step)
      class Bullet:
          def __init__(self):
              self.img = pygame.image.load('bullet.png')
              # 新增 將子彈顯示在玩家上方
              self.x = playerX + 48
              self.y = playerY + 5
              # 新增 定義變量表示子彈運動速度。
              self.step = 1
              
      # 新增 保存現有的子彈
      bullets = []
      
      # 創建列表進行引入number_of_enemies個敵人
      enemies = []
      for i in range(number_of_enemies):
          # 每進行一次循環添加一個Enemy到列表中
          enemies.append(Enemy())
      
      # 定義顯示敵人的函數
      def show_enemy():
          # 循環控制所有敵人的顯示、移動、邊界反彈
          for e in enemies:
              # 使敵人出現在(enemyX, enemyY)的位置
              screen.blit(e.img, (e.x, e.y))
              # 使敵人飛機左右移動
              e.x += e.step
              # 控制敵人移動邊界,當敵人碰到左右邊界時反彈,當敵人運動到上下邊界時停止
              if e.x > 378:
                  e.step *= -1
                  # 當碰到左右邊界時下沉
                  e.y += 20
              if e.x < 0:
                  e.step *= -1
                  e.y += 20
              # 控制邊界
              if e.y > 572:
                  e.y = 572
              if e.y < 0:
                  e.y = 0
                  
      # 新增 定義顯示子彈的函數
      def show_bullet():
          # 新增 循環控制所有子彈的顯示、移動和刪除
          for b in bullets:
              # 新增 使子彈出現在(b.x,b.y)的位置
              screen.blit(b.img, (b.x, b.y))
              # 新增 使子彈向上移動
              b.y -= b.step
              # 新增 判斷子彈是否出界,是則移除
              if b.y < 0 :
                  bullets.remove(b)
      
      running = True
      # 進行循環 游戲主循環
      while running:
          # 繪制背景
          screen.blit(bgImg, (0, 0))
          # 繪制玩家
          screen.blit(playerImg, (playerX, playerY))
          # 調用顯示敵人函數
          show_enemy()
          # 新增 顯示子彈
          show_bullet()
          # 獲取游戲事件隊列中的所有事件(涉及到玩家的各種交互,如鼠標點擊、鍵盤操作、窗口事件等)
          for event in pygame.event.get():
              # 如果事件是QUIT事件,如點擊窗口的關閉按鈕,則退出循環
              if event.type == pygame.QUIT:
                  # 退出循環
                  running = False
              # KEYDOWN 判斷鍵盤是否按下
              if event.type == pygame.KEYDOWN:
                  # 判斷按下左右鍵進行移動賦值
                  if event.key == pygame.K_RIGHT:
                      playerStep = 0.5
                  elif event.key == pygame.K_LEFT:
                      playerStep = -0.5
                  # 新增 判斷按下空格鍵
                  elif event.key == pygame.K_SPACE:
                      # 新增 創建一顆子彈
                      bullets.append(Bullet())
      
              # KEYUP 判斷鍵盤是否抬起
              if event.type == pygame.KEYUP:
                  # 抬起鍵盤時將移動距離改為 0
                  playerStep = 0
      
          # 玩家左右移動
          playerX += playerStep
          # 控制玩家移動的邊界
          if playerX > 378:
              playerX = 378
          if playerX < 0:
              playerX = 0
          if playerY > 572:
              playerY = 572
          if playerY < 0:
              playerY = 0
      
          # 界面更新
          pygame.display.update()

      運行效果如下:

      左右方向鍵移動玩家,空格鍵發射子彈

      屏幕錄制 2025-08-02 180034

       

      posted @ 2025-08-02 18:02  賽博郎中  閱讀(327)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 青青草无码免费一二三区| 成人国产亚洲精品天堂av| 亚洲欧美日韩愉拍自拍美利坚| 日本丰满护士bbw| 国产丰满乱子伦午夜福利| 国产一区二区三区不卡视频| 成人免费看片又大又黄| 澳门永久av免费网站| 亚洲日本韩国欧美云霸高清| 国产永久免费高清在线观看| 国产自国产自愉自愉免费24区| 亚洲av色夜色精品一区| 亚洲精品一区二区毛豆| 日本极品少妇videossexhd| 久久精品波多野结衣| 色综合色综合综合综合综合| 国产麻豆91网在线看| 亚洲欧洲日韩国内精品| 国产视频最新| 亚欧洲乱码视频一二三区| 尼木县| 国产短视频精品一区二区| 人妻激情视频一区二区三区| 亚洲av无码国产在丝袜线观看| 久久综合亚洲色一区二区三区| 成熟妇女性成熟满足视频| 在线中文一区字幕对白| 国产精品极品美女自在线观看免费 | 国产MD视频一区二区三区| 湄潭县| 国产精品无码成人午夜电影| 秋霞鲁丝片成人无码| 99久久精品费精品国产一区二 | 精品中文人妻在线不卡| 亚洲av久久精品狠狠爱av| 国内揄拍国内精品人妻| 午夜男女爽爽影院在线| 四虎永久精品在线视频| 亚洲熟妇自偷自拍另类| 亚洲免费观看视频| 中文无码精品a∨在线|