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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用pygame写一款飞船游戏(笔记)

發布時間:2024/1/18 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用pygame写一款飞船游戏(笔记) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

pygame為創建一款游戲提供了很多方便地操作,下面將會用此寫一款打飛機游戲。使用的版本為python3。筆記可能有些許錯誤,請見諒。
最后游戲界面如下:

游戲大致想法:外星人水平移動,碰到左右邊緣x軸的速度方向改變,同時y軸會運動。當外星人碰到飛船或到達邊緣時,扣除生命值,重置外星人和飛船位置。每清除完一波外星人,游戲難度提升。

1.整體模塊大致介紹

一共有9個模塊,如下圖

設置類模塊:我們可以將游戲基本設置屬性放在里面,例如窗口的寬和長,背景顏色,又例如飛船速度,外星人運動速度等游戲難度相關的屬性

功能函數模塊:里面裝著顯示窗口,更新飛船位置等等函數,在主模塊中通過調用功能函數模塊便基本實現游戲

飛船類模塊:定義了一個飛船類,在這里存儲著飛船的圖片,以及通過飛船圖片獲取得來的飛船矩形。還有更新飛船位置的函數,在pygame中,可以通過更新矩形位置,來實現物體的移動

子彈類模塊:我們用創建有色矩形的方式來創建子彈,類中存儲著子彈顏色,子彈速度,子彈寬度,其中一部分可以從設置類對象中獲取。還有更新子彈位置的函數,繪制子彈的函數

外星人類模塊:定義一個外星人類,里面包含著外星人的圖片,代表外星人的矩形,更新外星人位置的函數等

游戲統計類模塊:存儲著游戲進程中,玩家得分,歷史高分記錄,當前生命值等

按鈕類模塊:可用于生成開始按鈕的類,類中存儲著顯示的字體,將文字渲染后的圖片等

顯示板類:可用于生成顯示的分數,生命條,歷史高分條

2.模塊詳細介紹

游戲功能函數模塊幾乎包含運行整個游戲所需的函數,我們可以先完善其他模塊的內容,最后再完善游戲功能模塊。

2.1游戲設置類模塊

class Settings():def __init__(self):self.bgc = (230,230,230) #背景顏色self.screen_width = 1200self.screen_height = 700 #屏幕大小self.ship_hp = 3 #飛船血條self.bullet_width = 20self.bullet_height = 3self.bullet_color = (0x66,0xcc,0xff) #子彈大小顏色self.bullet_max = 5 #允許射出的子彈最大數目self.alien_yspeed = 10 #外星人y軸移動速度self.alien_xdirection = 1 #外星人x軸移動方向self.speedup_scale = 1.1 #速度提升倍率和分數提升倍率self.initial_speed()#初始化飛船,子彈,外星人水平速度。def speed_up(self):self.alien_xspeed *= self.speedup_scaleself.ship_speed *= self.speedup_scaleself.bullet_speed *= self.speedup_scaleself.alien_score += 20def initial_speed(self):'''初始化設置'''self.alien_xspeed = 1self.ship_speed = 3self.bullet_speed = 1.5self.alien_score = 50 #射殺一個外星人后有50分def initial_ship_life(self):self.ship_hp = 3 #重置飛船生命值

在游戲設置類模塊中,我們編寫了游戲很多的參數。如果想改變窗口大小,游戲難度可以通過游戲設置類來改變。
考慮玩法,因為會有難度提升的元素,所以我們需要有一個速度提升速率,然后在一個函數中調節游戲難度相關元素,在清除一波外星人后調用。同時如果生命值全用掉,需要重來,我們需要初始化這些設置,于是便有初始速率的函數。

2.2飛船類模塊

import pygame from pygame.sprite import Sprite class Ship(Sprite):def __init__(self,screen,ai_settings):super().__init__()self.image = pygame.image.load('bship.png') #加載圖形self.screen = screen #獲取屏幕的surfaceself.screen_rect = self.screen.get_rect() #獲取屏幕矩形邊框self.ship_rect = self.image.get_rect() #獲取飛船初始邊框self.ship_rect.centerx = self.screen_rect.centerxself.ship_rect.bottom = self.screen_rect.bottom #將飛船位置移動到屏幕底部終點self.rect = self.ship_rectself.ship_width = self.rect.widthself.left_flag = Falseself.right_flag = False #飛船的移動標志self.settings = ai_settings #引入系統設置def blitme(self):'''繪制飛船的函數'''self.screen.blit(self.image,self.ship_rect) #繪制飛船def update(self):'''更新飛船移動標志的函數'''if self.left_flag and self.ship_rect.left > 0:self.rect.centerx -= self.settings.ship_speedif self.right_flag and self.ship_rect.right < self.screen_rect.right:self.rect.centerx += self.settings.ship_speeddef reset_ship(self):self.ship_rect.centerx = self.screen_rect.centerx #重新放置飛船

游戲的一幀就是一幅圖像,我們繪制一幅圖像會有圖層疊放順序,而一個圖層在pygame里面就是一個surface

函數功能
pygame.image.load(圖片路徑)返回一個對應的surface
surface.get_rect()返回surface對應的矩形

rect的相關參數

參數意義
rect.centerrect的中心
rect.centerxrect的中心x坐標
rect.centeryrect的中心y坐標
rect.bottom/top/left/rightrect的各邊界
rect.width矩形的寬度
rect.height矩形的高度
rect.x矩形左上角x坐標
rect.y矩形左上角y坐標

在上面的飛船類模塊中,有兩個移動標志,是為了在游戲功能函數模塊中檢測按鈕事件,改變移動標志,讓飛船移動的。

Sprite是從pygame.sprite引入的一個類,主要方便對繼承該類的類對象進行編組,進行多元素管理。飛船類繼承Sprite類是為了制作左上方的血條。

2.3子彈類模塊

import pygame from pygame.sprite import Spriteclass Bullet(Sprite):def __init__(self,ai_setting,screen,ship):super().__init__()self.screen = screen #獲取當前屏幕self.rect = pygame.Rect(0,0,ai_setting.bullet_width,ai_setting.bullet_height) #新建代表子彈的矩形self.rect.centerx = ship.ship_rect.centerxself.rect.top = ship.ship_rect.top #將位置調整至飛船頂部self.color = ai_setting.bullet_color #設置子彈顏色self.speed = ai_setting.bullet_speed #設置子彈速度def update(self):self.rect.y -= self.speeddef draw_bullet(self):pygame.draw.rect(self.screen,self.color,self.rect) #繪制子彈 函數功能
pygame.Rect(x,y,width,height)以(x,y)作為將創作矩形的左上角坐標,創建一個寬為width,高為height的矩形
pygame.draw.rect(surface,顏色,rect)在surface中繪制指定顏色的矩形

子彈類模塊中,用pygame繪制一個簡單的矩形來代表子彈。

在update()函數中,通過更改子彈代表矩形的左上角y坐標來讓其移動。另外,子彈類要繼承Sprite類,是為了對其進行編組,其必要性比飛船類繼承Sprite類更大。后面通過向編組中添加元素,調用編組.update()就能對里面的元素全部調用update函數。以及檢測碰撞可以使用。update()函數有點類似C++中的虛函數,名字不能變。

2.4外星人類模塊

