日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python项目:飞机大战(爆炸效果,血条,音效,buff加成,boss,菜单,完整详细注释的源码)

發布時間:2023/12/29 python 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python项目:飞机大战(爆炸效果,血条,音效,buff加成,boss,菜单,完整详细注释的源码) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一. 總體概覽
    • 基本功能
    • 細節部分(全部可以自定義)
    • 可增添需求
  • 二,技術框架
    • 核心技術概述
      • 1.游戲的初始化和退出
      • 2 理解游戲中的坐標系
      • 3 創建游戲主窗口
      • 4. 理解 **圖像** 并實現圖像繪制
      • 5. 游戲中的動畫實現原理
        • 游戲循環的作用
        • 游戲時鐘
      • 6. 在游戲循環中 監聽 事件
        • 事件 `event`
        • 監聽
        • 代碼實現
      • 7. 理解 **精靈** 和 **精靈組**
        • 精靈 和 精靈
        • 精靈
        • 精靈組
    • 整體框架
  • 三,實踐中遇到的問題和解決辦法
    • 1.敵機死后,子彈連帶的消失
    • 2.子彈和敵機多次撞擊
    • 3.進行了update卻不顯示
    • 4. 想方設法把一個Sprite或者rect或者image進行清除操作
    • 5. 為什么英雄死掉了,還是會發生碰撞檢測
    • 6, 如何按鍵不放,移動不止
    • 7,不知道全局變量如何使用
    • 8.明明畫在屏幕上也更新了可就是看不到
  • 三,源代碼
    • 注釋超級詳細
    • 方法比較簡單,很容易看懂
    • 易修改,易擴展,可定制化參數
  • 四, 總結和下載

一. 總體概覽

話不多說,先看效果圖,動作是有聲音的,但是放不出來

看圖片應該大體有個了解,然后我再具體介紹下,游戲有哪些功能和細節

