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

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

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

      pygame小游戲飛機大戰_6敵人開火

      引入敵人子彈:

      算出敵人子彈出射點并在敵人出射點繪制子彈

      # 引入敵人子彈的類
      class EnemyBullet(object):
          def __init__(self, screen, x, y):
              # 定義坐標
              self.x = x + 29 - 2
              self.y = y + 43
              # 引入子彈圖片
              self.image = pygame.image.load("./images/bullet2.png")
              # 顯示窗口
              self.screen = screen
              # 定義速度
              self.speed = 4
      
          # 定義顯示子彈的方法
          def display(self):
              # 顯示子彈到窗口
              self.screen.blit(self.image, (self.x, self.y))
      
          # 定義移動子彈的方法
          def auto_move(self):
              # 修改子彈y坐標使子彈飛起來
              self.y += self.speed

      在敵人類中引入子彈存入列表中并進行循環實現發射:

       

      # 引入敵方飛機的類
      class Enemy(object):
          # 創建玩家的方法,引入screen模塊
          def __init__(self, screen):
              # 引入圖片創建敵人
              self.enemy = pygame.image.load("./images/enemy1.png")  # 51*43
              # 設置速度變量
              self.speed = 5
      
              self.x = 0
              self.y = 0
              # 使screen變為飛機類的一個屬性
              self.screen = screen
              # 定義裝子彈的列表
              self.bullets = []
      
          def display(self):
              # 繪制敵人
              self.screen.blit(self.enemy, (self.x, self.y))
              # 遍歷所有子彈
              for bullet in self.bullets:
                  # 引入讓子彈飛起來的方法
                  bullet.auto_move()
                  # 顯示子彈
                  bullet.display()
      
          # 定義移動飛機的方法
          def auto_move(self):
              # 將direction改為全局變量
              global direction
              # 判斷方向進行移動
              if direction == "right":
                  self.x += self.speed
              if direction == "left":
                  self.x -= self.speed
              # 定義碰壁時調整移動方向
              if self.x >= 480 - 51:
                  direction = "left"
              if self.x <= 0:
                  direction = "right"
          # 定義自動開火的方法
          def auto_fire(self):
              #創建單個子彈
              bullet = EnemyBullet(self.screen,self.x,self.y)
              #將子彈放入列表中
              self.bullets.append(bullet)

      引入子彈和敵人的方法到主程序:

      # 敵人自動移動
      enemy.auto_move()
      # 敵人自動開火
      enemy.auto_fire()

      完整代碼:

      # 引入pygame
      import pygame
      # 引入time模塊
      import time
      # 引入pygame中的所有方法
      from pygame.constants import K_UP, K_RIGHT, K_DOWN, K_LEFT, K_w, K_a, K_s, K_d, K_SPACE
      
      
      # 定義初始為向右
      direction = "right"
      
      
      # 引入敵方飛機的類
      class Enemy(object):
          # 創建玩家的方法,引入screen模塊
          def __init__(self, screen):
              # 引入圖片創建敵人
              self.enemy = pygame.image.load("./images/enemy1.png")  # 51*43
              # 設置速度變量
              self.speed = 5
      
              self.x = 0
              self.y = 0
              # 使screen變為飛機類的一個屬性
              self.screen = screen
              # 定義裝子彈的列表
              self.bullets = []
      
          def display(self):
              # 繪制敵人
              self.screen.blit(self.enemy, (self.x, self.y))
              # 遍歷所有子彈
              for bullet in self.bullets:
                  # 引入讓子彈飛起來的方法
                  bullet.auto_move()
                  # 顯示子彈
                  bullet.display()
      
          # 定義移動飛機的方法
          def auto_move(self):
              # 將direction改為全局變量
              global direction
              # 判斷方向進行移動
              if direction == "right":
                  self.x += self.speed
              if direction == "left":
                  self.x -= self.speed
              # 定義碰壁時調整移動方向
              if self.x >= 480 - 51:
                  direction = "left"
              if self.x <= 0:
                  direction = "right"
          # 定義自動開火的方法
          def auto_fire(self):
              #創建單個子彈
              bullet = EnemyBullet(self.screen,self.x,self.y)
              #將子彈放入列表中
              self.bullets.append(bullet)
      # 引入飛機的類
      class Plane(object):
          # 創建玩家的方法,引入screen模塊
          def __init__(self, screen):
              # 引入圖片創建玩家
              self.player = pygame.image.load("./images/me1.png")
              # 設置速度變量
              self.speed = 10
      
              self.x = 179
              self.y = 500
              # 使screen變為飛機類的一個屬性
              self.screen = screen
              # 定義裝子彈的列表
              self.bullets = []
      
          # 創建玩家移動的方法
          def key_control(self):
              # 判斷按下鍵盤事件,對玩家x,y坐標進行調整使玩家移動
              key_pressed = pygame.key.get_pressed()
              if key_pressed[K_w] or key_pressed[K_UP]:
                  self.y -= self.speed
              if key_pressed[K_d] or key_pressed[K_RIGHT]:
                  self.x += self.speed
              if key_pressed[K_a] or key_pressed[K_LEFT]:
                  self.x -= self.speed
              if key_pressed[K_s] or key_pressed[K_DOWN]:
                  self.y += self.speed
              if key_pressed[K_SPACE]:
                  # 按下空格鍵發射子彈
                  bullet = Bullet(self.screen, self.x, self.y)
                  # 將子彈存入列表
                  self.bullets.append(bullet)
      
          def display(self):
              # 繪制玩家
              self.screen.blit(self.player, (self.x, self.y))
              # 遍歷所有子彈
              for bullet in self.bullets:
                  # 引入讓子彈飛起來的方法
                  bullet.auto_move()
                  # 顯示子彈
                  bullet.display()
      # 引入敵人子彈的類
      class EnemyBullet(object):
          def __init__(self, screen, x, y):
              # 定義坐標
              self.x = x + 29 - 2
              self.y = y + 43
              # 引入子彈圖片
              self.image = pygame.image.load("./images/bullet2.png")
              # 顯示窗口
              self.screen = screen
              # 定義速度
              self.speed = 4
      
          # 定義顯示子彈的方法
          def display(self):
              # 顯示子彈到窗口
              self.screen.blit(self.image, (self.x, self.y))
      
          # 定義移動子彈的方法
          def auto_move(self):
              # 修改子彈y坐標使子彈飛起來
              self.y += self.speed
      
      # 引入子彈的類
      class Bullet(object):
          def __init__(self, screen, x, y):
              # 定義坐標
              self.x = x + 51 - 2
              self.y = y
              # 引入子彈圖片
              self.image = pygame.image.load("./images/bullet1.png")
              # 顯示窗口
              self.screen = screen
              # 定義速度
              self.speed = 10
      
          # 定義顯示子彈的方法
          def display(self):
              # 顯示子彈到窗口
              self.screen.blit(self.image, (self.x, self.y))
      
          # 定義移動子彈的方法
          def auto_move(self):
              # 修改子彈y坐標使子彈飛起來
              self.y -= self.speed
      
      
      # 創建main函數創建主程序
      def main():
          # 創建一個窗口
          screen = pygame.display.set_mode((480, 700), 0, 32)
          # 引入圖片創建背景
          background = pygame.image.load("./images/background.png")
          # 引入圖片創建玩家
          player = pygame.image.load("./images/me1.png")
          # 引入玩家信息
          player = Plane(screen)
          # 引入敵人信息
          enemy = Enemy(screen)
          # 設置速度變量
          speed = 10
      
          x = 179
          y = 500
          while True:
              # 繪制背景
              screen.blit(background, (0, 0))
              # 獲取事件
              for event in pygame.event.get():
                  # 如果事件是QUIT事件,如點擊窗口的關閉按鈕,則退出循環
                  if event.type == pygame.QUIT:
                      # 執行退出游戲
                      pygame.quit
                      # 退出程序
                      exit()
              # 執行飛機按鍵監聽
              player.key_control()
              # 顯示飛機
              player.display()
              # 顯示敵人
              enemy.display()
              # 敵人自動移動
              enemy.auto_move()
              # 敵人自動開火
              enemy.auto_fire()
              # 界面更新
              pygame.display.update()
              # 使程序每次運行時停留0.01秒
              time.sleep(0.01)
      
      
      if __name__ == '__main__':
          main()

      演示如下:

      屏幕錄制 2025-08-12 151224

      由于敵人子彈發射速度過快為降低子彈發射頻率使用random函數:

      # 引入random
      import random
      # 定義自動開火的方法
      def auto_fire(self):
          # 使用隨機數函數進行隨機抽取一個1到10的一個隨機數
          random_number = random.randint(1, 10)
          # 當隨機數為8時創建子彈
          if random_number == 8:
              # 創建單個子彈
              bullet = EnemyBullet(self.screen, self.x, self.y)
              # 將子彈放入列表中
              self.bullets.append(bullet)

      完整代碼:

      # 引入random
      import random
      # 引入pygame
      import pygame
      # 引入time模塊
      import time
      # 引入pygame中的所有方法
      from pygame.constants import K_UP, K_RIGHT, K_DOWN, K_LEFT, K_w, K_a, K_s, K_d, K_SPACE
      
      # 定義初始為向右
      direction = "right"
      
      
      # 引入敵方飛機的類
      class Enemy(object):
          # 創建玩家的方法,引入screen模塊
          def __init__(self, screen):
              # 引入圖片創建敵人
              self.enemy = pygame.image.load("./images/enemy1.png")  # 51*43
              # 設置速度變量
              self.speed = 5
      
              self.x = 0
              self.y = 0
              # 使screen變為飛機類的一個屬性
              self.screen = screen
              # 定義裝子彈的列表
              self.bullets = []
      
          def display(self):
              # 繪制敵人
              self.screen.blit(self.enemy, (self.x, self.y))
              # 遍歷所有子彈
              for bullet in self.bullets:
                  # 引入讓子彈飛起來的方法
                  bullet.auto_move()
                  # 顯示子彈
                  bullet.display()
      
          # 定義移動飛機的方法
          def auto_move(self):
              # 將direction改為全局變量
              global direction
              # 判斷方向進行移動
              if direction == "right":
                  self.x += self.speed
              if direction == "left":
                  self.x -= self.speed
              # 定義碰壁時調整移動方向
              if self.x >= 480 - 51:
                  direction = "left"
              if self.x <= 0:
                  direction = "right"
      
          # 定義自動開火的方法
          def auto_fire(self):
              # 使用隨機數函數進行隨機抽取一個1到10的一個隨機數
              random_number = random.randint(1, 10)
              # 當隨機數為8時創建子彈
              if random_number == 8:
                  # 創建單個子彈
                  bullet = EnemyBullet(self.screen, self.x, self.y)
                  # 將子彈放入列表中
                  self.bullets.append(bullet)
      
      
      # 引入飛機的類
      class Plane(object):
          # 創建玩家的方法,引入screen模塊
          def __init__(self, screen):
              # 引入圖片創建玩家
              self.player = pygame.image.load("./images/me1.png")
              # 設置速度變量
              self.speed = 10
      
              self.x = 179
              self.y = 500
              # 使screen變為飛機類的一個屬性
              self.screen = screen
              # 定義裝子彈的列表
              self.bullets = []
      
          # 創建玩家移動的方法
          def key_control(self):
              # 判斷按下鍵盤事件,對玩家x,y坐標進行調整使玩家移動
              key_pressed = pygame.key.get_pressed()
              if key_pressed[K_w] or key_pressed[K_UP]:
                  self.y -= self.speed
              if key_pressed[K_d] or key_pressed[K_RIGHT]:
                  self.x += self.speed
              if key_pressed[K_a] or key_pressed[K_LEFT]:
                  self.x -= self.speed
              if key_pressed[K_s] or key_pressed[K_DOWN]:
                  self.y += self.speed
              if key_pressed[K_SPACE]:
                  # 按下空格鍵發射子彈
                  bullet = Bullet(self.screen, self.x, self.y)
                  # 將子彈存入列表
                  self.bullets.append(bullet)
      
          def display(self):
              # 繪制玩家
              self.screen.blit(self.player, (self.x, self.y))
              # 遍歷所有子彈
              for bullet in self.bullets:
                  # 引入讓子彈飛起來的方法
                  bullet.auto_move()
                  # 顯示子彈
                  bullet.display()
      
      
      # 引入敵人子彈的類
      class EnemyBullet(object):
          def __init__(self, screen, x, y):
              # 定義坐標
              self.x = x + 29 - 2
              self.y = y + 43
              # 引入子彈圖片
              self.image = pygame.image.load("./images/bullet2.png")
              # 顯示窗口
              self.screen = screen
              # 定義速度
              self.speed = 4
      
          # 定義顯示子彈的方法
          def display(self):
              # 顯示子彈到窗口
              self.screen.blit(self.image, (self.x, self.y))
      
          # 定義移動子彈的方法
          def auto_move(self):
              # 修改子彈y坐標使子彈飛起來
              self.y += self.speed
      
      
      # 引入子彈的類
      class Bullet(object):
          def __init__(self, screen, x, y):
              # 定義坐標
              self.x = x + 51 - 2
              self.y = y
              # 引入子彈圖片
              self.image = pygame.image.load("./images/bullet1.png")
              # 顯示窗口
              self.screen = screen
              # 定義速度
              self.speed = 10
      
          # 定義顯示子彈的方法
          def display(self):
              # 顯示子彈到窗口
              self.screen.blit(self.image, (self.x, self.y))
      
          # 定義移動子彈的方法
          def auto_move(self):
              # 修改子彈y坐標使子彈飛起來
              self.y -= self.speed
      
      
      # 創建main函數創建主程序
      def main():
          # 創建一個窗口
          screen = pygame.display.set_mode((480, 700), 0, 32)
          # 引入圖片創建背景
          background = pygame.image.load("./images/background.png")
          # 引入圖片創建玩家
          player = pygame.image.load("./images/me1.png")
          # 引入玩家信息
          player = Plane(screen)
          # 引入敵人信息
          enemy = Enemy(screen)
          # 設置速度變量
          speed = 10
      
          x = 179
          y = 500
          while True:
              # 繪制背景
              screen.blit(background, (0, 0))
              # 獲取事件
              for event in pygame.event.get():
                  # 如果事件是QUIT事件,如點擊窗口的關閉按鈕,則退出循環
                  if event.type == pygame.QUIT:
                      # 執行退出游戲
                      pygame.quit
                      # 退出程序
                      exit()
              # 執行飛機按鍵監聽
              player.key_control()
              # 顯示飛機
              player.display()
              # 顯示敵人
              enemy.display()
              # 敵人自動移動
              enemy.auto_move()
              # 敵人自動開火
              enemy.auto_fire()
              # 界面更新
              pygame.display.update()
              # 使程序每次運行時停留0.01秒
              time.sleep(0.01)
      
      
      if __name__ == '__main__':
          main()

      演示如下:

      屏幕錄制 2025-08-12 152710

      posted @ 2025-08-12 15:31  賽博郎中  閱讀(76)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 一区二区三区四区黄色片| 国产精品第一二三区久久| 18禁无遮挡啪啪无码网站破解版| 99久久亚洲综合精品成人| 五月天天天综合精品无码| 亚洲国产精品久久久久婷婷老年| 激情综合色综合啪啪开心| 精品人妻av区乱码| 老湿机69福利区无码| 激情综合网激情五月我去也| 精品无码久久久久国产电影| 国产区一区二区现看视频| 渝中区| 中日韩中文字幕一区二区| 国产精品中文字幕在线| 亚洲偷自拍国综合| 西乌| 亚洲综合精品香蕉久久网| 免费无码一区无码东京热| 太保市| 欧美丰满熟妇乱XXXXX网站| 一本一道av中文字幕无码| 少妇人妻偷人一区二区| 日韩美女亚洲性一区二区| 亚洲AV永久无码一区| 黑人av无码一区| 激情内射亚洲一区二区三区| 蜜芽久久人人超碰爱香蕉| 日韩精品福利一区二区三区| 人妻综合专区第一页| 亚洲国产欧美一区二区好看电影 | 国产69精品久久久久久| 中文国产不卡一区二区| 嘉义市| 国产无遮挡又黄又爽不要vip软件| 风流老熟女一区二区三区| 亚洲av激情一区二区三区| 中文字幕有码高清日韩| 啊轻点灬大JI巴太粗太长了在线| 日本亚洲一级中文字幕| 男人下部进女人下部视频|