import pygame from pygame.sprite import Spriteclass Alien(Sprite):def __init__(self,ai_settings,screen):super().__init__()self.ai_settings = ai_settingsself.screen = screenself.image = pygame.image.load("aship.png") #加載敵人圖片self.rect = self.image.get_rect() #獲取矩形self.rect.x = self.rect.widthself.rect.y = self.rect.height #開始矩形默認坐標位左上角,移動一個身位def check_edge(self):screen_rect = self.screen.get_rect()if self.rect.right >= screen_rect.right or self.rect.left <=0:return True #檢測是否到達邊界def update(self):'''向左或向右移動外星人'''self.rect.x += (self.ai_settings.alien_xspeed * self.ai_settings.alien_xdirection)

外星人類同樣要繼承Sprite類,方便后面編組。

update()函數用來更新其x坐標,因為update()函數幾乎每一幀都會調用,而y軸的移動只有外星人碰到邊緣后才會調用。

類中還有一個檢查是否碰到窗口左右兩邊的函數,返回bool型值。從而在游戲功能函數模塊中的函數調用檢測是否到達邊緣并改變alien_xdirection即外星人的x軸移動方向。

2.5游戲統計類模塊

import json class Game_stats():'''跟蹤游戲的統計信息'''def __init__(self,ai_settings):self.ai_settings = ai_settingsself.ship_hp = ai_settings.ship_hp #獲取飛船血條個數self.score = 0 #統計得分self.game_active = Falseself.level = 1 #統計等級 with open("high_score.json",'r') as score_file:self.high_score = json.load(score_file)def reset_ship_hp(self):self.ship_hp = self.ai_settings.ship_hp #重新設置生命self.score = 0 #重新設置得分def update_high_score(self):if self.score > self.high_score:self.high_score = self.score #更新最高分with open("high_score.json",'w') as score_file:json.dump(self.high_score,score_file)

該類的主要操作就是統計生命值,分數等等。

有個重置生命值的函數,在生命值耗盡重新開始游戲時調用,更新最高分函數,可以在每擊殺一個外星人時調用一次,里面還會判斷是否更新。

這里用了json文件來存儲高分記錄。我們可以先在當前文件夾創建一個json文件,并寫入0值,什么都不寫會報錯。

2.6游戲按鈕類模塊

import pygame.fontclass Button():def __init__(self,ai_settings,screen,msg):'''創建對應文本msg的按鈕'''self.screen = screenself.screen_rect = screen.get_rect() #獲取窗口矩形self.width,self.height = 200,50 #設定按鈕矩形長寬self.button_color = (0,255,0) #設定按鈕背景顏色self.text_color = (255,255,255) #設定按鈕字體顏色self.font = pygame.font.SysFont(None,48)#設定按鈕字體字號self.rect = pygame.Rect(0,0,self.width,self.height)self.rect.center = self.screen_rect.center#設定按鈕矩形,并移動到屏幕中心self.msg_image = self.font.render(msg,True,self.text_color,self.button_color) #將文字渲染成圖片self.msg_image_rect = self.msg_image.get_rect()self.msg_image_rect.center = self.rect.center #設定圖片的矩形,并移動中心def draw_button(self):self.screen.fill(self.button_color,self.rect)self.screen.blit(self.msg_image,self.msg_image_rect) 函數功能
pygame.font.SysFont(字體,字號,bool1,bool2)創建字體,bool1為是否粗體,bool2為是否斜體,默認False。字體None為默認字體。
Font對象.render(文本,bool,c1,c2)將文本以對應字體渲染成圖片,bool型值為是否開啟抗鋸齒功能,c1為文本顏色,c2為背景顏色。返回surface
surface1.fill(color,rect)在surface1上的rect填充顏色
surface1.blit(surface2,rect)在surface1上對應矩形處繪制surface2

font模塊詳細:https://blog.csdn.net/qq_41556318/article/details/86303502

在這里我們主要是對play按鈕的新建,先用pygame.font.SysFont(None,48)創建字體,然后用font.render(...)來得到文本的surface。最后繪制時先繪制背景矩形,在背景surface上繪制文本的surface。繪制背景矩形也可以用子彈類用的pygame.draw.rect()。這里要先繪制背景矩形是因為,文本surface的矩形往往事前較難知道多大。可能偏大,可能偏小。
下面第一幅圖為不繪制按鈕背景矩形,第二幅為繪制后。

2.7 顯示板類模塊

from Ship import Ship import pygame from pygame.sprite import Groupclass Show_board():def __init__(self,ai_settings,screen,stats):self.screen = screenself.screen_rect = screen.get_rect()self.ai_settings = ai_settingsself.text_color = (30,30,30)self.font = pygame.font.SysFont(None,48) #設置字體字號self.prep(stats)def prep_score(self,stats):'''準備當前得分文本surface'''self.score = int(round(stats.score,-1)) #精確分數到十位self.total_score = "{:,}".format(self.score)#數字格式化,每隔三位加一個逗號self.total_score_image = self.font.render(self.total_score,True,self.text_color,self.ai_settings.bgc) #將分數渲染成圖片self.total_score_image_rect = self.total_score_image.get_rect() #獲取圖片矩形self.total_score_image_rect.right = self.screen_rect.right -20 self.total_score_image_rect.top = self.screen_rect.top #設置矩形位置def prep_high_score(self,stats):'''準備最高得分文本surface'''self.high_score = int(round(stats.high_score,-1))self._high_score = "{:,}".format(self.high_score)self.high_score_image = self.font.render(self._high_score,True,self.text_color,self.ai_settings.bgc)self.high_score_image_rect = self.high_score_image.get_rect() #獲取矩形self.high_score_image_rect.centerx = self.screen_rect.centerx self.high_score_image_rect.top = self.screen_rect.top #設置矩形位置def prep_level(self,stats):'''準備當前難度文本surface'''self.level = stats.levelself.level_str = "level:" + str(self.level)self.level_image = self.font.render(self.level_str,True,self.text_color,self.ai_settings.bgc) self.level_image_rect = self.level_image.get_rect() #獲取矩形self.level_image_rect.right = self.screen_rect.right-20self.level_image_rect.top = self.screen_rect.top + 32 #設置矩形位置def prep_hp(self,stats):'''準備生命值的圖像'''self.hp = stats.ship_hpself.ships = Group()for number in range(self.hp):ship = Ship(self.screen,self.ai_settings) #新建一個飛船圖標ship.rect.x = 10 + number * ship.ship_widthship.rect.y = 10 #設置圖標位置self.ships.add(ship)def prep(self,stats):self.prep_score(stats)self.prep_high_score(stats)self.prep_level(stats)self.prep_hp(stats)def draw_board(self):'''繪制文本的函數'''self.screen.blit(self.total_score_image,self.total_score_image_rect)self.screen.blit(self.high_score_image,self.high_score_image_rect)self.screen.blit(self.level_image,self.level_image_rect)self.ships.draw(self.screen) 函數功能
round(number,精確位數)返回number對應精確位數的float型數,1位小數點后一位,-1為精確到十位,-2為百位,以此類推。
“:,”.format(number)返回字符串,內容為number每隔3位加逗號。如1000000會變成1,000,000

顯示板類只要是在屏幕上顯示生命值,當前分數,最高分數,當前游戲難度。做法都是得到渲染文本后的surface,然后進行繪制,這里文本背景顏色用一開始設置類中的窗口背景顏色就可以了。

很多模塊都需要讀取窗口的surface,來根據surface的某些參數確定自己的位置。

2.8主模塊

