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

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

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

      pygame小游戲飛機大戰_9繼承精靈敵人優化

      敵人優化后:

      # 引入敵方飛機的類
      class Enemy(pygame.sprite.Sprite):
          def __init__(self, screen):
              # 調用繼承精靈初始化方法
              pygame.sprite.Sprite.__init__(self)
              # 引入圖片創建敵人
              self.enemy = pygame.image.load("./images/enemy1.png")
              self.image = self.enemy
              # 設置速度變量
              self.speed = 10  # 降低速度使游戲可玩
              # 根據圖片進行獲取矩形對象
              self.rect = self.image.get_rect()
              self.rect.topleft = [0, 0]
              self.x = 0
              self.y = 0
              # 使screen變為飛機類的一個屬性
              self.screen = screen
              # 定義裝子彈的精靈組
              self.bullets = pygame.sprite.Group()
          def display(self):
              self.screen.blit(self.enemy, (self.rect.left, self.rect.top))
              # 改為使用精靈組的方法繪制子彈
              self.bullets.update()  # 更新子彈位置
              self.bullets.draw(self.screen)  # 繪制子彈
      
          # 定義移動飛機的方法
          def auto_move(self):
              # 將direction改為全局變量
              global direction
              # 判斷方向進行移動
              if direction == "right":
                  self.rect.right += self.speed
              if direction == "left":
                  self.rect.right -= self.speed
              # 定義碰壁時調整移動方向
              if self.rect.right >= 480 - 51:
                  direction = "left"
              if self.rect.right <= 0:
                  direction = "right"
          def update(self):
              self.auto_fire()
              self.auto_move()
              self.display()
          # 定義自動開火的方法
          def auto_fire(self):
              # 使用隨機數函數進行隨機抽取一個1到10的一個隨機數
              random_number = random.randint(1, 10)
              # 當隨機數為8時創建子彈
              if random_number == 8:
                  # 創建單個子彈
                  bullet = EnemyBullet(self.screen,self.rect.left, self.rect.top)
                  # 將子彈放入列表中
                  self.bullets.add(bullet)

      玩家子彈優化:

      
      # 引入子彈的類
      class Bullet(pygame.sprite.Sprite):
          def __init__(self, screen, x, y):
              # 調用繼承精靈初始化方法
              pygame.sprite.Sprite.__init__(self)
              # 引入子彈圖片
              self.image = pygame.image.load("./images/bullet1.png")
              # 根據圖片進行獲取矩形對象
              self.rect =  self.image.get_rect()
              self.rect.topleft = [x + 51 - 2,y ]
              self.x = x + 51 - 2
              self.y =  y
              # 顯示窗口
              self.screen = screen
              # 定義速度
              self.speed = 10
      
          def update(self):
              #修改子彈坐標
              self.rect.top -= self.speed
              # 如果子彈出界,銷毀子彈
              if self.rect.top < -22 :
                  self.kill()

      敵人子彈優化:

      # 引入敵人子彈的類
      class EnemyBullet(pygame.sprite.Sprite):
          def __init__(self, screen, x, y):
              # 調用繼承精靈初始化方法
              pygame.sprite.Sprite.__init__(self)
              # 引入子彈圖片
              self.image = pygame.image.load("./images/bullet2.png")
              # 根據圖片進行獲取矩形對象
              self.rect =  self.image.get_rect()
              self.rect.topleft = [x + 29 - 2,y + 43]
              self.x = x + 29 - 2
              self.y =  y + 43
              # 顯示窗口
              self.screen = screen
              # 定義速度
              self.speed = 4
      
          def update(self):
              #修改子彈坐標
              self.rect.top += self.speed
              # 如果子彈出界,銷毀子彈
              if self.rect.top > 550:
                  self.kill()

      完整代碼:

      # 引入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(pygame.sprite.Sprite):
          def __init__(self, screen):
              # 調用繼承精靈初始化方法
              pygame.sprite.Sprite.__init__(self)
              # 引入圖片創建敵人
              self.enemy = pygame.image.load("./images/enemy1.png")
              self.image = self.enemy
              # 設置速度變量
              self.speed = 10  # 降低速度使游戲可玩
              # 根據圖片進行獲取矩形對象
              self.rect = self.image.get_rect()
              self.rect.topleft = [0, 0]
              self.x = 0
              self.y = 0
              # 使screen變為飛機類的一個屬性
              self.screen = screen
              # 定義裝子彈的精靈組
              self.bullets = pygame.sprite.Group()
          def display(self):
              self.screen.blit(self.enemy, (self.rect.left, self.rect.top))
              # 改為使用精靈組的方法繪制子彈
              self.bullets.update()  # 更新子彈位置
              self.bullets.draw(self.screen)  # 繪制子彈
      
          # 定義移動飛機的方法
          def auto_move(self):
              # 將direction改為全局變量
              global direction
              # 判斷方向進行移動
              if direction == "right":
                  self.rect.right += self.speed
              if direction == "left":
                  self.rect.right -= self.speed
              # 定義碰壁時調整移動方向
              if self.rect.right >= 480 - 51:
                  direction = "left"
              if self.rect.right <= 0:
                  direction = "right"
          def update(self):
              self.auto_fire()
              self.auto_move()
              self.display()
          # 定義自動開火的方法
          def auto_fire(self):
              # 使用隨機數函數進行隨機抽取一個1到10的一個隨機數
              random_number = random.randint(1, 10)
              # 當隨機數為8時創建子彈
              if random_number == 8:
                  # 創建單個子彈
                  bullet = EnemyBullet(self.screen,self.rect.left, self.rect.top)
                  # 將子彈放入列表中
                  self.bullets.add(bullet)
      
      
      # 引入飛機的類
      class Plane(pygame.sprite.Sprite):
          # 創建玩家的方法,引入screen模塊
          def __init__(self, screen):
              # 引入圖片創建玩家
              self.player = pygame.image.load("./images/me1.png")
              self.image=self.player
              # 設置速度變量
              self.speed = 10
              # 調用繼承精靈初始化方法
              pygame.sprite.Sprite.__init__(self)
              # 根據圖片進行獲取矩形對象
              self.rect =  self.image.get_rect()
              self.rect.topleft = [179,500]
              self.x = 179
              self.y = 500
              # 使screen變為飛機類的一個屬性
              self.screen = screen
              # 定義裝子彈的列表
              self.bullets = pygame.sprite.Group()
      
          # 定義update方法包含檢測指令和繪制
          def update(self):
              self.key_control()
              self.display()
          # 創建玩家移動的方法
          def key_control(self):
              # 判斷按下鍵盤事件,對玩家x,y坐標進行調整使玩家移動
              key_pressed = pygame.key.get_pressed()
              if key_pressed[K_w] or key_pressed[K_UP]:
                  self.rect.top -= self.speed
              if key_pressed[K_d] or key_pressed[K_RIGHT]:
                  self.rect.right+= self.speed
              if key_pressed[K_a] or key_pressed[K_LEFT]:
                  self.rect.left -= self.speed
              if key_pressed[K_s] or key_pressed[K_DOWN]:
                  self.rect.bottom += self.speed
              if key_pressed[K_SPACE]:
                  # 按下空格鍵發射子彈
                  bullet = Bullet(self.screen, self.rect.left, self.rect.top)
                  # 將子彈存入列表
                  self.bullets.add(bullet)
      
          def display(self):
              # 繪制玩家
              self.screen.blit(self.player, self.rect)
              # 更新子彈坐標
              self.bullets.update()
              # 繪制所有子彈到屏幕
              self.bullets.draw(self.screen)
      
      # 引入敵人子彈的類
      class EnemyBullet(pygame.sprite.Sprite):
          def __init__(self, screen, x, y):
              # 調用繼承精靈初始化方法
              pygame.sprite.Sprite.__init__(self)
              # 引入子彈圖片
              self.image = pygame.image.load("./images/bullet2.png")
              # 根據圖片進行獲取矩形對象
              self.rect =  self.image.get_rect()
              self.rect.topleft = [x + 29 - 2,y + 43]
              self.x = x + 29 - 2
              self.y =  y + 43
              # 顯示窗口
              self.screen = screen
              # 定義速度
              self.speed = 4
      
          def update(self):
              #修改子彈坐標
              self.rect.top += self.speed
              # 如果子彈出界,銷毀子彈
              if self.rect.top > 550:
                  self.kill()
      
      
      
      # 引入子彈的類
      class Bullet(pygame.sprite.Sprite):
          def __init__(self, screen, x, y):
              # 調用繼承精靈初始化方法
              pygame.sprite.Sprite.__init__(self)
              # 引入子彈圖片
              self.image = pygame.image.load("./images/bullet1.png")
              # 根據圖片進行獲取矩形對象
              self.rect =  self.image.get_rect()
              self.rect.topleft = [x + 51 - 2,y ]
              self.x = x + 51 - 2
              self.y =  y
              # 顯示窗口
              self.screen = screen
              # 定義速度
              self.speed = 10
      
          def update(self):
              #修改子彈坐標
              self.rect.top -= self.speed
              # 如果子彈出界,銷毀子彈
              if self.rect.top < -22 :
                  self.kill()
      
      
      # 定義音樂的類
      class GameSound(object):
          def __init__(self):
              # 初始化主程序
              pygame.mixer.init()
              # 引入背景音樂
              pygame.mixer.music.load("./sound/game_music.ogg")
              # 調整聲音大小
              pygame.mixer.music.set_volume(0.5)
      
          def PlayMusic(self):
              # 開始播放音樂
              pygame.mixer.music.play(-1)
      
      
      # 創建main函數創建主程序
      def main():
          sound = GameSound()
          sound.PlayMusic()
          # 創建一個窗口
          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()

      此時優化后的程序可以正常運行

      posted @ 2025-08-19 20:21  賽博郎中  閱讀(34)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 精品中文人妻在线不卡| 国产成人午夜福利在线小电影 | 884aa四虎影成人精品| 精品无码久久久久国产| 国产成人午夜福利精品| 国产精品成人av电影不卡| 男人添女人下部高潮视频| 孝义市| 97久久超碰精品视觉盛宴| 亚洲av无码之国产精品网址蜜芽| 亚洲精品熟女国产| 国产超碰无码最新上传| 正在播放酒店约少妇高潮| 99久久亚洲综合精品成人网| 女人与牲口性恔配视频免费| 少女韩国在线观看完整版免费| 日本丰满熟妇videossexhd| 日韩精品一卡二卡三卡在线| 日本丶国产丶欧美色综合| 综合偷自拍亚洲乱中文字幕| 梁河县| 国产95在线 | 欧美| 免费又黄又爽又猛的毛片| 又爽又黄又无遮挡的视频| 国产精品久久无码不卡黑寡妇| 一日本道伊人久久综合影| 国产乱子伦视频在线播放| 免费国精产品wnw2544| 蜜桃成熟色综合久久av| 欧美极品色午夜在线视频| 国产成人精品亚洲资源| 成人国产精品一区二区不卡| 熟女人妻aⅴ一区二区三区电影| 天堂网av成人在线观看| 国产偷窥熟女高潮精品视频| 中国女人大白屁股ass| 久久精品国产亚洲av高| 日韩激情一区二区三区| 91福利一区福利二区| 亚洲区欧美区综合区自拍区| 777久久精品一区二区三区无码|