基本功能

  • 鍵盤方向鍵控制英雄移動
  • 英雄自動發射子彈
  • 敵軍飛機自動生成,向下運動,發射不同速度炮彈
  • 自動生成 補給,有子彈buff,炸彈buff,補血buff
    4.1子彈buff最多吃5個,每吃一個子彈數目或者威力提高,吃到第五個召喚"最強形態"
    4.2炸彈buff可以無限吃,當然出現幾率比較小,吃到的炸彈在屏幕左下角顯示,空格鍵引爆一顆炸彈,毀掉當前所有敵軍飛機,boss損血
    4.3補血buff,一次補滿英雄血條
  • 每種敵軍對應不同分數,英雄擊爆后,屏幕又下角的總分增加相應的分數
  • 子彈擊中和撞擊都會時敵機和英雄損血,且英雄還會debuff,就是buff效果會減弱
  • 當英雄掛掉,游戲結束,屏幕顯示分數,并且可以選擇重來或者結束游戲
  • 細節部分(全部可以自定義)

  • 英雄吃buff初期子彈威力+1,且子彈排數有序增加,均勻分步
  • 血條低于某個值會變紅,當吃補給增加后又會恢復原色
  • 敵機出現位置隨機,速度隨機,發射子彈速度隨機,數量排數自定義,低級敵機出場較多,中型后來逐漸增多
  • 英雄,boss有飛行和爆炸動畫,敵機有爆炸動畫
  • 撞擊對不同對象效果不同,英雄撞boss,英雄死boss損血,敵機撞英雄,敵機爆,英雄損血,且損血和被子彈擊中血量不同
  • 背景和bgm循環移動,營造飛行感覺
  • 每個動作都有專屬音效,如英雄爆,敵機爆,補習,補子彈,補炸彈,扔炸彈,射擊…
  • 三組buff出現頻率不同,且出現時機不同,補血在英雄血條為紅色時優先出現
  • boss移動速度慢,慢于最低速度,即1像素每幀,游戲定義為60幀/秒,即速度低于60像素/秒
  • 飛機不能飛出屏幕外面
  • 敵軍死后子彈留著
  • 最強形態不增加英雄所占面積
  • 爆炸有動畫效果
  • 子彈擊爆敵機后,不繼續集中殘駭
  • …(細節部分太多,首先要有個大致的思路,然后在不斷調試中找到最好配置)
  • 可增添需求

    (簡單重復性工作可讓細節更加到位,代碼看明白后可以自行添加,這是個無底洞,提供個思路)

  • 增加歷史最高分,建立變量每局更新
  • 增加個人中心,記錄分數變化
  • 增加敵機,boss,改變子彈發射方式
  • 添加更多buff,增添更多特效
  • 增加關卡
  • 讓敵機,buff出現的時機,數量,等級,隨游戲的推進而動態變化,更加人性化
  • 二,技術框架

    主要就是python類和pygame模塊的運用,有項目文件后直接安裝pygame庫就可以運行了

    核心技術概述

    1.游戲的初始化和退出

    • 要使用 pygame 提供的所有功能之前,需要調用 init 方法
    • 在游戲結束前需要調用一下 quit 方法
    方法說明
    pygame.init()導入并初始化所有 pygame 模塊,使用其他模塊之前,必須先調用 init 方法
    pygame.quit()卸載所有 pygame 模塊,在游戲結束之前調用!
    import pygame

    pygame.init()這個模塊初始化一定不能省略

    游戲代碼…

    pygame.quit()

    2 理解游戲中的坐標系

    • 坐標系

      • 原點左上角 (0, 0)
      • x 軸 水平方向向 ,逐漸增加
      • y 軸 垂直方向向 ,逐漸增加
    • 在游戲中,所有可見的元素 都是以 矩形區域 來描述位置的

    • 要描述一個矩形區域有四個要素:(x, y) (width, height)

    • pygame 專門提供了一個類 pygame.Rect 用于描述 矩形區域

    Rect(x, y, width, height) -> Rect

    3 創建游戲主窗口

    • pygame 專門提供了一個 模塊 pygame.display 用于創建、管理 游戲窗口
    方法說明
    pygame.display.set_mode()初始化游戲顯示窗口
    pygame.display.update()刷新屏幕內容顯示,稍后使用

    set_mode 方法

    set_mode(resolution=(0,0), flags=0, depth=0) -> Surface

    4. 理解 圖像 并實現圖像繪制

    • 在游戲中,能夠看到的 游戲元素 大多都是 圖像
      • 圖像文件 初始是保存在磁盤上的,如果需要使用,第一步 就需要 被加載到內存
    • 要在屏幕上 看到某一個圖像的內容,需要按照三個步驟:
    • 使用 pygame.image.load() 加載圖像的數據
    • 使用 游戲屏幕 對象,調用 blit 方法 將圖像繪制到指定位置
    • 調用 pygame.display.update() 方法更新整個屏幕的顯示
    • 透明圖像
    • png 格式的圖像是支持 透明
    • 在繪制圖像時,透明區域 不會顯示任何內容
    • 但是如果下方已經有內容,會 透過 透明區域 顯示出來

    5. 游戲中的動畫實現原理

    • 電影 的原理類似,游戲中的動畫效果,本質上是 快速 的在屏幕上繪制 圖像
      • 電影是將多張 靜止的電影膠片 連續、快速的播放,產生連貫的視覺效果!
    • 一般在電腦上 每秒繪制 60 次,就能夠達到非常 連續 高品質 的動畫效果
      • 每次繪制的結果被稱為 幀 Frame

      游戲循環的開始 就意味著 游戲的正式開始

    游戲循環的作用

  • 保證游戲 不會直接退出
  • 變化圖像位置 —— 動畫效果
    • 每隔 1 / 60 秒 移動一下所有圖像的位置
    • 調用 pygame.display.update() 更新屏幕顯示
  • 檢測用戶交互 —— 按鍵、鼠標等…
  • 游戲時鐘

    • pygame 專門提供了一個類 pygame.time.Clock 可以非常方便的設置屏幕繪制速度 —— 刷新幀率
    • 要使用 時鐘對象 需要兩步:
      • 1)在 游戲初始化 創建一個 時鐘對象
      • 2)在 游戲循環 中讓時鐘對象調用 tick(幀率) 方法
    • tick 方法會根據 上次被調用的時間,自動設置 游戲循環 中的延時

    6. 在游戲循環中 監聽 事件

    事件 event

    • 就是游戲啟動后,用戶針對游戲所做的操作
    • 例如:點擊關閉按鈕點擊鼠標按下鍵盤

    監聽

    • 游戲循環 中,判斷用戶 具體的操作

    只有 捕獲 到用戶具體的操作,才能有針對性的做出響應

    代碼實現

    • pygame 中通過 pygame.event.get() 可以獲得 用戶當前所做動作事件列表
      • 用戶可以同一時間做很多事情
    • 提示:這段代碼非常的固定,幾乎所有的 pygame 游戲都 大同小異
    # 游戲循環 while True:# 設置屏幕刷新幀率clock.tick(60)# 事件監聽for event in pygame.event.get():# 判斷用戶是否點擊了關閉按鈕if event.type == pygame.QUIT:print("退出游戲...")pygame.quit()# 直接退出系統exit()

    7. 理解 精靈精靈組

    精靈 和 精靈

    • 為了簡化開發步驟,pygame 提供了兩個類
      • pygame.sprite.Sprite —— 存儲 圖像數據 image位置 rect對象
      • pygame.sprite.Group

    精靈

    • 在游戲開發中,通常把 顯示圖像的對象 叫做精靈 Sprite

    • 精靈 需要 有 兩個重要的屬性

      • image 要顯示的圖像
      • rect 圖像要顯示在屏幕的位置
    • 默認的 update() 方法什么事情也沒做

      • 子類可以重寫此方法,在每次刷新屏幕時,更新精靈位置
    • 注意:pygame.sprite.Sprite 并沒有提供 image 和 rect 兩個屬性

      • 需要程序員從 pygame.sprite.Sprite 派生子類
      • 并在 子類初始化方法 中,設置 image 和 rect 屬性

    精靈組

    • 一個 精靈組 可以包含多個 精靈 對象
    • 調用 精靈組 對象的 update() 方法
      • 可以 自動 調用 組內每一個精靈 的 update() 方法
    • 調用 精靈組 對象的 draw(屏幕對象) 方法
      • 可以將 組內每一個精靈 的 image 繪制在 rect 位置

    整體框架


    三,實踐中遇到的問題和解決辦法

    1.敵機死后,子彈連帶的消失

    因為子彈組是敵軍對象的成員,子彈不是
    就是在主函數需要敵軍的子彈再加到一個組,而且所有敵軍的子彈加到一起更更新更加方便,這樣不用擔心敵機毀掉了,他們的子彈對象也訪問不了了.

    2.子彈和敵機多次撞擊

    由于播放爆炸動畫采用的方法是被撞毀時,先不移除精靈組,然后更改該對象圖片,知道圖片輪完了才kill(),這就導致進行下一次循環,對象還沒kill(),kill()了就不能進行輪播.
    思考一:
    撞毀的時候新建循環把爆炸圖片畫在屏幕上,
    行不通,第循環一次只能更新一幀圖片,如果你要更新多幀那么其他精靈就會靜止.
    思考二:
    撞毀時候,先移除精靈組,然后用變量儲存,進行最初更新的方法.實驗證明可行.

    3.進行了update卻不顯示

    混淆draw和display.update
    首先一個精靈的update方法讓圖像有改變
    精靈組的draw方法調用screen的blit方法畫到屏幕上
    這時候屏幕畫面殘留在上一幀
    只有display更新了才能看到

    4. 想方設法把一個Sprite或者rect或者image進行清除操作

    其實pygam你們只有貼上去,沒有"撕下來"
    想要看不見他,兩種方法如果是精靈,skill()從所有精靈組里面刪除,如果只是單純的image和rect,直接從他們的list里面remove,這樣就不會被blit,實際上屏幕在更新,如果你想要看到,就要畫在在更新的每一幀上面,之后如果不再用到它,python自己會進行回收.

    同樣的道理,如果希望一個壞人消失,最好的辦法不是你去殺死他,而是從你所在的集體里面孤立排除他,這樣你就再也見不到他了

    5. 為什么英雄死掉了,還是會發生碰撞檢測

    這是因為,雖然我們把英雄加入英雄隊伍,但是隊伍中英雄很少,為了方便我們碰撞的時候不是從隊伍中取直接就用該英雄對象進行檢測,這時候,英雄skill()了,但是rect并沒有丟失,
    記住skill(),只是把他從需要顯示或者操作群體中把他刪除了,但是這個對象并沒有被立即回收,它的rect還是在,還能用于碰撞檢測

    6, 如何按鍵不放,移動不止

    方向鍵監聽有兩種方式
    按一下

    elif event.type ==pygame.KEYDOWN and event.key = = pygame.K_RIGHT:

    按下
    返回所有按鍵的元組,如果某個鍵被按下,對應的值會是1

    keys_pressed = pygame.key.get_pressed() #判斷是否按下了方向鍵if keys_pressed[pygame.K_RIGHT]:

    7,不知道全局變量如何使用

    python里面的全局常量和其他語言一樣是沒有歧義的,但是全局變量就不一樣了,因為python定義變量不用定義類型,只有在賦值的時候才知道,所以在函數里面使用全局變量,無法保證兩個變量是一樣的,所以在函數里面需要用global聲明一下這個變量是我開始設的這個全局變量,不是又重新定義了一個局部變量,

    同樣的道理,全局變量也不能跨模塊調用,即使import了也只能用他的初始值,所以可以建立一個全局變量操作類,用來獲取和修改全局變量.

    8.明明畫在屏幕上也更新了可就是看不到

    注意更新的順序影響圖像的上下層關系

    三,源代碼

    注釋超級詳細

    方法比較簡單,很容易看懂

    易修改,易擴展,可定制化參數

    import random import pygame pygame.init() # ************************************************************** # FileName: plane_sprites.py*************************************** # Author: Junieson ********************************************* # Version: 2019.8.12 ****************************************** # **************************************************************** # 分數 SCORE = 0 # 屏幕大小的常量 SCREEN_RECT = pygame.Rect(0, 0, 480, 700) # color color_blue = (30, 144, 255) color_green = (0, 255, 0) color_red = (255, 0, 0) color_purple = (148, 0, 211) color_gray = (251, 255, 242) # 刷新的幀率 FRAME_PER_SEC = 60 # 刷新率是60hz,即每秒update60次 # 創建敵機的定時器常量,自定義用戶事件,其實就是int數,不同數表示不同事件 CREATE_ENEMY_EVENT = pygame.USEREVENT # 英雄發射子彈事件 HERO_FIRE_EVENT = pygame.USEREVENT + 1 # buff1 出現的事件 BUFF1_SHOW_UP = pygame.USEREVENT + 2 # buff2 BUFF2_SHOW_UP = pygame.USEREVENT + 3 # 敵軍發射子彈 ENEMY_FIRE_EVENT = pygame.USEREVENT + 4 # 發射炸彈 BOMB_THROW = pygame.USEREVENT + 5class GameScore(object):global SCOREdef __init__(self):self.score = 0passdef getvalue(self):self.score = SCOREreturn self.scoreclass GameSprite(pygame.sprite.Sprite):"""飛機大戰游戲精靈"""def __init__(self, image_name, speedy=1, speedx=0):# 調用父類的初始化方法super().__init__()# 定義對象的屬性self.image = pygame.image.load(image_name)self.rect = self.image.get_rect()self.speedy = speedyself.speedx = speedxself.injury = 1self.index = 0 # 記幀數變量self.bar = bloodline(color_blue, self.rect.x, self.rect.y - 10, self.rect.width)def update(self):# 在屏幕的垂直方向上移動self.rect.y += self.speedyself.rect.x += self.speedxself.bar.x = self.rect.xself.bar.y = self.rect.y - 10class Background(GameSprite):"""游戲背景精靈"""def __init__(self, is_alt=False):# 1. 調用父類方法實現精靈的創建(image/rect/speed)super().__init__("./images/background.png")# 2. 判斷是否是交替圖像,如果是,需要設置初始位置if is_alt:self.rect.y = -self.rect.heightdef update(self):# 1. 調用父類的方法實現super().update()# 2. 判斷是否移出屏幕,如果移出屏幕,將圖像設置到屏幕的上方if self.rect.y >= SCREEN_RECT.height:self.rect.y = -self.rect.heightclass Boss(GameSprite):def __init__(self):super().__init__("./images/enemy3_n1.png", 0, 1)self.music_boom = pygame.mixer.Sound("./music/enemy3_down.wav")self.music_fly = pygame.mixer.Sound("./music/enemy3_flying.wav")self.music_fly.play(-1)self.rect.centerx = 240self.y = 200self.isboom = Falseself.number = 3self.index1 = 1 # 控制動畫速度self.index2 = 0self.index3 = 0self.index4 = 0self.injury = 1self.bar = bloodline(color_purple, 0, 0, 480, 8, 200)self.bullets = pygame.sprite.Group()def fire(self):for j in range(2, 7): # 每層5個bullet = Bullet(0, 1)bullet.injury = 1# 2. 設置精靈的位置bullet.rect.centerx = self.rect.centerxbullet.rect.y = self.rect.bottomif j == 2:bullet.speedx = 0else:bullet.speedx = (-1) ** j * ((j - 1) // 2) * 1self.bullets.add(bullet)def update(self):# 左右移global SCOREif self.index4 % 2 == 0: # 降低幀速率,注意這兩個指針不能一樣# 內部為左右移動大概50像素if self.index3 % 50 == 0 and (self.index3 // 50) % 2 == 1:self.speedx = -self.speedxself.rect.x += self.speedxself.index3 += 1self.index4 += 1# 發電動畫self.image = pygame.image.load("./images/enemy3_n" + str((self.index1 // 6) % 2 + 1) + ".png")self.index1 += 1# 爆炸動畫if self.isboom:self.bar.length -= self.injury * self.bar.weightif self.bar.length <= 0: # 此時滿足爆炸的條件了self.music_fly.stop()if self.index2 == 0:self.music_boom.play()if self.index2 < 29: # 4*7+1self.image = pygame.image.load("./images/enemy3_down" + str(self.index2 // 7) + ".png")# 這個地方之所以要整除4是為了減慢爆炸的速度,如果按照update的頻率60hz就太快了self.index2 += 1else:self.kill()SCORE += self.bar.valueelse:self.isboom = False # 否則還不能死class Enemy(GameSprite):"""敵機精靈"""def __init__(self, num=1):self.number = num# 1. 調用父類方法,創建敵機精靈,同時指定敵機圖片super().__init__("./images/enemy" + str(num) + ".png")# musicif num == 1:self.music_boom = pygame.mixer.Sound("./music/enemy1_down.wav")else:self.music_boom = pygame.mixer.Sound("./music/enemy2_down.wav")# 2. 指定敵機的初始隨機速度 1 ~ 3self.speedy = random.randint(1, 3)# 3. 指定敵機的初始隨機位置self.rect.bottom = 0max_x = SCREEN_RECT.width - self.rect.widthself.rect.x = random.randint(0, max_x)# 4.爆炸效果self.isboom = Falseself.index = 0# 5.血條if self.number == 1:self.bar = bloodline(color_blue, self.rect.x, self.rect.y, self.rect.width)else:self.bar = bloodline(color_blue, self.rect.x, self.rect.y, self.rect.width, 3, 4)# 6,子彈self.bullets = pygame.sprite.Group()def fire(self):for i in range(0, 2):# 1. 創建子彈精靈bullet = Bullet(0, random.randint(self.speedy + 1, self.speedy + 3))# 2. 設置精靈的位置bullet.rect.bottom = self.rect.bottom + i * 20bullet.rect.centerx = self.rect.centerx# 3. 將精靈添加到精靈組self.bullets.add(bullet)def update(self):global SCORE# 1. 調用父類方法,保持垂直方向的飛行super().update()# 2. 判斷是否飛出屏幕,如果是,需要從精靈組刪除敵機if self.rect.y > SCREEN_RECT.height:# print("飛出屏幕,需要從精靈組刪除...")# kill方法可以將精靈從所有精靈組中移出,精靈就會被自動銷毀self.kill()self.bar.length = 0if self.isboom:self.bar.length -= self.bar.weight * self.injuryif self.bar.length <= 0:if self.index == 0: # 保證只響一次self.music_boom.play()if self.index < 17: # 4*4+1self.image = pygame.image.load("./images/enemy" + str(self.number) + "_down" + str(self.index // 4) + ".png")# 這個地方之所以要整除4是為了減慢爆炸的速度,如果按照update的頻率60hz就太快了self.index += 1else:self.kill()SCORE += self.bar.valueelse:self.isboom = Falseclass Hero(GameSprite):"""英雄精靈"""def __init__(self):# 1. 調用父類方法,設置image&speedsuper().__init__("./images/me1.png")self.music_down = pygame.mixer.Sound("./music/me_down.wav")self.music_upgrade = pygame.mixer.Sound("./music/upgrade.wav")self.music_degrade = pygame.mixer.Sound("./music/supply.wav")self.number = 0# 2. 設置英雄的初始位置self.rect.centerx = SCREEN_RECT.centerxself.rect.bottom = SCREEN_RECT.bottom - 120# 3. 創建子彈的精靈組self.bullets = pygame.sprite.Group()# 4.爆炸self.isboom = Falseself.index1 = 1 # 控制動畫速度self.index2 = 0# 5.buff1加成self.buff1_num = 0# 6,英雄血條self.bar = bloodline(color_green, 0, 700, 480, 8, 10)# 7,炸彈數目self.bomb = 0def update(self):# 英雄在水平方向移動和血條不同步,特殊self.rect.y += self.speedyself.rect.x += self.speedx# 控制英雄不能離開屏幕if self.rect.x < 0:self.rect.x = 0elif self.rect.right > SCREEN_RECT.right:self.rect.right = SCREEN_RECT.rightelif self.rect.y < 0:self.rect.y = 0elif self.rect.bottom > SCREEN_RECT.bottom:self.rect.bottom = SCREEN_RECT.bottom# 英雄噴氣動畫self.image = pygame.image.load("./images/me" + str((self.index1 // 6) % 2 + 1) + ".png")self.index1 += 1# 英雄爆炸動畫if self.isboom:self.bar.length -= self.injury * self.bar.weightif self.bar.length <= 0: # 此時滿足爆炸的條件了if self.index2 == 0:self.music_down.play()if self.index2 < 17: # 4*4+1self.image = pygame.image.load("./images/me_destroy_" + str(self.index2 // 4) + ".png")# 這個地方之所以要整除4是為了減慢爆炸的速度,如果按照update的頻率60hz就太快了self.index2 += 1else:self.kill()else:self.isboom = False # 否則還不能死# 發射子彈def fire(self):if self.buff1_num == 0:for i in range(0, 1):# 1. 創建子彈精靈bullet = Bullet()# 2. 設置精靈的位置bullet.rect.bottom = self.rect.y - i * 20bullet.rect.centerx = self.rect.centerx# 3. 將精靈添加到精靈組self.bullets.add(bullet)elif self.buff1_num <= 3:for i in (0, 1):# 1. 創建子彈精靈for j in range(2, self.buff1_num + 3):bullet = Bullet(2, -3)# 2. 設置精靈的位置bullet.rect.bottom = self.rect.y - i * 20if (self.buff1_num % 2 == 1):bullet.rect.centerx = self.rect.centerx + (-1) ** j * 15 * (j // 2)if (self.buff1_num % 2 == 0):if j == 2:bullet.rect.centerx = self.rect.centerxelse:bullet.rect.centerx = self.rect.centerx + (-1) ** j * 15 * ((j - 1) // 2)# 3. 將精靈添加到精靈組self.bullets.add(bullet)elif self.buff1_num >= 4:for i in range(0, 1):# 1. 表示有幾層for j in range(2, 5): # 每層三個bullet = Bullet(3, -3)bullet.injury = 2# 2. 設置精靈的位置bullet.rect.bottom = self.rect.yif j == 2:bullet.rect.centerx = self.rect.centerxelse:bullet.rect.centerx = self.rect.centerx + (-1) ** j * (30 + 5 * i)bullet.speedx = (-1) ** j * (i + 1)self.bullets.add(bullet)class Heromate(Hero):def __init__(self, num):super().__init__()self.image = pygame.image.load("./images/life.png")self.number = numdef update(self):if self.rect.right > SCREEN_RECT.right:self.rect.right = SCREEN_RECT.rightif self.rect.x < 0:self.rect.x = 0if self.rect.y < 0:self.rect.y = 0elif self.rect.bottom > SCREEN_RECT.bottom:self.rect.bottom = SCREEN_RECT.bottomdef fire(self):for i in range(0, 1, 2):# 1. 創建子彈精靈bullet = Bullet()# 2. 設置精靈的位置bullet.rect.bottom = self.rect.y - i * 20bullet.rect.centerx = self.rect.centerx# 3. 將精靈添加到精靈組self.bullets.add(bullet)class Bullet(GameSprite):"""子彈精靈"""def __init__(self, color=1, speedy=-2, speedx=0):# 調用父類方法,設置子彈圖片,設置初始速度self.hity = color # 子彈傷害值self.music_shoot = pygame.mixer.Sound("./music/bullet.wav")self.music_shoot.set_volume(0.4)if color > 0: # 只讓英雄發子彈響self.music_shoot.play()super().__init__("./images/bullet" + str(color) + ".png", speedy, speedx)def update(self):# 調用父類方法,讓子彈沿垂直方向飛行super().update()# 判斷子彈是否飛出屏幕if self.rect.bottom < 0 or self.rect.y > 700:self.kill()class Buff1(GameSprite):def __init__(self):super().__init__("./images/bullet_supply.png", 1)self.music_get = pygame.mixer.Sound("./music/get_bullet.wav")self.rect.bottom = 0max_x = SCREEN_RECT.width - self.rect.widthself.rect.x = random.randint(0, max_x)def update(self):super().update()if self.rect.bottom < 0:self.kill()class Buff2(GameSprite):def __init__(self):super().__init__("./images/bomb_supply.png", 2)self.music_get = pygame.mixer.Sound("./music/get_bomb.wav")self.rect.bottom = random.randint(0, 700)max_x = SCREEN_RECT.width - self.rect.widthself.rect.x = random.randint(0, max_x)self.ran = random.randint(60, 180) # 在持續1~3s后消失def update(self):super().update()if self.rect.bottom < 0 or self.index == self.ran:self.kill()self.index += 1class Buff3(Buff2):def __init__(self):super().__init__()self.image = pygame.image.load("./images/buff3.png")self.speedy=3class bloodline(object):def __init__(self, color, x, y, length, width=2, value=2):self.color = colorself.x = xself.y = yself.length = lengthself.width = width # 線寬self.value = value * 1.0 # 血量用浮點數self.weight = length / value # 每一滴血表示的距離self.color_init = colordef update(self, canvas):if self.length <= self.value * self.weight / 2:self.color = color_redelse:self.color = self.color_initself.bar_rect = pygame.draw.line(canvas, self.color, (self.x, self.y), (self.x + self.length, self.y),self.width)class CanvasOver():def __init__(self, screen):self.img_again = pygame.image.load("./images/again.png")self.img_over = pygame.image.load("./images/gameover.png")self.rect_again = self.img_again.get_rect()self.rect_over = self.img_over.get_rect()self.rect_again.centerx = self.rect_over.centerx = SCREEN_RECT.centerxself.rect_again.bottom = SCREEN_RECT.centeryself.rect_over.y = self.rect_again.bottom + 20self.screen = screendef event_handler(self, event):if event.type == pygame.MOUSEBUTTONDOWN:pos = pygame.mouse.get_pos()if self.rect_again.left < pos[0] < self.rect_again.right and \self.rect_again.top < pos[1] < self.rect_again.bottom:return 1elif self.rect_over.left < pos[0] < self.rect_over.right and \self.rect_over.top < pos[1] < self.rect_over.bottom:return 0def update(self):self.screen.blit(self.img_again, self.rect_again)self.screen.blit(self.img_over, self.rect_over)score_font = pygame.font.Font("./STCAIYUN.ttf", 50)image = score_font.render("SCORE:" + str(int(SCORE)), True, color_gray)rect = image.get_rect()rect.centerx, rect.bottom = SCREEN_RECT.centerx, self.rect_again.top - 20self.screen.blit(image, rect) import sys import pygamepygame.init() from plane_sprites import * # ************************************************************** # FileName: plane_main.py*************************************** # Author: Junieson ********************************************* # Version: 2019.8.12 ****************************************** # **************************************************************** class PlaneGame(object):"""飛機大戰主游戲"""def __init__(self):print("游戲初始化")# 1. 創建游戲的窗口self.screen = pygame.display.set_mode(SCREEN_RECT.size)# 創建結束界面self.canvas_over = CanvasOver(self.screen)# 2. 創建游戲的時鐘self.clock = pygame.time.Clock()# 3. 調用私有方法,精靈和精靈組的創建self.__create_sprites()# 分數對象self.score = GameScore()# 程序控制指針self.index = 0# 音樂bgmself.bg_music = pygame.mixer.Sound("./music/game_music.ogg")self.bg_music.set_volume(0.3)self.bg_music.play(-1)# 游戲結束了嗎self.game_over = False# 4. 設置定時器事件 - 創建敵機 1spygame.time.set_timer(CREATE_ENEMY_EVENT, random.randint(1000, 2000))pygame.time.set_timer(HERO_FIRE_EVENT, 400)pygame.time.set_timer(BUFF1_SHOW_UP, random.randint(10000, 20000))pygame.time.set_timer(BUFF2_SHOW_UP, random.randint(20000, 40000))pygame.time.set_timer(ENEMY_FIRE_EVENT, 2000)def __create_sprites(self):# 創建背景精靈和精靈組bg1 = Background()bg2 = Background(True)self.back_group = pygame.sprite.Group(bg1, bg2)# 創建敵機的精靈組self.enemy_group = pygame.sprite.Group()# 創建英雄的精靈和精靈組self.hero = Hero()self.hero_group = pygame.sprite.Group(self.hero)# 創建敵軍子彈組self.enemy_bullet_group = pygame.sprite.Group()# 血條列表self.bars = []self.bars.append(self.hero.bar)# 創建buff組self.buff1_group = pygame.sprite.Group()# 創建假象boom組self.enemy_boom = pygame.sprite.Group()# bomb列表self.bombs = []def start_game(self):print("游戲開始...")while True:# 1. 設置刷新幀率self.clock.tick(FRAME_PER_SEC)# 2. 事件監聽self.__event_handler()# 3. 碰撞檢測self.__check_collide()# 4. 更新/繪制精靈組self.__update_sprites()# 是否要結束游戲if self.game_over:self.canvas_over.update()# 5. 更新顯示pygame.display.update()def __event_handler(self): # 事件檢測if self.score.getvalue() > 200+500*self.index:self.boss = Boss()self.enemy_group.add(self.boss)self.bars.append(self.boss.bar)self.index += 1for event in pygame.event.get():# 判斷是否退出游戲if event.type == pygame.QUIT:pygame.quit()sys.exit()if event.type == CREATE_ENEMY_EVENT:# 創建敵機精靈將敵機精靈添加到敵機精靈組if self.score.getvalue() < 20:enemy = Enemy()else:if random.randint(0, 100) % 4:enemy = Enemy()else:enemy = Enemy(2)self.enemy_group.add(enemy)self.bars.append(enemy.bar)elif event.type == HERO_FIRE_EVENT:for hero in self.hero_group:hero.fire()elif event.type == BUFF1_SHOW_UP:buff1 = Buff1()self.buff1_group.add(buff1)elif event.type == BUFF2_SHOW_UP:if self.hero.bar.color == color_red:#按需分配buff = Buff3()else:buff= Buff2()self.buff1_group.add(buff)elif event.type == ENEMY_FIRE_EVENT:for enemy in self.enemy_group:if enemy.number >= 2:enemy.fire()for bullet in enemy.bullets:self.enemy_bullet_group.add(bullet)elif event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:self.bomb_throw()else:if self.game_over == True:flag = self.canvas_over.event_handler(event)if flag == 1:self.__start__()elif flag == 0:pygame.quit()sys.exit()# 使用鍵盤提供的方法獲取鍵盤按鍵 - 按鍵元組keys_pressed = pygame.key.get_pressed()# 判斷元組中對應的按鍵索引值 1if keys_pressed[pygame.K_RIGHT]:self.heros_move(5)elif keys_pressed[pygame.K_LEFT]:self.heros_move(-5)elif keys_pressed[pygame.K_UP]:self.heros_move(0, -5)elif keys_pressed[pygame.K_DOWN]:self.heros_move(0, 5)else:self.heros_move(0, 0)def heros_move(self, x=0, y=0):self.hero.speedx = xself.hero.speedy = ydef bomb_throw(self):music_use_bomb = pygame.mixer.Sound("./music/use_bomb.wav")if self.hero.bomb > 0:music_use_bomb.play()self.hero.bomb -= 1self.bombs.pop()for enemy in self.enemy_group:if enemy.number < 3:enemy.bar.length = 0enemy.isboom = Trueelse:enemy.injury = 20enemy.isboom = Truedef __check_collide(self):# 1. 子彈摧毀敵機for enemy in self.enemy_group:for hero in self.hero_group:for bullet in hero.bullets:if pygame.sprite.collide_mask(bullet, enemy): # 這種碰撞檢測可以精確到像素去掉alpha遮罩的那種哦bullet.kill()enemy.injury = bullet.hityenemy.isboom = Trueif enemy.bar.length <= 0:self.enemy_group.remove(enemy)self.enemy_boom.add(enemy)# 2. 敵機撞毀英雄for enemy in self.enemy_group:if pygame.sprite.collide_mask(self.hero, enemy):if enemy.number < 3:enemy.bar.length = 0 # 敵機直接死self.hero.injury = self.hero.bar.value / 4 # 英雄掉四分之一的血if self.hero.buff1_num > 0:self.hero.buff1_num -= 1self.hero.music_degrade.play()self.enemy_group.remove(enemy)self.enemy_boom.add(enemy)enemy.isboom = Trueelse:self.hero.bar.length = 0self.hero.isboom = True# 子彈摧毀英雄for bullet in self.enemy_bullet_group:if pygame.sprite.collide_mask(self.hero, bullet):bullet.kill()self.hero.injury = 1if self.hero.buff1_num > 0:self.hero.music_degrade.play()if self.hero.buff1_num == 5:self.mate1.kill()self.mate2.kill()self.hero.buff1_num -= 1self.hero.isboom = Trueif not self.hero.alive():self.hero.rect.right = -10 # 把英雄移除屏幕if self.hero.buff1_num == 5:self.mate1.rect.right = -10self.mate2.rect.right = -10self.game_over = True# 3.buff吸收for buff in self.buff1_group:if pygame.sprite.collide_mask(self.hero, buff):buff.music_get.play()if buff.speedy == 1: # 用速度來區分if self.hero.buff1_num < 6:self.hero.buff1_num += 1self.hero.music_upgrade.play()if self.hero.buff1_num == 5:self.team_show()elif buff.speedy==2:self.hero.bomb += 1image = pygame.image.load("./images/bomb.png")self.bombs.append(image)elif buff.speedy==3:if self.hero.bar.length < self.hero.bar.weight*self.hero.bar.value:self.hero.bar.length += self.hero.bar.weight*self.hero.bar.valuebuff.kill()def team_show(self):self.mate1 = Heromate(-1)self.mate2 = Heromate(1)self.mate1.image = pygame.image.load("./images/life.png")self.mate1.rect = self.mate1.image.get_rect()self.mate2.image = pygame.image.load("./images/life.png")self.mate2.rect = self.mate2.image.get_rect()self.hero_group.add(self.mate1)self.hero_group.add(self.mate2)# 各種更新def __update_sprites(self):self.back_group.update()self.back_group.draw(self.screen)self.enemy_group.update()self.enemy_group.draw(self.screen)self.enemy_boom.update()self.enemy_boom.draw(self.screen)self.heros_update()self.hero_group.draw(self.screen)for hero in self.hero_group:hero.bullets.update()hero.bullets.draw(self.screen)self.buff1_group.update()self.buff1_group.draw(self.screen)self.bars_update()self.bombs_update()self.enemy_bullet_group.update()self.enemy_bullet_group.draw(self.screen)self.score_show()def heros_update(self):for hero in self.hero_group:if hero.number == 1:hero.rect.bottom = self.hero.rect.bottomhero.rect.left = self.hero.rect.rightif hero.number == -1:hero.rect.bottom = self.hero.rect.bottomhero.rect.right = self.hero.rect.lefthero.update()def bars_update(self):for bar in self.bars:if bar.length > 0:bar.update(self.screen)else:self.bars.remove(bar)def bullet_enemy_update(self):for enemy in self.enemy_group:enemy.bullets.update()enemy.bullets.draw(self.screen)def bombs_update(self):i = 1for bomb in self.bombs:self.screen.blit(bomb, (0, 700 - (bomb.get_rect().height) * i))i += 1def score_show(self):score_font = pygame.font.Font("./STCAIYUN.ttf", 33)image = score_font.render("SCORE:" + str(int(self.score.getvalue())), True, color_gray)rect = image.get_rect()rect.bottom, rect.right = 700, 480self.screen.blit(image, rect)@staticmethoddef __start__():# 創建游戲對象game = PlaneGame()# 啟動游戲game.start_game()if __name__ == '__main__':PlaneGame.__start__()

    四, 總結和下載

    這次的項目實踐,讓我對python面相對象程序設計有了更深的體會,也讓我感受到了python語言簡潔優雅的美感,如果你覺得還行的話,可以拿去小練一下手,如果有什么問題可以在評論區留言,我會在第一時間回復,
    敲打不易,順手點個贊吧,
    (づ ̄3 ̄)づ╭?~.鏈接:https://github.com/Junieson/PlaneGame

    總結

    以上是生活随笔為你收集整理的python项目:飞机大战(爆炸效果,血条,音效,buff加成,boss,菜单,完整详细注释的源码)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    av在线之家电影网站 | 9999在线观看 | 五月婷婷另类国产 | 欧美精品免费视频 | 日韩av手机在线看 | aa级黄色大片 | 精品免费观看视频 | 一区二区三区精品在线 | 国产精品一区二区在线免费观看 | 国产一二三四在线视频 | www.香蕉| 色视频网站免费观看 | 欧美在线1 | 日韩欧美视频在线播放 | 一区二区视频在线播放 | 一区二区网 | 国产一区二区三区在线 | 久久亚洲欧美日韩精品专区 | 美女网站黄在线观看 | 国产 欧美 在线 | www四虎影院 | 亚洲精品tv久久久久久久久久 | 中文字幕色综合网 | 国产精品黄色 | av一级一片 | 国产精品日韩 | 色婷婷啪啪免费在线电影观看 | 亚洲a成人v | 久久九九网站 | 婷婷视频在线 | 丁香六月久久综合狠狠色 | 日韩免费播放 | 成年人免费在线观看 | 日韩欧美69| 亚洲丝袜一区二区 | 深夜视频久久 | 国产精品无av码在线观看 | 日韩欧美综合精品 | 91av免费看| 激情xxxx| 香蕉网址 | 国产一卡二卡在线 | 国产你懂的在线 | 美州a亚洲一视本频v色道 | 欧美 另类 交 | 丁香一区二区 | 欧美99久久| 不卡电影免费在线播放一区 | 91欧美国产 | 欧美污在线观看 | 国产女v资源在线观看 | 免费在线观看污网站 | 91九色国产视频 | 亚洲综合黄色 | 97视频免费观看 | 91免费观看国产 | 欧美日韩国语 | 国产在线欧美在线 | 亚洲欧美国产视频 | 日韩精品中字 | 久久久久国 | 日本高清xxxx | 九九热.com| 婷婷激情五月综合 | 深爱五月激情网 | 国产乱对白刺激视频不卡 | 涩涩网站在线看 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 色瓜| 天天操天天干天天插 | 在线观看黄色免费视频 | 亚洲视频axxx | 夜色资源站wwwcom | 午夜99 | 99人久久精品视频最新地址 | 成人av在线影院 | 麻豆系列在线观看 | 日韩精品一区二区三区第95 | 黄色av影视| 亚洲精品一区二区18漫画 | 日韩精品视频在线免费观看 | 亚洲日韩中文字幕在线播放 | 日本精品在线视频 | 视频一区二区在线观看 | 亚洲综合色视频在线观看 | 可以免费观看的av片 | 久久网站av | 干狠狠| 91视频3p | 国产精品久久久久久久av电影 | 黄色av一级 | 国产精品九九九九九九 | 欧美亚洲一区二区在线 | 国产精品久久久久久99 | www.亚洲精品在线 | 黄色一级性片 | 网站在线观看日韩 | 在线免费中文字幕 | 一本到视频在线观看 | 天天操天天谢 | 九九热免费精品视频 | 肉色欧美久久久久久久免费看 | 99久久久久久国产精品 | 亚洲精品在线观看视频 | 97精产国品一二三产区在线 | 激情综合交 | 国产美女精彩久久 | 久久免费观看视频 | 亚洲作爱视频 | 激情av在线播放 | 日韩在线高清免费视频 | 97人人爽人人 | 日本中文字幕在线电影 | 精品国产一区二区三区av性色 | 国产成人av | 欧美巨大荫蒂茸毛毛人妖 | 免费看搞黄视频网站 | 欧美成人在线免费 | av天天干 | 日本中文不卡 | 91精品爽啪蜜夜国产在线播放 | 久久精品成人欧美大片古装 | 亚洲成人av片在线观看 | 碰超人人| 高清久久久久久 | 天天操网址 | 国产在线免费观看 | 高清精品久久 | 国产一区二区久久久久 | 中文字幕免费高清 | 亚洲日韩中文字幕 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 成人av高清在线 | 日日夜夜精品视频 | 亚洲国产高清视频 | 国产亚洲精品久久19p | 这里只有精品视频在线观看 | 亚洲精品一区二区三区新线路 | 色在线国产 | 国产第一页在线播放 | 狠狠88综合久久久久综合网 | 久久精品官网 | 在线观看中文字幕亚洲 | 日韩av资源在线观看 | 日本高清中文字幕有码在线 | 成人小视频在线观看免费 | 四虎成人精品 | 探花视频在线观看 | 久久久久久网站 | 在线观看免费91 | 色瓜| 日韩在线 | 久久精品成人欧美大片古装 | 99久热在线精品视频 | 成人观看视频 | 国产精品免费一区二区三区 | 最近日本中文字幕 | 久久久96 | 精品一区91| 黄污网站在线观看 | 久久成人在线视频 | 91九色视频在线 | 欧美在线视频a | 天天操天天操天天操天天操 | 国产日韩精品一区二区三区在线 | 片网站| 丁香网五月天 | 久久久久中文 | 三级av黄色| 久久精品黄色 | www最近高清中文国语在线观看 | 天堂激情网| 九九视频免费在线观看 | 久久观看 | 国产91精品久久久久久 | 国产色婷婷在线 | 国产只有精品 | 欧美成人视 | 黄色a大片 | 国产理论免费 | 天天av天天| 国产一区二区三区高清播放 | 97夜夜澡人人爽人人免费 | 日本成址在线观看 | 中文字幕你懂的 | 国产美女精品人人做人人爽 | 国产在线免费观看 | 成人午夜性影院 | www黄免费| 岛国av在线不卡 | 麻豆成人小视频 | 国产在线精品区 | 日韩免费一级a毛片在线播放一级 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 摸阴视频 | 97视频免费看 | 99久久精品免费看国产 | 国产资源网 | 一区二区三区 亚洲 | 热久久视久久精品18亚洲精品 | 四月婷婷在线观看 | 99成人免费视频 | 亚洲男女精品 | 五月天中文字幕mv在线 | 992tv在线观看网站 | 国产亚洲小视频 | 超碰97.com | 亚洲综合色av | 丁香六月在线观看 | 久久激情视频 久久 | 丁香午夜 | 丁香狠狠| 在线成人免费电影 | 99视频精品视频高清免费 | 黄色av观看 | 精品国产aⅴ麻豆 | 久久精品婷婷 | 久久久国产精品网站 | 久久国产精品久久精品国产演员表 | 欧美精品v国产精品v日韩精品 | 一区二区三区日韩在线观看 | 99精品在线观看视频 | 日韩精品久久久久久久电影99爱 | 亚洲国产999| 色老板在线视频 | 国产又粗又猛又色又黄网站 | 一二三区av | 天天干夜夜 | 亚洲精品一区二区精华 | 午夜精品一区二区三区免费视频 | 色播五月激情五月 | 欧美成人精品欧美一级乱黄 | 精品国产免费人成在线观看 | 国产资源网| 久久激情小视频 | 国产中文字幕在线 | 国产一二三四在线观看视频 | 久久69av| 日日夜夜精品免费视频 | 91天堂影院 | 日日干干 | 精品国产伦一区二区三区观看方式 | 国产精品久久久久久久久软件 | 日韩欧美v| 91精品国产91久久久久 | 国产黄色在线网站 | 久久久久国产一区二区 | 日本69hd| 国产又粗又猛又黄又爽的视频 | 国产精品欧美久久久久天天影视 | 丁香久久五月 | 久久最新视频 | 国产天天爽 | 国产午夜精品福利视频 | 国产精品麻豆果冻传媒在线播放 | 韩国av免费在线观看 | 欧美a级免费视频 | 日韩美女黄色片 | 久久久久久久综合色一本 | 99久久精品免费看国产四区 | 97在线播放| 亚洲国产资源 | 国产高清小视频 | 婷婷丁香色 | 中文字幕在线观看视频免费 | 五月婷婷激情 | 麻豆成人小视频 | 欧洲精品二区 | 国产美女网 | 国产一区二区在线免费 | a黄色大片 | 在线视频观看亚洲 | 中文av在线播放 | 中文字幕在线观看第一区 | 日韩av在线高清 | 亚洲国产精品999 | 99精品在线视频播放 | 天天色天天操天天爽 | 欧美a性 | 国产视频亚洲视频 | 国产精品成人一区 | 国产综合视频在线观看 | 91最新在线| 久久成人国产精品一区二区 | 96久久| 成人一区电影 | 久草视频免费看 | 六月色播| 久久久久这里只有精品 | 视频高清| 日韩激情片在线观看 | 久久综合五月天婷婷伊人 | www黄色软件 | 久久美女精品 | 成人黄性视频 | 免费观看久久 | 性色xxxxhd | 中文字幕日韩精品有码视频 | 免费观看的黄色片 | 色全色在线资源网 | 中文字幕亚洲高清 | 青草视频在线免费 | 黄色国产区 | 欧美在线观看视频一区二区三区 | 成人试看120秒 | 国产日本亚洲高清 | 91精品蜜桃| 亚洲区二区 | 丁香婷婷在线观看 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 欧美激情精品久久久久久免费印度 | 亚洲区二区 | 波多野结衣在线播放一区 | 国产一级免费片 | 国产精品18久久久久久vr | 国产视频一区在线播放 | 国产一区免费 | 国产精品日韩在线 | 1024在线看片 | 欧美 亚洲 另类 激情 另类 | 天天草天天| 亚洲成av人片一区二区梦乃 | 国产精品久久久久久久久久99 | 亚洲第一av在线 | 午夜.dj高清免费观看视频 | 国产精品12 | 国产一区二区在线免费视频 | 97成人在线| 国产成人三级在线观看 | 国产精品欧美精品 | 日韩在线第一区 | 国产精品成| 在线免费视频一区 | 日韩影片在线观看 | 天天操网站 | 日韩欧美高清免费 | 深夜国产福利 | av成人免费观看 | 欧美成人播放 | 日韩欧美视频免费看 | 久久成人免费电影 | 国产精品网站 | 欧美日韩免费一区二区 | 精品一区二区三区在线播放 | 久久综合狠狠综合久久综合88 | 日韩精品视频在线观看免费 | 九九久久久久久久久激情 | 99re久久资源最新地址 | 国产一级性生活视频 | av大全在线免费观看 | 国产一级高清视频 | 日韩精品最新在线观看 | 欧美精品二区 | 2018亚洲男人天堂 | 91在线永久 | 国产精品美女www爽爽爽视频 | 久久久黄色免费网站 | 久久久久久久久电影 | 久久激情小视频 | 高清不卡一区二区在线 | 97在线免费视频观看 | 韩日精品在线 | 国产精品成人av久久 | 欧美婷婷色 | 高清av网 | 国产99亚洲| 国产伦理一区二区三区 | 日本精品视频免费 | 黄色片网站大全 | www在线免费观看 | 日韩电影在线一区二区 | 美女视频久久黄 | 欧美成人按摩 | 91精品国产99久久久久久久 | 日本久久视频 | 精品999久久久 | 久久成人黄色 | 超碰人人草人人 | 菠萝菠萝在线精品视频 | 激情婷婷在线观看 | 亚洲女在线 | 又黄又爽又色无遮挡免费 | 9999精品视频 | 亚洲精品中文字幕在线观看 | 四虎永久国产精品 | 黄网站免费看 | 深爱五月网 | 国产一级免费观看视频 | 日韩欧美一区二区三区在线观看 | 国产专区在线 | 精品91视频 | 久久精品亚洲精品国产欧美 | 日韩在线首页 | 亚洲激情电影在线 | www.色五月.com | 天天爽天天摸 | 五月婷婷激情六月 | 久久久久亚洲最大xxxx | 在线观看黄a | 最近免费中文字幕 | 天天干天天操天天拍 | 欧美va天堂va视频va在线 | 国产亚洲精品久久久久久 | 97精品国产手机 | 亚洲精品美女久久久 | 婷婷国产一区二区三区 | 免费黄色特级片 | 免费在线观看国产精品 | 亚洲片在线观看 | 男女激情麻豆 | av中文字幕不卡 | 五月婷婷激情六月 | 成人免费中文字幕 | 国产精品美乳一区二区免费 | 亚洲资源网 | 精品视频在线免费 | 97电影网手机版 | 免费观看的黄色片 | 欧美日韩视频在线观看免费 | 国产在线高清 | 免费成人在线观看 | 日本精油按摩3 | 欧美在线视频一区二区三区 | 亚洲成av人电影 | 人人澡人人干 | 9ⅰ精品久久久久久久久中文字幕 | 日韩黄色一级电影 | 国产精品igao视频网入口 | 日韩欧美在线高清 | 久久国产精品99久久久久久进口 | 99精品国产一区二区三区不卡 | 国产手机在线观看视频 | 激情小说网站亚洲综合网 | 国产污视频在线观看 | 久久色中文字幕 | av免费看在线 | 午夜视频免费播放 | www色网站 | 午夜视频在线观看一区二区 | 亚洲一级片免费观看 | 一本一本久久a久久精品综合小说 | 丁香婷婷综合五月 | 亚洲三级在线 | 日韩av免费在线看 | 亚洲第一区在线观看 | 久久综合狠狠综合久久狠狠色综合 | 九九久久国产精品 | 黄色av影院| 欧美精品乱码99久久影院 | 一 级 黄 色 片免费看的 | 91天天操 | 五月天堂色 | 91视频高清免费 | 久久深夜福利免费观看 | 久久人人精品 | 一级片视频在线 | www免费视频com━ | 最近中文字幕免费 | 在线 欧美 日韩 | 天天操天天添 | 91视频最新网址 | 992tv成人免费看片 | 久久久九色精品国产一区二区三区 | a级国产乱理论片在线观看 特级毛片在线观看 | 国产小视频免费在线观看 | 亚洲激情影院 | 奇米影视8888 | 香蕉91视频| 国产精品久久久久久久久搜平片 | 国产成本人视频在线观看 | 亚洲精品乱码久久久久久蜜桃91 | 香蕉视频国产在线观看 | 在线观看成人国产 | 夜夜夜草 | aⅴ精品av导航 | 国内精品久久久久久中文字幕 | 欧美一级免费在线 | 中文字幕 成人 | 国产精品99久久久久久武松影视 | 18国产精品白浆在线观看免费 | 911精品视频| 久久女同性恋中文字幕 | 9992tv成人免费看片 | 久久综合九色欧美综合狠狠 | 操综合| 在线免费日韩 | 亚洲va天堂va欧美ⅴa在线 | 国内久久 | 91精品色 | 欧美在线日韩在线 | 日韩动漫免费观看高清完整版在线观看 | 久久久久久久久爱 | av一区二区三区在线播放 | 精品a视频 | 夜夜操天天干, | 米奇影视7777| 91精品国产综合久久久久久久 | 精品国产欧美一区二区 | 国产不卡免费视频 | 亚洲少妇激情 | 亚洲黄色片在线 | 国产视频在线观看一区 | 亚洲精品国偷拍自产在线观看蜜桃 | 在线成人高清电影 | 久久久国产影院 | 午夜精品一区二区三区免费 | 一区视频在线 | 日韩在线观看不卡 | 天天干,狠狠干 | 99午夜| 国产精品久久久久久婷婷天堂 | 国产成人亚洲精品自产在线 | 最近最新中文字幕视频 | 免费看一及片 | 91在线免费公开视频 | 久久国产一区二区三区 | 国内精品99| 亚洲精品视频观看 | 国产成人精品一区二区在线观看 | 91黄视频在线观看 | 久久国产乱 | 黄色大片免费播放 | 免费视频区 | 国产精品2018| 激情电影影院 | 曰韩精品| 中文有码在线视频 | bbw av| 91资源在线免费观看 | 中日韩男男gay无套 日韩精品一区二区三区高清免费 | 五月婷婷在线视频观看 | 西西人体4444www高清视频 | 国产在线97 | 天天天天色综合 | 99精品偷拍视频一区二区三区 | 日韩在线三区 | 色综合欧洲| 三级黄在线| 99久久精品午夜一区二区小说 | 麻豆影视网站 | 午夜精品一区二区国产 | 成人小视频在线观看免费 | 91tv国产成人福利 | 日韩中文字幕免费在线播放 | a在线免费观看视频 | 麻豆一区二区三区视频 | 人人舔人人爱 | www日韩| 欧美一级大片在线观看 | 国产精品永久免费观看 | 亚洲国产电影在线观看 | 亚洲欧洲一区二区在线观看 | 激情五月播播久久久精品 | 久久精品爱爱视频 | 97超碰在线久草超碰在线观看 | 免费成视频 | 中文字幕在线观看第一区 | www.在线看片.com | 精品久久综合 | 久久精品综合一区 | 91一区在线观看 | 99精品国产福利在线观看免费 | 国产区av在线 | 99爱精品视频 | 国产日韩视频在线播放 | 日韩精品中字 | 99精品国产一区二区 | 国产精品久久久久久久久大全 | 日韩精品一区二区三区中文字幕 | 免费在线观看黄网站 | 888av| 日日干日日操 | 日日麻批40分钟视频免费观看 | 丁香花在线视频观看免费 | 中文在线www | 免费日韩一区 | 成人免费在线观看电影 | 成年人免费看片网站 | 国产日本高清 | 国产一区二区观看 | 玖玖在线视频观看 | 婷婷播播网 | 日韩aⅴ视频 | 青青河边草免费视频 | 91黄色视屏 | 中文字幕韩在线第一页 | 伊人中文在线 | 六月天色婷婷 | 久久99视频精品 | 亚洲精品www | 国产在线观看中文字幕 | 欧美 日韩 性 | 日韩三级.com | 在线免费观看视频一区 | 日p在线观看| 美女在线国产 | 久久精品国产免费观看 | 91亚洲免费 | 欧美精品小视频 | 日韩在线视频不卡 | 中文字幕传媒 | 日韩福利在线观看 | 午夜精品久久久久久久99水蜜桃 | 999久久a精品合区久久久 | avove黑丝 | 四虎国产免费 | 91香蕉视频色版 | 成人午夜毛片 | 日本中文字幕网 | 国产精品美女999 | 黄色av一级片 | 婷婷丁香综合 | 日韩视频在线观看视频 | 一区在线免费观看 | 欧美成人h版在线观看 | 伊在线视频 | 久久久免费观看完整版 | 婷婷国产v亚洲v欧美久久 | 超碰在线观看av.com | 午夜黄色大片 | 亚洲电影第一页av | 日韩免费视频播放 | 天天操天天添天天吹 | 黄色在线免费观看网址 | 免费福利在线播放 | 国产一级免费在线观看 | 欧美一区二区三区免费观看 | 国产一区精品在线观看 | 亚洲婷婷综合色高清在线 | 在线观看av片 | 黄色一级免费电影 | 日韩免费av网址 | 亚洲精品网站在线 | 免费av的网站 | 91九色国产| 蜜桃av人人夜夜澡人人爽 | 日韩av视屏| 伊人成人激情 | 麻豆视频免费在线播放 | 成人在线免费小视频 | 国产婷婷 | av电影 一区二区 | 亚洲精品网址在线观看 | 亚洲午夜久久久综合37日本 | 日韩在线观看三区 | 韩国av在线播放 | 色偷偷中文字幕 | 亚洲精品视频在线看 | 天天射综合 | 久久综合精品国产一区二区三区 | 国产精品久久久久久99 | 韩日电影在线免费看 | 在线中文字幕av观看 | 日韩精品久久中文字幕 | 国产视频在线一区二区 | 操操操com | 国产特黄色片 | 香蕉精品在线观看 | 99情趣网视频 | 伊人黄| 中文字幕成人在线观看 | a在线观看免费视频 | 日本久久不卡视频 | 午夜av不卡| 日韩网站中文字幕 | 久久国产欧美日韩 | 国产午夜在线观看视频 | 日韩免费高清在线观看 | 国产精品99久久久久久久久久久久 | 久99久精品视频免费观看 | 国产九色91 | 日日夜夜人人精品 | 91精品办公室少妇高潮对白 | 国产亚洲一级高清 | 99精品免费| 四虎4hu永久免费 | 日本精品一区二区 | 日日夜夜天天射 | 天天做天天干 | 日本高清中文字幕有码在线 | 久久天堂精品视频 | 91禁在线观看 | 久精品视频免费观看2 | 久久特级毛片 | 黄色三级免费观看 | 日韩电影在线视频 | 亚洲精欧美一区二区精品 | 欧美精品中文 | 亚洲涩涩色 | 久九视频 | 亚洲区另类春色综合小说 | 久久成人视屏 | 狠狠激情中文字幕 | 九色免费视频 | 久久国产精品99久久久久久丝袜 | 午夜av一区二区三区 | 国产 亚洲 欧美 在线 | 久久草精品 | 中文字幕在线影院 | 亚洲国产精品推荐 | 国产一级电影免费观看 | 欧美成人aa| 五月婷婷开心 | 国产亚洲精品女人久久久久久 | 五月婷激情 | 国产小视频在线观看免费 | 日本激情中文字幕 | 911av视频 | 国产一区二区精品在线 | 日韩一级电影网站 | 国产精彩视频一区二区 | 国产69久久精品成人看 | 亚洲理论在线 | 黄网在线免费观看 | 久久精品老司机 | 久色网| 97视频在线观看视频免费视频 | 337p日本大胆噜噜噜噜 | 久久久久免费精品视频 | 日韩欧美视频在线观看免费 | 免费情缘 | 久久最新视频 | 成人资源在线播放 | www.com黄 | 久久66热这里只有精品 | 国产97av| 六月丁香婷婷网 | 久久久免费毛片 | 久久躁日日躁aaaaxxxx | av在线免费网| 成人av影视在线 | 日本中文字幕视频 | 在线观看色网站 | 日韩久久精品一区二区 | 在线观看国产一区二区 | www国产亚洲精品久久麻豆 | 午夜精品视频福利 | 91成人看片 | 91在线看黄 | 久久久69 | 99精品视频在线免费观看 | 992tv人人网tv亚洲精品 | 亚洲精品国内 | 五月天高清欧美mv | 99久久精品免费视频 | 天天操操操操操 | 超碰公开在线观看 | 伊人手机在线 | 中文字幕在线免费 | 偷拍精偷拍精品欧洲亚洲网站 | 亚洲黄色成人网 | 亚洲午夜精品一区二区三区电影院 | 有没有在线观看av | 黄a在线看 | 男女激情免费网站 | 91精品国产自产91精品 | 天天干天天怕 | 91九色视频网站 | 亚洲欧洲在线视频 | 999在线观看视频 | 在线日韩视频 | 在线观看视频免费播放 | 亚洲草视频 | 美女国产精品 | 国产精品自产拍在线观看桃花 | 欧美亚洲精品在线观看 | 麻豆mv在线观看 | 黄色成人免费电影 | 免费观看成人网 | av黄色在线播放 | 91香蕉亚洲精品 | 欧美最爽乱淫视频播放 | 成人播放器 | 成年人黄色免费网站 | 欧美大片在线观看一区 | 中文字幕av在线免费 | 久久精品二区 | 缴情综合网五月天 | 国产99久久99热这里精品5 | 欧美一二区在线 | 日韩美一区二区三区 | 国产 中文 日韩 欧美 | 亚洲视频电影在线 | 日本性动态图 | 黄色精品国产 | 天天色天天草天天射 | 极品美女被弄高潮视频网站 | 国产高清免费av | 最新av网站在线观看 | 一色av | 国产精品久久久久久久久久久久久 | 欧美久久久久久久久久 | 在线观看日韩av | 在线视频一二三 | 四虎影视成人 | 激情综合色综合久久 | 日韩欧美在线综合网 | 奇米网网址| 日韩精品中文字幕在线 | 日韩在线观看第一页 | 亚洲精品视频国产 | 日韩视频一区二区三区 | 精品在线视频观看 | 91av在线免费播放 | 久久久久美女 | 亚洲无吗av| 91夫妻自拍| 三级黄色三级 | 国产黄影院色大全免费 | 日日操操操 | 美女免费黄视频网站 | 在线观看网站你懂的 | 97超视频在线观看 | 色综合久久88色综合天天免费 | 成人午夜精品福利免费 | 看毛片网站 | 色综合久久88色综合天天6 | 欧美日韩电影在线播放 | 99久久日韩精品视频免费在线观看 | 欧美在线视频第一页 | 黄色网中文字幕 | 久久国产精品99久久久久久老狼 | 国产综合久久 | 亚洲综合在线视频 | 欧美aaa视频| 国产一区二区三区免费观看视频 | 国产裸体无遮挡 | 日日综合网 | 99av国产精品欲麻豆 | 久久久国产精品久久久 | 黄色国产区 | 日本公妇在线观看高清 | 久久精品99国产精品酒店日本 | 亚洲黄色免费在线看 | 欧美一区中文字幕 | 黄色成人在线 | 欧美午夜理伦三级在线观看 | 免费观看91视频 | 国产精品福利在线观看 | 人人超在线公开视频 | 久久伦理电影 | 色五月色开心色婷婷色丁香 | 国产精品成人久久久久久久 | 亚洲一区黄色 | 亚洲精品视频在线看 | 在线色视频小说 | 日韩亚洲精品电影 | 国产日韩精品一区二区在线观看播放 | 九九精品毛片 | 国产精品女人久久久久久 | 成人在线视频在线观看 | 国产九九九九九 | 一区二区三区免费 | 96视频在线| 黄色软件大全网站 | 久久短视频 | 日韩电影在线观看一区二区三区 | 欧美日韩在线精品一区二区 | 特及黄色片 | 久久国产精彩视频 | 中文字幕免费观看 | 国产精久久久 | 日韩一区正在播放 | 婷婷成人在线 | 操操操夜夜操 | 国产日韩欧美在线观看视频 | 日本精品在线看 | 成人a级免费视频 | 久久99视频 | 九九免费在线观看视频 | www国产亚洲精品久久麻豆 | 亚色视频在线观看 | 丁香婷婷激情网 | 国产成人久久久77777 | 中文字幕亚洲五码 | 亚洲欧美国产精品 | 最新国产在线 | 亚洲成人xxx | 国产免费一区二区三区最新6 | 成人黄色国产 | 午夜国产福利在线 | 免费三级影片 | 精品视频成人 | 午夜精品中文字幕 | 国产精品免费观看久久 | 天天夜夜狠狠操 | 精品国产免费观看 | 丁香 婷婷 激情 | www.黄色网.com| 婷婷网站天天婷婷网站 | 久久精品123| 国产精品久久久久久模特 | 久久国产区| 日韩免费 | 欧美大片在线观看一区 | 一区三区在线欧 | 天天干.com| 黄色av影视 | 国产一区二区成人 | 国产小视频在线免费观看 | 国产淫a| 婷婷激情5月天 | 久久免费a | 日本夜夜草视频网站 | 日韩视频一区二区在线 | 韩国一区二区在线观看 | 国内三级在线 | 一区二区视 | 天天天干夜夜夜操 | 久久久午夜精品理论片中文字幕 | 久久久久久国产精品久久 | 久久国产高清 | 国产午夜精品福利视频 | 五月婷婷在线观看 | 人人澡人人草 | 日韩免费观看一区二区 | 99精品区 | 久久精品视频免费观看 | 午夜精品久久久久久久爽 | 国产在线高清视频 | 免费av网站观看 | 欧美va日韩va | 国产精品久免费的黄网站 | 久久综合九色九九 | 国产成人一区二区三区电影 | 四虎免费av | 国产精品久久久久久久毛片 | 免费高清在线视频一区· | av片无限看 | 免费看污的网站 | 亚洲国产99| 免费福利片2019潦草影视午夜 | 婷婷五月色综合 | 天天搞天天干 | 天堂av在线中文在线 | 亚洲欧美婷婷六月色综合 | 欧美一级艳片视频免费观看 | 天天综合网天天综合色 | 香蕉久久久久久av成人 | 亚洲欧洲久久久 | av在线收看| 久久97久久| 亚洲国产成人久久 | 成人app在线播放 | 99色婷婷| 亚洲成人av免费 | a级国产乱理伦片在线播放 久久久久国产精品一区 | 国产欧美综合视频 | 免费观看丰满少妇做爰 | 国产亚洲一区二区在线观看 | 国产精品久久一区二区无卡 | 国产亚洲观看 | 久久婷婷五月综合色丁香 | 亚洲综合丁香 | 天天操天天射天天添 | 精品久久网站 | 四虎国产 | 亚洲国产精品va在线看黑人 | 超碰免费公开 | 国内揄拍国内精品 | 伊人手机在线 | 麻豆观看| 永久免费精品视频网站 | 狠狠网亚洲精品 | 成人在线视频免费看 | 国产婷婷精品av在线 | 日韩欧美精选 | 五月婷婷久草 | 丝袜制服综合网 | 摸bbb搡bbb搡bbbb | 中文字幕av在线播放 | 久草亚洲视频 | 99久久爱| av片在线观看免费 | 亚洲蜜桃av | 久久久久久久久久久免费视频 | 天天色天天骑天天射 | 婷婷色综合网 | 91精品国产自产在线观看 | 国产精品露脸在线 | 色综合久久久久综合体 | 国产一区二区不卡视频 | 国产第一页精品 | 黄色三级免费看 | 国产成人精品亚洲精品 | 亚洲a网| 久久九九久久精品 | 精品美女久久久久 | 99久久99久久精品免费 | 好看的国产精品视频 | 国产成人亚洲精品自产在线 | 久久免费av电影 | 最新91在线视频 | 国产成视频在线观看 | 免费看成人av | 国产一区高清在线观看 | 黄色片视频免费 | 成人wwwxxx视频|