import pygamefrom Settings import Settings from Ship import Ship import GameFunction as gf from pygame.sprite import Group from Alien import Alien from Game_stats import Game_stats from button import Button from Show_board import Show_boarddef run_game():'''運行游戲'''settings = Settings() #新建設置類對象pygame.init() #初始化screen = pygame.display.set_mode((settings.screen_width,settings.screen_height)) #新建一個屏幕并設置屏幕寬和高度pygame.display.set_caption("打飛機") #設置窗口標題ship = Ship(screen,settings) #新建飛船對象bullets = Group() #創建存儲子彈的編組aliens = Group() #創建存儲外星人的編組gf.create_aliens(settings,screen,ship,aliens) #添加元素stats = Game_stats(settings) #新建統計類play_button = Button(settings,screen,"PLAY") #新建play按鈕show_board = Show_board(settings,screen,stats) #新建顯示面板while True:gf.check_event(settings,screen,ship,bullets,stats,play_button)#檢查按鍵事件if stats.game_active == True:ship.update() #更新飛船位置gf.update_bullets(bullets,aliens,settings,screen,ship,stats,show_board)#更新和繪畫子彈的函數gf.update_aliens(settings,screen,bullets,aliens,ship,stats,show_board)#更新外星人位置并檢查碰撞gf.update_Screen(settings,screen,ship,bullets,aliens,stats,play_button,show_board)#更新屏幕run_game() 函數功能
pygame.display.set_mode((width,height))設置主窗口大小,返回surface
pygame.display.set_caption(標題)設置標題

Group()為新建一個編組,可以往編組里面添加元素

函數功能
group.update()對里面的每個精靈調用update(),精靈的update()需要自己定義
group.draw(surface)在surface中自動調用surface.blit(…)函數
group.add(a)添加元素a
group.remove(a)刪除元素a
group.sprites()以列表形式返回編組中的精靈
group.empty()判斷編組中是否含有元素

update(),draw()相關定義:https://www.cnblogs.com/huwt/p/10333500.html

在主模塊中我們會做一下事情:
1.創建主窗口
2.創建飛船對象
3.創建子彈空編組
4. 創建外星人空編組
5. 調用創建一波外星人函數
6. 創建統計類對象
7. 創建play按鈕
8. 創建顯示板類對象
9. 主循環:

1.檢查事件按鈕函數
2.如果游戲狀態活躍,執行更新飛船,子彈,外星人的函數
3.更新屏幕內容函數

創建一波外星人的函數,及主循環的函數都存儲在游戲功能函數模塊中。

我們在游戲設置類會有個游戲狀態的變量,開始時為False,要允許窗口有內容顯示及點擊退出,檢查事件按鈕函數和更新屏幕內容函數不檢測游戲狀態。其他則未點擊play時不執行。

3.游戲功能類模塊

引入模塊:
import pygame
import sys
from Bullets import Bullet
from Alien import Alien
from time import sleep

3.1 檢查事件按鈕函數

def check_event(ai_setting,screen,ship,bullets,stats,play_button):'''按鈕事件檢查'''for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit() #檢測是否退出elif event.type == pygame.KEYDOWN:if event.key == pygame.K_RIGHT:ship.right_flag = Trueelif event.key == pygame.K_LEFT:ship.left_flag = True #按鈕按下相關操作elif event.key == pygame.K_SPACE:new_bullet = Bullet(ai_setting,screen,ship)if len(bullets) < ai_setting.bullet_max:bullets.add(new_bullet) #按下空格添加子彈elif not stats.game_active and event.type == pygame.MOUSEBUTTONDOWN:mouse_x,mouse_y = pygame.mouse.get_pos() #獲取鼠標位置flag = play_button.rect.collidepoint(mouse_x,mouse_y) #檢測鼠標是否在矩形中if not stats.game_active and flag:stats.game_active = True #將游戲狀態設置為可以開始pygame.mouse.set_visible(False) #隱藏鼠標elif event.type == pygame.KEYUP:if event.key == pygame.K_RIGHT:ship.right_flag = Falseif event.key == pygame.K_LEFT:ship.left_flag = False #松開按鈕相關操作 函數功能
pygame.event.get()獲取鍵盤和鼠標的所有事件
sys.exit()程序終止
rect.collidepoint(x,y)檢查(x,y)點是否在rect中
pygame.mouse.get_pos()獲取當前鼠標的x,y值
pygame.mouse.get_visible(bool)設置鼠標在窗口內可見或不可見

event.type 事件類型

事件類型意義
pygame.QUIT點擊窗口關閉按鈕
pygame.KEYDOWN按鈕按下
pygame.KEYUP按鈕松開
pygame.MOUSEBUTTONDOWN鼠標點擊(左/右鍵)

event.key按鈕類型

按鈕類型意義
pygame.K_RIGHT方向右鍵
pygame.K_LEFT方向左鍵
pygame.K_SPACE空格鍵

在這個檢測按鈕事件的函數中,我們先用for event in pygame.event.get()來獲取全部事件,然后先判斷event.type,如果是游戲非活躍狀態下點擊鼠標,則先用pygame.mouse.get_pos()獲取鼠標坐標檢測play_button.rect.collidepoint(x,y)來檢測是否有點擊到正確的矩形,如果有則設置游戲活躍狀態為True

如果是按下鍵盤按鈕,則檢測是按下哪個按鈕,如果是方向鍵則設置飛船的允許移動標志為True,如果是空格鍵,我們限定最多射出5發子彈,滿足條件時,才往子彈編組中添加新的子彈。

如果是松開鍵盤按鈕,則檢測是松開哪個按鈕,這時我們只用考慮方向鍵,并將對應的移動標志設置為False就可以了。

3.2 更新繪制屏幕的函數

def update_Screen(ai_settings,screen,ship,bullets,aliens,stats,play_button,show_board):'''繪制屏幕內容的函數'''screen.fill(ai_settings.bgc) #先圖刷背景顏色ship.blitme() #畫好飛船位置for bullet in bullets.sprites():bullet.draw_bullet()aliens.draw(screen) #對編組每一個元素進行繪制if not stats.game_active:play_button.draw_button()show_board.draw_board()pygame.display.flip() #顯示出來 函數功能
pygame.display.flip()更新待顯示的surface到屏幕上

這個函數里面,我們如同將各個圖層組合起來形成一幅圖像。
我們先用screen.fill(...)來填充背景顏色,然后調用ship.blitme()函數來繪制飛船,因為子彈我們是通過繪制矩形的方式來呈現,沒有image這個屬性,所以我們不能直接用bullets.draw(screen)函數而需要逐個繪制子彈。接著直接aliens.draw(screen)就能直接繪制外星人,相當于調用了screen.blit(alien.image,alien.rect),所以類定義時需要有這兩個數據成員。

接著,在游戲活躍狀態為False時調用play_button.draw_button繪制PLAY按鈕,接著則是調用show_boadrd.draw_board()將顯示板的其他元素顯示出來。最后則是調用pygame.display.flip()來讓所有surface顯示

3.3 創建外星人及群的函數

def create_alien(ai_settings,screen,aliens,number_x,number_y):'''創建一個外星人的函數'''alien = Alien(ai_settings,screen)alien.rect.x = alien.rect.width + 2 * alien.rect.width * number_xalien.rect.y = alien.rect.height + 2 * alien.rect.height * number_y#計算這個外星人的坐標aliens.add(alien) #將該外星人添加進編組中def get_alien_numberx(ai_settings,alien_width):'''計算一行能有多少個外星人的函數'''total_space_x = ai_settings.screen_width - 2 * alien_width #一行總長度number = int(total_space_x/(2 * alien_width)) #一行外星人個數return numberdef get_alien_numbery(ai_settings,ship_height,alien_height):'''計算一列能有多少個外星人的函數'''total_space_y = ai_settings.screen_height - ship_height - 3*alien_heightnumber = int(total_space_y/(2 * alien_height))return numberdef create_aliens(ai_settings,screen,ship,aliens):'''創建外星人群的函數'''alien = Alien(ai_settings,screen)alien_width = alien.rect.widthalien_height = alien.rect.height #獲取一個外星人的寬度與高度total_number_x = get_alien_numberx(ai_settings,alien_width)total_number_y = get_alien_numbery(ai_settings,ship.ship_rect.height,alien_height)#獲取行和列for number_y in range(total_number_y):for number_x in range(total_number_x):create_alien(ai_settings,screen,aliens,number_x,number_y)#創建外星人

在創建一個外星人的函數中,我們用了alien.rect.x = alien.rect.width + 2 * alien.rect.width * number_x這樣的語句來創建對應位置的外星人,這里2*...可以改變,這里主要是為了在兩個外星人之間留著一個外星人的空隙。

在計算外星人一行,一列有多少個外星人的函數中,我們想讓一行中左右兩邊各差一個外星人才到達窗口左右邊緣。一列中應考慮與飛船的距離及與窗口上邊界差多少個外星人。這些可以自己調整。在計算number時都是2*...則是考慮兩個外星人之間差一個外星人的身位。

在創建外星人群的函數中,我們先創建一個臨時用的外星人,但不添加進編組以獲取一個外星人的長和寬。接著調用計算一列、一行中有多少個外星人函數,最后用循環一個個創建外星人便可。

3.4 更新子彈位置的函數

def update_bullets(bullets,aliens,ai_settings,screen,ship,stats,show_board):'''更新子彈顯示的函數'''bullets.update() #調用編組中元素的所有update函數for bullet in bullets.copy():if bullet.rect.bottom <= 0:bullets.remove(bullet) #將超出屏幕邊界的子彈刪除collision = pygame.sprite.groupcollide(bullets,aliens,True,True)if collision:for alien in collision.values():stats.score += ai_settings.alien_score #射中后加分stats.update_high_score() #檢查是否需要更新最高分show_board.prep_score(stats) #更新分數顯示show_board.prep_high_score(stats) #更新最高分顯示if len(aliens) == 0:bullets.empty()ai_settings.speed_up()create_aliens(ai_settings,screen,ship,aliens)stats.level += 1show_board.prep_level(stats)#射殺完外星人后重新新建 函數功能
pygame.sprite.groupcollide(g1,g2,bool1,bool2)檢查g1和g2之間是否有碰撞,如果有則根據布爾型值來確定是否刪除編組對應發生碰撞的sprite,bool1對應g1,返回字典。

在更新子彈位置的函數中,我們先調用bullets.update()來更新每顆子彈的位置,然后檢查是否有超出邊界的,如果有則從編組中刪除。接著我們調用pygame.sprite.groupcollide(...)來檢查子彈和外星人兩個編組間是否有碰撞,如果有碰撞刪除對應的子彈和外星人,并且實現加分,判斷是否超過歷史高分,更新需要分數顯示等等的功能。最后用len(aliens)判斷是否擊殺全部外星人,沒有了則調用創建外星人群函數,并且調用ai_settings.speed_up()來提升難度并修改stats.level,最后更新游戲等級顯示。

3.5 改變外星人群運動狀態函數

def change_aliens_move(ai_settings,aliens):'''改變外星人群x軸移動方向,并讓其在y軸移動一段距離'''for alien in aliens.sprites():alien.rect.y += ai_settings.alien_yspeedai_settings.alien_xdirection *= -1

在這個函數中我們改變alien.rect.y并且改變外星人的x軸移動方向,在下一個檢測左右邊緣函數中,如果碰到左右邊緣我們調用這個上面的函數。

3.6 檢測外星人碰到左右邊緣函數

def check_aliens_edge(ai_settings,aliens):'''檢查外星人群是否有接觸邊緣的現象并改變運動方向'''for alien in aliens.sprites():if alien.check_edge():change_aliens_move(ai_settings,aliens) #確一改變一群break

在這里我們遍歷編組的sprite,并且調用alien.check_edge()來檢測是否到達邊緣,如果有一個到達則改變一整群的運動狀態。

3.7 飛船被擊中后的函數

def after_ship_hit(ai_settings,screen,bullets,aliens,ship,stats,show_board):'''飛船被擊中后的函數'''stats.ship_hp -= 1 #減少生命值ship.reset_ship() #重新放置飛船位置bullets.empty() aliens.empty() #清空外星人和子彈create_aliens(ai_settings,screen,ship,aliens)#重新放置子彈show_board.prep_hp(stats) #更新生命值顯示sleep(0.5)

在這里我們定義了外星人碰到飛船或到達屏幕底部后的行為,扣除生命值,重置飛船位置,清空當前外星人和子彈,再新建一群外星人,然后調用show_board.prep_hp(stats)來更新生命值面板,前面已有from time import sleep,最后我們調用sleep(0.5)來使其停頓一會。

3.8 檢查外星人是否到達底部的函數

def check_aliens_bottom(ai_settings,screen,bullets,aliens,ship,stats):'''檢查外星人是否到達底部'''for alien in aliens.sprites():screen_rect = screen.get_rect()if alien.rect.bottom >= screen_rect.bottom:after_ship_hit(ai_settings,screen,bullets,aliens,ship,stats)break

3.9 更新外星人位置的函數

def update_aliens(ai_settings,screen,bullets,aliens,ship,stats,show_board):'''檢查是否有外星人處于屏幕邊緣并更新位置的函數'''check_aliens_edge(ai_settings,aliens)aliens.update()if pygame.sprite.spritecollideany(ship,aliens):after_ship_hit(ai_settings,screen,bullets,aliens,ship,stats,show_board)check_aliens_bottom(ai_settings,screen,bullets,aliens,ship,stats)if stats.ship_hp < 1 :stats.game_active = Falseai_settings.initial_speed() #重置速度ai_settings.initial_ship_life() #重置飛船生命stats.level = 1 #重置等級 函數功能
pygame.sprite.spritecollideany(sprite,group)檢測sprite和group之間的碰撞,返回布爾值

pygame中的碰撞檢測:https://www.cnblogs.com/msxh/p/5027688.html
在這個函數中,我們先調用檢查外星人碰到左右邊緣的函數,然后調用aliens.update()來更新外星人的水平位置,接著通過pygame.sprite.spritecollideany(...)來檢測飛船和外星人是否有碰撞(這里飛船類中如果沒有繼承Sprite也是可以的。可能在類屬性定義中包含需要的標識符)如果有碰撞調用飛船被擊中的函數,然后再檢測外星人是否到達底部,如果這里有到達,在函數中也會調用飛船被擊中的函數。最后則是判斷生命值是否小于1,小于則重置游戲。

總結

以上是生活随笔為你收集整理的用pygame写一款飞船游戏(笔记)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

久久理论视频 | 久久久精品网 | 国产精品久久久 | 日韩在线播放欧美字幕 | 青青草国产精品 | 中文字幕高清在线播放 | 婷婷久月 | 日本视频久久久 | 激情网五月婷婷 | 不卡的av在线 | 米奇狠狠狠888 | 国产黄色一级大片 | 国产69精品久久久久9999apgf | 亚洲区二区 | 中文字幕在 | 亚洲精品乱码久久久久久 | 97自拍超碰 | 日韩在线高清 | 久久免费播放 | 亚洲丁香久久久 | 综合激情 | 最近最新最好看中文视频 | 亚洲成人资源在线 | www黄色 | 91麻豆精品国产91久久久无需广告 | 色91在线视频 | 天天伊人网| 在线视频成人 | 亚洲一区 av| 国产中文字幕在线免费观看 | 亚洲欧美成人综合 | 97精品欧美91久久久久久 | 国产精品美女久久久久久久久 | 精品国产一区二区三区四区vr | 亚洲日本在线视频观看 | 麻豆视传媒官网免费观看 | 亚洲成人xxx | av在线播放国产 | 中文字幕一区二区三区四区在线视频 | 99免费观看视频 | av免费看av| 97理论电影| 麻豆94tv免费版 | 精品美女在线观看 | 久久超碰97| 在线 高清 中文字幕 | 国产色网站 | 99精品网站| 久久久久久久免费观看 | 日韩高清成人 | 豆豆色资源网xfplay | 欧美日韩国产精品一区二区 | 日韩精品五月天 | 美女av在线免费 | 中文字幕在线观看网址 | 亚洲国产黄色 | 福利视频区 | 中文字幕黄色网址 | 美女国产网站 | 中文字幕免费高清在线观看 | 亚洲理论在线观看电影 | 日韩av不卡在线播放 | 玖草影院 | 在线观看免费视频 | 成人在线观看资源 | 免费观看完整版无人区 | 久久视频一区 | 丁香花中文在线免费观看 | 国产精品黄色影片导航在线观看 | 国产精品久久久久一区二区三区共 | 在线a视频 | 九九九九九九精品任你躁 | 激情综合一区 | 国产1区2区3区在线 亚洲自拍偷拍色图 | 一区二区三区精品久久久 | 国产精成人品免费观看 | 狠狠躁日日躁狂躁夜夜躁 | a色视频 | 精品亚洲欧美无人区乱码 | 免费在线观看国产精品 | 伊人丁香 | 久久99网站 | 欧洲亚洲国产视频 | 亚洲毛片在线观看. | 久草视频资源 | 国产乱对白刺激视频不卡 | 亚洲精品福利视频 | 综合天堂av久久久久久久 | 国产精品手机在线 | 国产精品视频全国免费观看 | 精品一区二区三区在线播放 | 人人爽人人爽人人片 | 久久在线免费观看 | 午夜.dj高清免费观看视频 | 免费在线观看av | 免费观看www视频 | 日av免费 | 欧美精品国产综合久久 | 亚洲成人黄色 | 日韩高清毛片 | 91精品国产乱码久久桃 | 在线观看v片 | 婷婷色网站 | 国产一区久久久 | 欧美三级高清 | 精品国产伦一区二区三区免费 | 麻豆91精品91久久久 | 国产成人久久av | 国产 字幕 制服 中文 在线 | 欧美日韩综合在线 | 天天操天天摸天天射 | 国产精品第一页在线观看 | 精品一区二区6 | 国产精品免费一区二区三区在线观看 | 日韩欧美在线综合网 | 欧美激情综合五月色丁香小说 | 国产成人一区二区啪在线观看 | 国产精品私人影院 | 国产午夜精品一区二区三区 | 国产一区在线不卡 | 国产精品电影一区 | 久久激情小视频 | 亚洲区另类春色综合小说 | 欧美激情一区不卡 | av千婊在线免费观看 | 日韩免费视频观看 | 狠狠色香婷婷久久亚洲精品 | 超碰com| 欧美日韩国产网站 | 久久久国产一区二区 | 中文字幕在线专区 | 欧美日韩大片在线观看 | 精品久久1| 久久婷综合 | 亚洲闷骚少妇在线观看网站 | 超碰在线人 | 国产精品视频 | 国产专区在线看 | sm免费xx网站| 国色天香永久免费 | 欧美专区国产专区 | 天天操天 | 黄色成人影院 | 亚洲伦理电影在线 | 99国产精品久久久久久久久久 | 天天干天天天 | 7777精品伊人久久久大香线蕉 | 青青草国产成人99久久 | 精品国产乱码久久久久久浪潮 | 亚洲专区欧美 | 毛片网站免费 | 精品国产99国产精品 | 日女人免费视频 | 91精品少妇偷拍99 | 成人影片免费 | 欧美日韩3p | 97碰视频| 欧美日韩国产一二三区 | 99精品在线观看视频 | 成人免费视频视频在线观看 免费 | 亚洲国产成人久久 | 国产成人99久久亚洲综合精品 | 国产精品成人在线观看 | 国产精品久久久精品 | 久久99热国产 | 久草免费福利在线观看 | 五月综合| 亚洲综合色播 | 9i看片成人免费看片 | 91天天视频 | 国产一区国产二区在线观看 | 综合精品久久 | 96视频免费在线观看 | 国产在线视频一区二区 | 视频在线观看99 | 99视频网址| 亚洲成av人片 | av大片免费 | 欧美片一区二区三区 | www.五月天婷婷.com | 91久久在线观看 | 草久久影院 | 色婷婷激婷婷情综天天 | 色婷婷狠狠18 | www.天天成人国产电影 | 国产日韩精品一区二区三区 | 一级成人网 | 狠狠色丁香婷综合久久 | av网站在线观看免费 | 曰韩精品 | 奇米影视四色8888 | 免费视频网 | 狠狠狠狠狠狠操 | 天天色天天操天天爽 | 一区二区中文字幕在线观看 | 久久免费视频在线观看6 | 丁香5月婷婷 | 最近日本字幕mv免费观看在线 | 免费视频你懂得 | 精品在线二区 | 日韩欧美一区二区在线播放 | 亚洲黄色三级 | 国产精品大片在线观看 | 国产蜜臀av| 中文字幕xxxx | 免费观看国产精品视频 | 日批在线看 | 日韩高清一区在线 | 91超级碰碰 | 成年人黄色大片在线 | 欧美做受xxx | 国产v视频 | 欧美日本不卡高清 | 日本护士三级少妇三级999 | 在线观看免费91 | 6080yy午夜一二三区久久 | 国产美女视频免费观看的网站 | 欧美日韩伦理在线 | 国产精品电影在线 | 免费在线观看午夜视频 | 在线亚洲欧美日韩 | 成人毛片网 | 91网页版免费观看 | 国产裸体无遮挡 | 亚洲日韩精品欧美一区二区 | 亚洲h色精品 | 91在线www | 成人久久18免费网站图片 | 日韩动态视频 | 国产高清av免费在线观看 | 又黄又爽又刺激视频 | 亚洲亚洲精品在线观看 | 在线天堂中文www视软件 | 国产午夜不卡 | 丁香花中文字幕 | 欧美小视频在线观看 | 成人在线视频免费观看 | 色偷偷av男人天堂 | 欧美综合干 | 日韩电影一区二区三区在线观看 | 亚洲区色 | 国产色a在线观看 | 亚洲国产中文字幕在线观看 | 亚洲最新在线视频 | 免费高清av在线看 | 日躁夜躁狠狠躁2001 | 亚洲精品高清一区二区三区四区 | 91中文视频| 97在线播放视频 | 国产99久久久精品 | 2000xxx影视| 黄色一级免费 | 国产一区免费视频 | 国语精品免费视频 | www.狠狠插.com | 亚洲精品在线观看av | 久久久久精| 九色最新网址 | 欧美日韩3p| 亚洲九九影院 | 国产精品久久一卡二卡 | 国产免费大片 | 国产又粗又猛又黄 | 欧美最新大片在线看 | 日韩在线观看影院 | 天天操狠狠操夜夜操 | 精品国产黄色片 | 狠狠色丁香婷婷综合最新地址 | 亚洲精品国产自产拍在线观看 | av电影免费在线播放 | 天天干天天射天天爽 | 日本成人中文字幕在线观看 | 精品久久免费看 | 国产精品久久久区三区天天噜 | 99视频国产精品免费观看 | 亚洲五月激情 | 亚洲日本va在线观看 | 久久黄色免费视频 | 免费视频在线观看网站 | 精品久久网| a级免费观看 | 黄网av在线 | 99精品视频免费观看 | 色资源在线 | 久久久久久久久艹 | 亚洲精品资源 | 中文在线8新资源库 | 激情九九 | 国产女教师精品久久av | 成人免费网站在线观看 | 黄a网| 在线亚洲高清视频 | 97视频在线观看成人 | 日日夜夜天天干 | 国产日韩欧美在线观看 | 国产精品系列在线 | 999久久国产精品免费观看网站 | 91亚洲成人 | 久久电影色 | 久久久久久国产精品999 | 日韩极品在线 | 激情五月婷婷丁香 | 在线观看免费观看在线91 | 欧美乱淫视频 | av片中文 | 开心激情网五月天 | 色噜噜日韩精品一区二区三区视频 | 国产呻吟在线 | 麻豆精品视频在线 | 精品视频中文字幕 | 婷婷色资源 | 免费看片黄色 | 激情五月婷婷网 | 99精品国产免费久久久久久下载 | 天天天操操操 | 久久99久久99精品中文字幕 | 最近在线中文字幕 | 欧美一区二区三区特黄 | 欧美精品一区二区三区四区在线 | 色综合咪咪久久网 | 天天爽天天做 | 欧美亚洲国产精品久久高清浪潮 | 亚洲精品五月 | 欧美性粗大hdvideo | 国产系列在线观看 | 欧美永久视频 | 亚洲综合精品视频 | 99re在线视频观看 | 九九九九九九精品 | 国产亚洲视频在线观看 | av高清一区二区三区 | 国产视频亚洲 | 91视频 - v11av | 久久久国产精品成人免费 | 激情综合五月天 | 亚洲视频免费在线看 | 色综合久久综合中文综合网 | 日本精品中文字幕在线观看 | 在线精品观看 | 欧美精品亚洲二区 | 亚洲一级在线观看 | 99久久综合国产精品二区 | 日日草天天草 | 51精品国自产在线 | 国产精品久久久久婷婷二区次 | 国产成人一级电影 | 亚洲国产精品99久久久久久久久 | 欧美一级片免费观看 | 免费在线91| 国产1区在线 | www.狠狠插.com | 97超碰精品| 99视频在线精品 | www.天天色| 97视频在线观看成人 | 午夜在线日韩 | 在线91色| 日韩美在线 | 干干干操操操 | 欧美一级片免费在线观看 | 91在线视频免费 | 成人av影视| 激情av网 | 日本中文字幕久久 | 九九九九九九精品任你躁 | a级国产乱理伦片在线播放 久久久久国产精品一区 | 国产精品观看在线亚洲人成网 | 免费av在线网站 | 中文字幕第一页在线 | 日日夜夜亚洲 | 国产精品一区二区你懂的 | 久久久久久高潮国产精品视 | 天天射夜夜爽 | 中文超碰字幕 | 久久精品国产亚洲精品 | 三上悠亚一区二区在线观看 | 色91av| 麻豆国产在线视频 | 国产高清av免费在线观看 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 超碰在线最新网址 | 成人激情开心网 | 国产尤物视频在线 | 日韩免费观看视频 | 九九热久久免费视频 | 成年人国产在线观看 | 热久久99这里有精品 | 欧美一区二区三区免费观看 | av超碰在线 | 国产不卡高清 | 成人av资源网站 | 91视频在线观看大全 | 777视频在线观看 | 日狠狠 | 日批视频在线播放 | 99视频在线免费看 | 久久久久久久久免费 | 久久人人艹 | 在线观看国产高清视频 | 欧美色图亚洲图片 | 日韩精品视频第一页 | 亚洲天堂网在线视频观看 | 精品国产美女 | 色视频国产直接看 | 亚洲更新最快 | 久久久亚洲影院 | 99久久久成人国产精品 | 69视频网站 | 午夜精品av| 蜜臀av性久久久久蜜臀aⅴ四虎 | 国产最新在线 | 天天操天天操天天 | 草久中文字幕 | 一区二区丝袜 | 国产亚洲精品女人久久久久久 | 青青草在久久免费久久免费 | 国产 日韩 欧美 自拍 | 国产色视频 | 精品国产一区二区三区久久久蜜臀 | 91你懂的| 成人在线你懂得 | 国产精品久久久久9999 | 中文字幕第一 | 国产打女人屁股调教97 | 精品视频国产一区 | 91精品啪| 黄色成人在线网站 | 国产精品毛片一区二区在线 | 精品国产乱码久久久久久三级人 | 中文字幕一区二区三区乱码在线 | 国产高清专区 | 国产剧情在线一区 | 福利视频入口 | 国产精品igao视频网入口 | 91精品中文字幕 | 色视频在线免费 | 伊人丁香 | 国产老熟| 夜夜摸夜夜爽 | 色视频网站在线 | 激情综合网在线观看 | 日韩免| 亚洲美女免费精品视频在线观看 | 超碰在线人人 | 国产一级特黄毛片在线毛片 | 亚洲婷婷综合色高清在线 | 午夜精品久久久久 | 欧美伦理电影一区二区 | 99精品免费久久久久久日本 | 精品欧美一区二区精品久久 | 在线免费91 | 亚洲撸撸| 亚洲 中文 欧美 日韩vr 在线 | 亚洲美女免费视频 | 97色婷婷人人爽人人 | 欧美成人精品三级在线观看播放 | 日韩欧美国产激情在线播放 | 国产精选视频 | 亚洲播播 | 日本久久中文字幕 | 人人要人人澡人人爽人人dvd | 四季av综合网站 | 婷婷网站天天婷婷网站 | 国产一区二区在线播放 | 99re视频在线观看 | 大荫蒂欧美视频另类xxxx | 日韩欧美精品在线观看视频 | 久久与婷婷 | 国产视频黄 | 波多野结衣在线观看一区二区三区 | 欧美午夜性生活 | 精品久久久久久久久久岛国gif | 超碰人人在线观看 | 人人超碰在线 | avsex| 99电影| 国产1级视频 | 中文字幕在线网 | 色婷婷骚婷婷 | 久草精品资源 | 久久se视频 | 国产黄a三级 | 国产999精品视频 | 狠狠躁夜夜躁人人爽超碰91 | 男女拍拍免费视频 | 亚洲精品视频在线播放 | 国产成人精品一区二区三区免费 | 成人av高清| 99精品在线免费在线观看 | 人人玩人人爽 | 免费在线观看黄色网 | 超碰在线9 | 91丨porny丨九色 | 91福利社区在线观看 | www.91成人| 久久久久久久久久久久亚洲 | 亚洲国产中文字幕在线 | 国产精品成 | 婷婷色狠狠 | 午夜91视频 | 色多视频在线观看 | 精品夜夜嗨av一区二区三区 | 91在线视频观看 | 久久专区| 日本黄色免费播放 | 亚洲日日夜夜 | 久草在线在线视频 | 日日夜日日干 | 国产韩国日本高清视频 | 在线免费观看视频一区二区三区 | 国产精品va最新国产精品视频 | 国产成人一区二 | 在线观看成人 | 久久综合色播五月 | 狠狠干五月天 | 午夜av剧场 | 五月婷婷六月丁香 | 国产字幕在线看 | 亚洲自拍偷拍色图 | 狠狠操91| www色com | 人人爽人人爽av | 丁香五月亚洲综合在线 | 色欲综合视频天天天 | 国产一区免费观看 | 国产美女在线观看 | 久久人人97超碰com | 日韩影视精品 | 2023亚洲精品国偷拍自产在线 | 韩国三级在线一区 | 狠狠狠色丁香婷婷综合久久五月 | 日韩精品免费在线观看视频 | 国产日韩精品一区二区三区在线 | 欧美亚洲三级 | 激情影音先锋 | 成人免费视频网址 | 日韩在线免费电影 | 久久久www成人免费毛片 | 黄色视屏在线免费观看 | 99热这里只有精品国产首页 | 精精国产xxxx视频在线播放 | 亚洲精品乱码久久久久久蜜桃动漫 | 国产专区精品视频 | 97av在线 | 玖玖综合网 | 五月婷婷操 | 天天激情天天干 | 日本久久99| 69国产精品视频免费观看 | 久久艹免费 | 人人爽爽人人 | 福利网址在线观看 | 99精品一区 | 成人av免费在线 | 久久99视频免费观看 | 日本韩国在线不卡 | 免费一级片视频 | 六月激情久久 | 亚洲麻豆精品 | 最新av免费在线观看 | av在线不卡观看 | 亚洲精品在线观看网站 | 日韩免费电影网站 | 亚洲日本精品 | 国产精品国产毛片 | 曰韩在线 | 色橹橹欧美在线观看视频高清 | 免费av在线网站 | 久久精品中文视频 | 日韩高清成人在线 | 欧美日韩一区二区在线观看 | 日韩网站一区二区 | 免费高清av在线看 | 在线观看黄色国产 | 国产二区免费视频 | 91久久偷偷做嫩草影院 | 日韩电影在线观看中文字幕 | 色视频网站在线 | 欧亚日韩精品一区二区在线 | 五月婷婷在线播放 | 亚洲欧美日韩国产一区二区三区 | 国产精品久久久久久久久久不蜜月 | 国产精品区一区 | 一区二区精品在线观看 | 波多野结衣精品 | 黄色片网站av | 成年人国产精品 | 不卡av电影在线观看 | 在线观看视频免费播放 | 91在线观看高清 | 午夜丁香视频在线观看 | 欧美另类色图 | 亚洲综合色站 | 黄色在线免费观看网站 | 亚洲精品乱码久久久久久久久久 | 久久91网 | 在线观看免费视频 | 久久伊人国产精品 | 亚洲免费av电影 | 久久99在线 | 免费av在线播放 | 在线播放你懂 | 久久精品亚洲精品国产欧美 | 一级久久精品 | 啪一啪在线 | 国产高清一级 | 中文字幕在线成人 | 日日操天天射 | 国产精品美女视频网站 | 久久视频国产精品免费视频在线 | 成人黄色小说网 | 色综合久久久久网 | 天天色天天干天天色 | 天堂va在线高清一区 | 99av在线视频 | 欧美a级在线免费观看 | 日本久久精品视频 | 麻豆系列在线观看 | 青青河边草观看完整版高清 | 丁香花在线观看免费完整版视频 | 久久精品这里都是精品 | 九九日韩 | 久操操| 天天骚夜夜操 | 黄网站app在线观看免费视频 | 亚洲高清视频在线观看 | 日韩网站视频 | 久久久私人影院 | av观看在线观看 | 手机在线看片日韩 | 亚洲视频观看 | 久草在线免费色站 | 美女黄频在线观看 | 国产中文在线字幕 | 最近中文字幕mv免费高清在线 | 九九热免费精品视频 | 成人三级av| 在线免费高清一区二区三区 | 国产免费又爽又刺激在线观看 | 国产午夜三级一二三区 | 91黄站| 中文字幕 国产专区 | 日韩中文字幕免费视频 | 日韩特黄一级欧美毛片特黄 | 激情影院在线 | 久久96| 欧美激情第28页 | 久久精品美女视频网站 | 久久久亚洲国产精品麻豆综合天堂 | 欧美a视频在线观看 | 亚洲精品久久久久999中文字幕 | 免费福利视频网站 | av免费线看 | 日韩在线免费视频观看 | 日本成人黄色片 | 国产va在线 | 色婷婷国产精品一区在线观看 | 国产自偷自拍 | 久久66热这里只有精品 | 国产一区二区精品 | av中文字幕在线观看网站 | 91色九色| www.黄色片网站 | 亚洲在线成人精品 | 在线免费观看视频一区二区三区 | 成人a在线观看高清电影 | 精品视频 | 日韩区在线观看 | 亚洲久草网 | 亚洲首页 | 成人免费视频网站 | 天天干 天天摸 天天操 | 中文字幕日本特黄aa毛片 | 国产日韩精品在线 | 国内精品视频在线 | 97av.com| 999超碰| 色停停五月天 | 久草在线综合网 | 日韩精品久久中文字幕 | 天天色天天爱天天射综合 | 久久理论视频 | 国产成人三级在线观看 | 热久久国产| 亚洲日本激情 | 6080yy午夜一二三区久久 | 91在线免费视频观看 | 97精品国自产拍在线观看 | 草樱av | 五月色丁香 | www国产在线 | 久久免费视频这里只有精品 | 99久久精品国产一区二区三区 | 久久久精品亚洲 | 国产福利91精品张津瑜 | 久久中文视频 | 国产一区在线看 | 久久久精品国产一区二区电影四季 | av在线电影播放 | 国产福利精品一区二区 | 激情丁香在线 | www免费| 国产精品免费久久久久 | 99久久久国产精品免费99 | 亚洲激情综合网 | 久久久综合色 | 丝袜网站在线观看 | 国产免费专区 | 九色视频网站 | 欧美色操| 免费日韩 精品中文字幕视频在线 | 成年人app网址 | 特黄特黄的视频 | 国产成人性色生活片 | 欧美日韩性视频 | 久久精品伊人 | 亚洲精品国内 | 激情av五月婷婷 | 三级黄色免费 | 欧美精品在线观看免费 | 久久av免费 | 麻豆视频在线 | 国产三级国产精品国产专区50 | 欧美性生爱 | 成人在线播放免费观看 | 69av久久| 国产精品视频区 | 国产一级免费观看视频 | 最新国产一区二区三区 | 黄色片毛片 | 91丨九色丨国产女 | 色综合久久五月 | 久草在线最新 | 国产亚洲精品久久久久动 | 伊人夜夜| 五月激情久久久 | 色99之美女主播在线视频 | 欧美日韩在线精品一区二区 | 日韩av影片在线观看 | 91丨精品丨蝌蚪丨白丝jk | 国产亚洲精品女人久久久久久 | 国产91影院 | 国内免费的中文字幕 | 美女国内精品自产拍在线播放 | 日韩av片无码一区二区不卡电影 | 992tv在线观看网站 | 国产麻豆电影 | 免费观看的av网站 | 美女久久久久 | 欧美一级视频在线观看 | 精品国产亚洲一区二区麻豆 | 国产91在| 国产18精品乱码免费看 | 久久伊人国产精品 | 在线观看中文字幕视频 | 97视频在线免费 | 亚洲毛片在线观看. | 欧美日韩啪啪 | 夜夜躁日日躁狠狠久久av | 国产美女主播精品一区二区三区 | 超碰人在线 | 国产精品久久电影网 | 欧美 日韩 性 | 亚洲干 | 亚洲综合成人av | 玖玖精品视频 | 亚洲在线网址 | 97视频在线观看播放 | 日韩精品免费在线观看 | 免费中文字幕视频 | 欧美a级片网站 | 天天干视频在线 | 中文字幕第 | 国产麻豆电影在线观看 | 日韩福利在线观看 | 色五月激情五月 | 69av免费视频 | 最新av在线网站 | japanese黑人亚洲人4k | 午夜骚影 | 欧美一级艳片视频免费观看 | av在线网站免费观看 | 天天干天天玩天天操 | 日韩av午夜在线观看 | 亚洲精品91天天久久人人 | av在线免费观看不卡 | 成人影视免费看 | 日日爽天天| 国产女人免费看a级丨片 | 中国美女一级看片 | 91麻豆精品国产午夜天堂 | 国产精品乱码久久久久 | 精品视频区 | 国产成人精品亚洲精品 | 在线免费黄色片 | 九九热免费在线视频 | 精品一区二区影视 | 成人黄色影片在线 | 热re99久久精品国产66热 | 色人久久 | 又黄又爽又刺激 | 国产亚洲精品电影 | 久久久这里有精品 | 日韩一区二区三区免费电影 | 午夜精品久久久久久久久久久久 | 久久精品8 | 国产高清第一页 | 激情综合一区 | 国产精品久久久网站 | 日韩精品在线看 | 日韩欧美综合视频 | 国产在线观看你懂得 | 久久精品国产亚洲a | 亚洲精品视频免费在线 | 日韩电影一区二区在线观看 | 欧美午夜久久 | 精品国产免费人成在线观看 | 中文字幕在线观看不卡 | 久热久草 | 久久久久久看片 | 人人澡人人爽欧一区 | 国产精品久久久久久久久久久免费看 | 国产亚洲亚洲 | 亚洲综合视频在线观看 | 国产三级精品三级在线观看 | 欧美成人影音 | 国产夫妻性生活自拍 | 天天干,天天干 | 在线播放一区 | 色综合色综合久久综合频道88 | 中文av字幕在线观看 | 美女视频久久黄 | 国产自在线观看 | 四虎影视国产精品免费久久 | 欧美在线观看视频一区二区 | 三级视频日韩 | 麻豆一二三精选视频 | 欧美专区日韩专区 | 最新av网址在线 | 亚洲国产中文在线观看 | 日韩免费一区二区在线观看 | 国产小视频国产精品 | 成人午夜黄色影院 | 91看片淫黄大片在线播放 | 91亚洲网| 日韩美在线观看 | www.97色.com| 免费视频在线观看网站 | 五月婷网 | 中文字幕精品www乱入免费视频 | 国产黄在线播放 | 美女视频黄免费的 | 成人a毛片 | 午夜国产一区 | 99精品在线视频播放 | 日韩视频免费在线观看 | 日本中文字幕在线免费观看 | 亚洲精品在线观看的 | 国产一区二区视频在线播放 | 大胆欧美gogo免费视频一二区 | 欧美久久久久久久久久久 | 九九热精品视频在线观看 | 能在线观看的日韩av | 69国产盗摄一区二区三区五区 | 97超碰在线资源 | 精品视频一区在线观看 | 91av资源在线 | 国产高清在线精品 | 欧美成人h版 | 久久99婷婷 | 天天天操天天天干 | 天天天天色射综合 | 日韩一区二区三区在线观看 | 中文字幕乱码视频 | 久久tv | 99久久国产免费,99久久国产免费大片 | 国产精品久久久久av免费 | 日韩午夜大片 | 午夜色影院 | 婷婷综合亚洲 | 丁香综合激情 | 天堂在线视频中文网 | 欧美一级久久久久 | 91在线视频观看 | 国产精品99久久久久久有的能看 | 国产精品剧情在线亚洲 | 国产精品一区二区在线免费观看 | 亚洲成av | 97在线资源| 久久九九久久精品 | 亚洲电影成人 | 国产专区视频在线观看 | 久草久草在线 | 五月婷婷丁香在线观看 | 国产黄色特级片 | 国产精品21区 | 欧美日韩国产精品一区二区 | 久久九九影院 | 久久九九视频 | 欧美日韩一区二区三区在线观看视频 | 精品久久一区 | 摸阴视频 | 国产亚洲在线观看 | 国产福利资源 | 天天操天天操天天 | 日韩免费看视频 | 69久久99精品久久久久婷婷 | 久久综合99 | 天天搞夜夜骑 | 精品特级毛片 | 中文字幕在线成人 | 日韩一区二区三区免费视频 | 五月开心婷婷网 | 日韩中文字幕在线 | 亚洲视频高清 | 国产精品自在欧美一区 | 美女久久一区 | 在线精品视频在线观看高清 | 日韩xxx视频| 精品亚洲视频在线 | 91久色蝌蚪 | 日韩在线不卡 | 性色va| 97人人超| 欧美在线视频日韩 | 久久久久久久久亚洲精品 | 国产成人精品一区二区在线观看 | 久久久久久久久久久久久久av | 久久不射网站 | 91av视频免费观看 | 欧美乱淫视频 | 久久视频网 | 黄色一级大片免费看 | 免费观看性生活大片 | 国产黄色av影视 | 97电影院在线观看 | 久久99精品久久久久久久久久久久 | 一级黄色免费 | 91av视频免费在线观看 | 久久久久免费精品国产 | 免费毛片aaaaaa | 91亚洲免费 | 精品国产日本 | 国产欧美精品在线观看 | 日韩在线色视频 | 国内99视频| 久久毛片高清国产 | 911精品视频| 在线视频你懂得 | 久久久久久久久久久福利 | 日韩久久精品一区二区三区下载 | 久久国产精品第一页 | 国产免费不卡av | 色综合久久久久综合体桃花网 | 欧美精品一级视频 | 91精品国产乱码在线观看 | av东方在线| 中文字幕日韩精品有码视频 | 成人av一级片| 91免费网址| 国产精品剧情在线亚洲 | 狠狠激情中文字幕 | 久久国产精品99精国产 | 99精品欧美一区二区三区 | 欧美另类69| 久久不射电影院 | 99久久www免费| 国产午夜精品一区二区三区四区 | 国产一区二区影院 | 热re99久久精品国产66热 | 久久在线观看视频 | 久草国产视频 | 九九在线国产视频 | 狠狠五月天| 亚州人成在线播放 | 国产永久网站 | 亚洲乱码中文字幕综合 | 久久午夜电影院 | 久草免费看 | 免费黄色在线播放 | 久久精品99国产国产 | 免费日韩三级 | 黄网在线免费观看 | 亚洲国产一二三 | 亚洲激情视频 | av官网在线 | 日批网站在线观看 | 日日夜夜精品 | 久久久久黄色 | 黄a在线看 | 色婷婷午夜 | 五月天婷亚洲天综合网精品偷 | 免费福利影院 | 成年人在线观看网站 | 日韩一区二区三区高清在线观看 | 人人搞人人爽 | 激情婷婷综合网 | 麻豆va一区二区三区久久浪 |