日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满av-国产精品中文字幕免费观看-亚洲成人久久一区二区三区-国内少妇偷人精品视频无缓冲-一区二区国产精品日本一区二区三区在线网

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

Pygame小游戲開發(fā)全指南:從核心循環(huán)到避坑實(shí)戰(zhàn)

Pygame小游戲開發(fā)全指南:從核心循環(huán)到避坑實(shí)戰(zhàn) 運(yùn)一次上下左右控制一個(gè)方塊躲避障礙這樣的小游戲從新手到能跑通的完整過程你會踩哪些坑、需要懂哪些原理我今天一次性講清楚。1. Pygame到底是什么它不是引擎而是一套媒體工具箱1.1 Pygame的來歷與定位Pygame 是一個(gè)基于 SDL 庫的 Python 第三方庫專門用來處理游戲開發(fā)里最常見的那些事窗口創(chuàng)建、圖像繪制、鍵盤鼠標(biāo)輸入、聲音播放、碰撞檢測基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)。它最早由 Pete Shinners 在 2000 年左右發(fā)起目的很樸素——讓 Python 程序員不用去折騰底層窗口 API 和圖形接口就能直接做 2D 游戲。這里有一個(gè)很多新手一開始搞不清的點(diǎn)Pygame 不是一個(gè)游戲引擎。你打開 Unity 或者 Godot里面自帶場景、節(jié)點(diǎn)、物理引擎、動(dòng)畫狀態(tài)機(jī)Pygame 不提供這些東西它只給你一堆零件——一個(gè)可以畫圖的窗口、一堆處理輸入的 API、一組幾何結(jié)構(gòu)體。你要做的引擎就是一個(gè) Python 腳本里的循環(huán)。恰恰因?yàn)檫@樣Pygame 特別適合用來理解游戲的核心運(yùn)行機(jī)制游戲 循環(huán) 狀態(tài) 輸入 渲染。1.2 為什么說Pygame是第一款游戲的最佳選擇市面上能用來寫 2D 游戲的 Python 庫不少Arcade、Pyglet、Tkinter 的 Canvas 也能畫圖甚至有人用 Kivy 做小游戲。但我給純新手的建議永遠(yuǎn)是先學(xué) Pygame。原因很簡單資料多。搜Python 游戲開發(fā)十篇文章里有八篇是 Pygame 的遇到問題更容易找到解決方案。門檻低。核心 API 就幾十個(gè)安裝完你就能上手畫第一個(gè)矩形不用理解復(fù)雜的場景樹和組件系統(tǒng)。結(jié)構(gòu)自由度大。正因?yàn)闆]有引擎約束你必須自己設(shè)計(jì)游戲狀態(tài)、自己決定如何組織代碼這反而逼你把基礎(chǔ)打好。1.3 Pygame 2.x相比1.x的最大變化很多人現(xiàn)在搜到老教程還會遇到pygame.sprite模塊里那些老寫法但要注意 Pygame 2.x 在主循環(huán)、圖像轉(zhuǎn)換、文本渲染上都有明顯改進(jìn)。最大的體感差異有三個(gè)pygame.display.set_mode()不再強(qiáng)制要求立即傳入分辨率可以后續(xù)再動(dòng)態(tài)調(diào)整窗口大小。內(nèi)置了對高清屏 DPI 縮放的基礎(chǔ)支持雖然仍不完美后面我會專門說。性能上比 1.x 好了不少Surface.convert()和convert_alpha()的建議依舊有效但普通小游戲里不優(yōu)化也不會卡。另外要提一嘴pygame-ce社區(qū)版它是原 Pygame 停更維護(hù)后由社區(qū)分叉出來的活躍版本。如果你在 2025 年才開始學(xué)我其實(shí)更推薦直接用pygame-ceAPI 基本兼容修復(fù)了大量老問題安裝名是pygame-ce導(dǎo)入仍然是import pygame。2. 安裝與環(huán)境準(zhǔn)備多花五分鐘就少崩潰一整晚2.1 各平臺安裝方式與Python版本坑安裝本身不難但很多人的第一個(gè)坑恰恰出在這里。我用的是 Windows直接pip install pygame pygame-ce如果你在 macOS 或 Linux 上流程也差不多。但有幾個(gè)細(xì)節(jié)值得注意盡量不用系統(tǒng)自帶的 Python。macOS 自帶的 Python 是 2.x 時(shí)代遺留的裝了也沒意義Windows 商店版的 Python 有時(shí)路徑有問題pip 裝包倒是可以但后面 PyInstaller 打包時(shí)容易出幺蛾子。建議直接去 python.org 下載官方版本選 3.10 到 3.12 之間的版本都行。檢查 pip 是不是對應(yīng)版本。同一個(gè)命令行里敲python --version和pip --version確認(rèn)兩者來自同一個(gè)環(huán)境。經(jīng)常有人開了虛擬環(huán)境然后在全局 pip 安裝裝完發(fā)現(xiàn) import 不到。Linux 下可能出現(xiàn)音頻設(shè)備找不到、窗口打不開的問題常規(guī)解決辦法是安裝 SDL 依賴Ubuntu 系一般執(zhí)行sudo apt install libsdl2-2.0-0 libsdl2-mixer-2.0-0 libsdl2-image-2.0-0。裝完驗(yàn)證方式很簡單在終端里跑python -c import pygame; print(pygame.version.ver)如果打印出類似2.6.1的版本號就說明環(huán)境沒問題。2.2 那個(gè)著名的窗口一閃而過事故這是 Pygame 新手區(qū)提問率最高的問題腳本運(yùn)行了一個(gè)黑色窗口閃了一下馬上消失沒有報(bào)錯(cuò)跑完就退出。本質(zhì)原因特別簡單——你沒有讓程序進(jìn)入持續(xù)循環(huán)。窗口默認(rèn)是畫出后立刻執(zhí)行完腳本就銷毀的想讓窗口停留你必須寫一個(gè)while循環(huán)阻塞住主線程。很多人會在這里直接抄網(wǎng)上的模板然后疑惑為什么別人代碼能停留。我建議你親手理解一下這個(gè)問題的原理set_mode 創(chuàng)建的窗口生命周期與 Python 進(jìn)程綁定進(jìn)程沒退出窗口就在進(jìn)程一結(jié)束窗口立刻銷毀。你需要在代碼里留一個(gè)循環(huán)結(jié)構(gòu)讓它掛住。后面第三部分我會專門寫這個(gè)循環(huán)這是整個(gè)游戲開發(fā)最核心的骨架。2.3 給素材文件建一個(gè)干凈的目錄結(jié)構(gòu)這是我做第一個(gè)項(xiàng)目時(shí)沒人告訴我的事。Pygame 項(xiàng)目一開始可以只有一個(gè).py文件但當(dāng)你開始加載圖片、聲音、字體時(shí)散亂的路徑會讓你后患無窮。最穩(wěn)的項(xiàng)目結(jié)構(gòu)不管以后寫大游戲還是小玩意兒都受用my_game/ ├── main.py ├── settings.py ├── assets/ │ ├── images/ # 圖片素材 │ ├── sounds/ # 音效音頻 │ └── fonts/ # 字體文件 └── modules/ ├── player.py └── enemies.py路徑問題直接關(guān)系到最后打包我放在第 6 部分細(xì)講但目錄結(jié)構(gòu)從第一天就養(yǎng)成習(xí)慣后面省事非常多。3. 核心循環(huán)游戲開發(fā)的第一性原理3.1 主循環(huán)游戲本質(zhì)是一個(gè)無限循環(huán) 條件退出不管多復(fù)雜的游戲剝到最里面都是這樣一個(gè)骨架import pygame pygame.init() screen pygame.display.set_mode((800, 600)) pygame.display.set_caption(我的第一個(gè)游戲) running True while running: # 1. 處理輸入事件 for event in pygame.event.get(): if event.type pygame.QUIT: running False # 2. 更新游戲狀態(tài) # 3. 繪制畫面 screen.fill((0, 0, 0)) pygame.display.flip() pygame.quit()理解這段代碼你就理解了游戲工業(yè)化開發(fā)里常說的游戲循環(huán)。游戲之所以和你平時(shí)寫的那種從上到下跑一遍就結(jié)束的程序不同是因?yàn)樗鼘?shí)時(shí)性有要求需要每秒幾十次地重復(fù)做三件事收集輸入用戶按了哪個(gè)鍵、點(diǎn)了哪里、窗口有沒有被關(guān)閉。更新狀態(tài)根據(jù)輸入和游戲規(guī)則去算新位置、新血量、新得分。渲染畫面把最新的狀態(tài)畫到屏幕上。running False是唯一合法的退出方式。這里有一個(gè)常見誤解新手以為要在代碼里寫break來退出游戲?qū)嶋H上對于while循環(huán)設(shè)置標(biāo)志位讓循環(huán)條件失效然后在while之后統(tǒng)一調(diào)pygame.quit()永遠(yuǎn)是最可控的退出方式。因?yàn)槿绻型局苯?break窗口資源的釋放時(shí)機(jī)就很尷尬容易在退出時(shí)有雜音或窗口殘留。3.2 Surface 與 blit屏幕上的一切都是貼像素我剛學(xué) Pygame 時(shí)最困惑的概念是Surface。后來我把它理解成一張能畫東西的畫布一切瞬間清楚了。窗口是一個(gè) Surface你 load 進(jìn)來的圖片也是一個(gè) Surface甚至一行文字、一個(gè)矩形都會被 Pygame 渲染成一個(gè)小 Surface。那動(dòng)詞也就是繪制在 Pygame 里叫做blit。它的意思是把一塊 Surface 的像素原樣貼到另一塊 Surface 上。比如我把角色圖片貼到窗口的正中央hero_image pygame.image.load(assets/images/hero.png) screen.blit(hero_image, (400, 300))第二參數(shù)是一個(gè)元組坐標(biāo)代表這張圖片要貼到窗口的哪個(gè)位置。注意那是圖片的左上角位置。一幀一幀地改變這個(gè)坐標(biāo)再重新 blit角色就動(dòng)起來了。這就是動(dòng)畫的全部秘密——不是真的有動(dòng)畫只是快速切換靜幀。Surface上還有一個(gè)常用的方法叫convert_alpha()它的作用是把圖片轉(zhuǎn)換成和窗口一樣的像素格式這樣 blit 時(shí)不用做格式轉(zhuǎn)換速度快很多透明通道也能保留。這是初步優(yōu)化最有效的一行代碼。3.3 Rect 與坐標(biāo)系統(tǒng)左上角原點(diǎn)向下為正Pygame 的坐標(biāo)系和你在數(shù)學(xué)課上學(xué)的不一樣原點(diǎn)在左上角x 軸向右增長y 軸向下增長。也就是說(0, 0)是屏幕左上角(100, 50)是往右 100 像素、往下 50 像素。對于剛接觸的讀者這個(gè)方向性最容易搞混。一個(gè)簡單記憶法想一想文本在 Word 里是怎么排的電腦屏幕上的坐標(biāo)就是這個(gè)邏輯。Rect是 Pygame 里最實(shí)用的數(shù)據(jù)結(jié)構(gòu)之一。它本質(zhì)是一個(gè)矩形區(qū)域保存了x, y, width, height四個(gè)值同時(shí)提供了大量方便屬性left, right, top, bottom, center, centerx, centery等等。為什么說它實(shí)用因?yàn)橛螒蚶飵缀跛械呐鲎矙z測、位置判斷都是在和 Rect 打交道。舉個(gè)判斷玩家是否超出屏幕左邊界的例子if player_rect.left 0: player_rect.left 0這樣寫比if player_rect.x 0: player_rect.x 0更直觀因?yàn)閘eft這個(gè)語義本身就是左邊界坐標(biāo)。Rect 還提供move(x, y)方法返回移動(dòng)后的新矩形以及colliderect()方法判斷兩個(gè)矩形是否相交。這些都是后面碰撞檢測的基礎(chǔ)。3.4 Clock 與 FPS為什么你的游戲一會快一會慢新人寫的第一版游戲往往不控制幀率結(jié)果在性能好的電腦上角色飛一樣地跑性能差的電腦上慢吞吞。這是因?yàn)橛螒驙顟B(tài)更新的次數(shù)取決于循環(huán)的迭代速度而在不同機(jī)器上循環(huán)速度并不一樣。解決辦法是給游戲加上Clock節(jié)拍器clock pygame.time.Clock() while running: # ... clock.tick(60)tick(60)的意思是讓這一幀循環(huán)最多持續(xù) 1/60 秒如果這一幀處理得太快就原地等待一下保證每秒最多執(zhí)行 60 次循環(huán)。這樣游戲速度就和硬件無關(guān)了。但這里還有一個(gè)進(jìn)階問題如果你的循環(huán)里某個(gè)操作開銷很大一幀實(shí)際耗時(shí)超過了 1/60 秒那tick(60)并不會阻止你變慢它只是限速不加速所以性能優(yōu)化永遠(yuǎn)是必要的。等游戲復(fù)雜度上來后你還會用到增量時(shí)間delta time把角色的移動(dòng)速度寫成每秒 200 像素而不是每幀 5 像素Pygame 2.x 推薦的做法是幀率乘以時(shí)間增量。第一批開發(fā)時(shí)先讓tick(60)控住速度已經(jīng)足夠應(yīng)付絕大多數(shù)小游戲了。4. 事件處理鍵盤、鼠標(biāo)以及那個(gè)事件鎖問題4.1 pygame.event.get() 和 poll() 的差異游戲循環(huán)第一步是處理輸入Pygame 里輸入的表現(xiàn)形式就是事件Event。事件是什么你按一個(gè)鍵、移動(dòng)鼠標(biāo)、點(diǎn)關(guān)閉窗口按鈕操作系統(tǒng)都會產(chǎn)生一條消息Pygame 把這些消息翻譯成事件對象塞進(jìn)一個(gè)隊(duì)列里。你得把它們?nèi)〕鰜硖幚?。最常用的取事件函?shù)是for event in pygame.event.get(): if event.type pygame.QUIT: running False它一次取出當(dāng)前隊(duì)列里的所有事件。但我看很多人沒注意過另一個(gè)函數(shù)pygame.event.poll()它的區(qū)別是每次只取一個(gè)事件如果隊(duì)列為空就返回一個(gè)pygame.NOEVENT類型的事件。什么時(shí)候用 poll當(dāng)你不想一次性取空隊(duì)列里所有事件而是想要精確控制每次循環(huán)只處理一個(gè)事件時(shí)可以用 while 循環(huán)包住它。實(shí)踐中大多數(shù)游戲用get()就足夠了但理解 poll 能幫你理清事件隊(duì)列的邏輯get 是把積水一次抽干poll 是一滴一滴接。4.2 鍵盤事件與連續(xù)按鍵兩種思路處理鍵盤輸入有兩種完全不同的思路新手很容易混淆。第一種是事件驅(qū)動(dòng)也就是你按下某個(gè)鍵的瞬間KEYDOWN事件進(jìn)入隊(duì)列松開時(shí)KEYUP事件進(jìn)入隊(duì)列。適用于菜單選擇、跳躍觸發(fā)、打開背包等一次性動(dòng)作。第二種是狀態(tài)查詢用pygame.key.get_pressed()獲取當(dāng)前所有鍵的按下狀態(tài)返回一個(gè)元組索引對應(yīng)鍵碼。適用于左右移動(dòng)、持續(xù)加速等按住才持續(xù)生效的操作。舉個(gè)例子移動(dòng)角色keys pygame.key.get_pressed() if keys[pygame.K_LEFT]: player_rect.x - 5 if keys[pygame.K_RIGHT]: player_rect.x 5這里有個(gè)很多人踩過的坑如果把左右移動(dòng)也寫在事件驅(qū)動(dòng)的for event循環(huán)里你會發(fā)現(xiàn)按一下只走一格移動(dòng)手感就像打字機(jī)一樣一頓一頓的。原因就是KEYDOWN只在按下的那一幀產(chǎn)生一個(gè)事件不會一直發(fā)。所以判斷是否按住必須用get_pressed()判斷按下的一瞬間才用KEYDOWN事件。區(qū)分好這兩個(gè)場景你的手感會立刻上一個(gè)檔次。4.3 事件鎖到底鎖的是什么熱詞里出現(xiàn)了一個(gè)很有意思的詞——事件鎖。很多人在做游戲時(shí)發(fā)現(xiàn)一個(gè)按鍵按下去程序里同一個(gè)動(dòng)作被觸發(fā)了兩次以上或者游戲狀態(tài)在按下和松開之間極端閃爍。這其實(shí)就是典型的事件競爭問題也就是游戲開發(fā)里需要事件鎖的場景。舉一個(gè)最簡單的例子。你想做一個(gè)按空格暫停的功能if event.type pygame.KEYDOWN and event.key pygame.K_SPACE: paused not paused表面看沒問題但如果某幀里用戶快速按了兩下空格事件隊(duì)列里可能排了兩個(gè)KEYDOWN你的邏輯就會瞬間執(zhí)行兩次取反結(jié)果暫停等于沒暫停。這種按下動(dòng)作應(yīng)該只生效一次但物理上多觸發(fā)了一次的問題就需要加鎖。兩個(gè)常見的鎖機(jī)制狀態(tài)鎖用幀數(shù)或時(shí)間戳記錄上次觸發(fā)的時(shí)間短時(shí)間內(nèi)不允許再次觸發(fā)。比如last_press_time 200毫秒 之后才允許下一次觸發(fā)防抖。狀態(tài)翻轉(zhuǎn)鎖在KEYDOWN里執(zhí)行取反之后立刻設(shè)一個(gè)space_handled True標(biāo)志直到KEYUP事件出現(xiàn)才把它設(shè)回 False。這樣同一個(gè)按鍵的按住過程中無論KEYDOWN出現(xiàn)多少次只處理第一次。space_handled False for event in pygame.event.get(): if event.type pygame.KEYDOWN and event.key pygame.K_SPACE: if not space_handled: paused not paused space_handled True if event.type pygame.KEYUP and event.key pygame.K_SPACE: space_handled False這就是游戲里事件鎖的直觀解釋。它鎖的不是事件本身而是防止一個(gè)物理動(dòng)作在多幀中產(chǎn)生重復(fù)邏輯。做格斗游戲、射擊游戲時(shí)這類需求會更多提前理解這個(gè)概念可以省掉不少 debug 時(shí)間。4.4 自定義事件與窗口事件pygame.event.Event()允許你自己制造一個(gè)事件對象再用pygame.event.post()把它丟回事件隊(duì)列。這個(gè)能力看起來冷門但在做定時(shí)事件比如每 5 秒生成一個(gè)敵人時(shí)非常好用。你可以設(shè)置一個(gè)自定義定時(shí)事件SPAWN_ENEMY pygame.USEREVENT 1 pygame.time.set_timer(SPAWN_ENEMY, 5000) while running: for event in pygame.event.get(): if event.type SPAWN_ENEMY: spawn_enemy()這樣你就能在主循環(huán)里統(tǒng)一處理所有動(dòng)作事件而不用在循環(huán)外掛一堆各自為政的計(jì)時(shí)器了。還有一個(gè)必須處理的窗口事件是pygame.QUIT它對應(yīng)點(diǎn)擊窗口關(guān)閉按鈕。如果只設(shè)置running False不夠還要記得之后pygame.quit()釋放窗口資源。在復(fù)雜的游戲里你可能還要處理pygame.WINDOWRESIZED事件來重新計(jì)算布局不過基礎(chǔ)階段先不管。5. 從零到一寫一個(gè)能玩的接蘋果小游戲光講 API 不落地等于白講。下面用一個(gè)小游戲把前面所有概念串起來玩家在底部左右移動(dòng)從屏幕頂端不斷掉下蘋果接住得分漏掉則損失一條命。這個(gè)游戲麻雀雖小五臟俱全。5.1 游戲拆解四個(gè)核心部分寫代碼前先拆游戲規(guī)則。任何游戲都可以拆成玩家控制、掉落物、碰撞判定、計(jì)分與結(jié)束條件四個(gè)部分玩家一個(gè)矩形或圖片跟隨鼠標(biāo)或鍵盤左右移動(dòng)。掉落物蘋果圖片或者一個(gè)紅色圓形從頂部以一定速度下落。碰撞判定蘋果與玩家接觸的瞬間得分并移除蘋果。結(jié)束條件某個(gè)蘋果落到底部并超出屏幕范圍時(shí)生命減一生命歸零則游戲結(jié)束。這種先拆規(guī)則再寫代碼的習(xí)慣比寫碼本身更重要。拆得越細(xì)你的代碼結(jié)構(gòu)就越自然。5.2 精靈與組為什么老手一上來就建 ClassPygame 的pygame.sprite.Sprite類和pygame.sprite.Group類是官方推薦的管理游戲?qū)ο蟮姆绞健prite是一個(gè)可繪制、可移動(dòng)、可碰撞的實(shí)體基類Group則是一個(gè)容器可以批量繪制、批量更新、批量檢測碰撞。import pygame class Apple(pygame.sprite.Sprite): def __init__(self, x, y): super().__init__() self.image pygame.Surface((20, 20)) self.image.fill((255, 0, 0)) self.rect self.image.get_rect(center(x, y)) self.speed 3 def update(self): self.rect.y self.speed if self.rect.top 600: self.kill()這里的self.image和self.rect是 Sprite 的兩個(gè)約定俗成的屬性draw()方法會依據(jù) rect 位置把 image 畫出來update()方法則是讓每個(gè)精靈執(zhí)行自己的行為邏輯。你只需要在主循環(huán)里調(diào)用apples.draw(screen) apples.update()游戲中所有蘋果的位置更新和繪制就全部完成了。省去了手寫一個(gè)蘋果列表然后逐個(gè)遍歷的麻煩。用面向?qū)ο蟮姆绞絹斫M織游戲?qū)ο笫菐装傩泻箜?xiàng)目還能不被搞亂的關(guān)鍵。雖然用 dict 或 list 也能實(shí)現(xiàn)但類封裝行為、Group 來遍歷可讀性和擴(kuò)展性完全不在一個(gè)層面。5.3 碰撞檢測矩形碰撞和像素完美碰撞的取舍Pygame 里最樸素的碰撞檢測是兩個(gè)矩形是否相交對應(yīng)Rect.colliderect()hits pygame.sprite.spritecollide(player, apples, True) if hits: score 1spritecollide(精靈, 組, True)會遍歷組內(nèi)所有精靈檢測與傳入精靈是否碰撞第三個(gè)參數(shù)為 True 表示碰撞到的對象會從組里移除。這個(gè)函數(shù)默認(rèn)用的就是矩形碰撞。矩形碰撞的缺點(diǎn)是如果你的物體不規(guī)則比如一個(gè)圓形蘋果被當(dāng)作正方形檢測四個(gè)角都會造成看起來沒碰到卻算碰到的假碰撞。解決辦法有兩種用collide_mask參數(shù)指定像素級碰撞。Pygame 會按圖像的非透明像素來檢測精確度最高但性能開銷也大。小游戲里幾十個(gè)物體的像素碰撞沒問題幾百個(gè)就要小心了。手動(dòng)縮小碰撞盒。就是給 Rect 的寬高乘一個(gè)系數(shù)讓判定區(qū)域比畫面區(qū)域小一點(diǎn)。比如 30x30 的圓形圖片碰撞盒設(shè)成 24x24。這招在實(shí)戰(zhàn)中非常常用混合了精確度和性能。我的建議是先全部用矩形碰撞把游戲跑通等確認(rèn)功能穩(wěn)定后再逐個(gè)替換成需要的精確模式。不要一上來就追求完美導(dǎo)致半天調(diào)試不出結(jié)果。5.4 游戲狀態(tài)機(jī)開始界面、游戲中、結(jié)束界面一個(gè)正經(jīng)游戲絕不可能只有一個(gè)永遠(yuǎn)在跑的主循環(huán)。它至少有三個(gè)狀態(tài)開始菜單、游戲進(jìn)行中、結(jié)束畫面。在 Pygame 里沒有現(xiàn)成的場景系統(tǒng)所以你得自己用狀態(tài)變量去控制最常見的寫法是GAME_MENU 0 GAME_PLAY 1 GAME_OVER 2 game_state GAME_MENU while running: if game_state GAME_MENU: # 顯示標(biāo)題和提示文字 # 檢測按鍵按下空格進(jìn)入游戲 elif game_state GAME_PLAY: # 更新蘋果、檢測碰撞、更新時(shí)間 # 生命歸零時(shí)切到 GAME_OVER elif game_state GAME_OVER: # 顯示最終得分 # 按任意鍵重新開始這就是一個(gè)極簡的狀態(tài)機(jī)。寫狀態(tài)機(jī)的時(shí)候有個(gè)容易踩的坑不要用if去改狀態(tài)后又同一幀繼續(xù)執(zhí)行新狀態(tài)的邏輯。比如在GAME_MENU分支里檢測到空格把狀態(tài)改成GAME_PLAY如果下面沒有elif而是連續(xù)if同一幀它會繼續(xù)跑游戲邏輯導(dǎo)致開局瞬間就產(chǎn)生一次碰撞或更新。所以狀態(tài)分支必須用elif明確互斥或者每個(gè)分支后面continue跳過本輪剩余邏輯。類似地從結(jié)束畫面按下空格重開游戲時(shí)一定要重置所有精靈、分?jǐn)?shù)和時(shí)間否則你會看到上一局的殘局。狀態(tài)機(jī)是游戲從能跑走向能玩的分水嶺。早期我用一個(gè)超級大的主循環(huán)堆所有邏輯改個(gè)功能就要滾半天代碼用狀態(tài)機(jī)拆分之后每個(gè)界面的代碼彼此隔離主循環(huán)清爽多了。6. 新手最容易翻車的四個(gè)地方文字、音效、打包和高清屏6.1 中文顯示全變方塊字體加載的坑如果你嘗試在 Pygame 里寫screen.blit(font.render(你好, 游戲, True, (255,255,255)), (100, 100))會很驚喜地發(fā)現(xiàn)方塊全是方塊。這是 Pygame 新手繞不開的坑。原因在于 Pygame 的默認(rèn)字體不知道去哪加載或者加載到的字體根本不支持中文字符。解決辦法也不是很難你只需要告訴它一個(gè)支持中文的字體路徑。Windows 下可以這樣寫font_path C:/Windows/Fonts/msyh.ttc # 微軟雅黑 font pygame.font.Font(font_path, 36)為了跨平臺穩(wěn)定更好的做法是把字體文件放進(jìn)項(xiàng)目的assets/fonts/目錄里然后用相對路徑加載。字體文件一般不能亂拷貝傳播注意看微軟雅黑等字體的版權(quán)但自用學(xué)習(xí)完全沒問題或者可以使用思源黑體等開源字體。還有一個(gè)冷門細(xì)節(jié)pygame.font.SysFont可以通過系統(tǒng)字體名創(chuàng)建字體它在不同系統(tǒng)上字段不同比如 Windows 認(rèn) 微軟雅黑macOS 可能認(rèn) PingFang SC 或 Songti SC因此跨平臺時(shí)會出問題。用pygame.font.Font(文件路徑)加載固定字體文件是保證任何機(jī)器上效果一致的最穩(wěn)方案。6.2 音效不響初始化的順序問題如果你的游戲里用了音頻素材必須在任何音頻操作之前調(diào)用pygame.mixer.pre_init()或pygame.mixer.init()。這里大多數(shù)人會栽的跟頭是在pygame.init()之后再調(diào)用mixer.init有時(shí)會靜默失敗——播放音效時(shí)沒有聲音也沒報(bào)錯(cuò)。標(biāo)準(zhǔn)做法是提前設(shè)置pygame.mixer.pre_init(44100, -16, 2, 512) pygame.init()這段代碼寫在pygame.init()之前。第二、三、四個(gè)參數(shù)分別是采樣率、位深度、聲道數(shù)、緩沖大小。如果不清楚怎么填默認(rèn)值就夠用重要的是pre_init 必須在 init 前。然后加載音效jump_sound pygame.mixer.Sound(assets/sounds/jump.wav) jump_sound.play()注意play()不是等音頻放完只負(fù)責(zé)啟動(dòng)播放。想做背景音樂用pygame.mixer.music.load(bgm.mp3); pygame.mixer.music.play(-1)-1表示循環(huán)播放。若遇到 MP3 在部分環(huán)境不支持用 WAV 或 OGG 格式最保險(xiǎn)。6.3 PyInstaller 打包路徑機(jī)制的隱藏炸彈游戲?qū)懞煤笙氚l(fā)給朋友玩第一步基本就是pip install pyinstaller然后pyinstaller -F main.py。這一步能跑出 exe 但大概率會出現(xiàn)一個(gè)大問題游戲啟動(dòng)后找不到圖片、找不到音效。原因不是你的代碼有問題而是 PyInstaller 打出來的程序運(yùn)行時(shí)工作目錄和 Python 環(huán)境不同相對路徑失效了。解決辦法是寫一個(gè)統(tǒng)一的路徑工具函數(shù)。判斷程序是打包狀態(tài)還是開發(fā)狀態(tài)分別取不同的基準(zhǔn)目錄import sys, os def resource_path(relative_path): base_path getattr(sys, _MEIPASS, os.path.abspath(.)) return os.path.join(base_path, relative_path)在使用素材路徑時(shí)全部通過resource_path(assets/images/hero.png)獲取。這樣開發(fā)時(shí)它返回項(xiàng)目目錄下的路徑打包時(shí)它返回 PyInstaller 釋放臨時(shí)文件的目錄路徑。這個(gè)工具函數(shù)我建議寫進(jìn)所有做 Pygame 項(xiàng)目的人的工具箱真的不知道救了多少次場。另外-F參數(shù)會把所有東西打成一個(gè)超大文件啟動(dòng)慢殺軟也容易誤報(bào)。如果你發(fā)給別人玩建議用-w隱藏命令行窗口加-F如果只給自己用保留窗口還能方便打印日志。6.4 高清屏和多屏環(huán)境下的坐標(biāo)失真Pygame 2.x 在 Windows 高分屏下的表現(xiàn)依然不完美。如果你的屏幕是 2K、4K 且系統(tǒng)縮放比例調(diào)到 125% 或 150%你會覺得窗口比設(shè)定的小鼠標(biāo)坐標(biāo)和畫面內(nèi)容對不上。根本原因是 Windows 在縮放時(shí)系統(tǒng)會把 Pygame 創(chuàng)建的窗口按邏輯像素顯示但 Pygame 拿到的鼠標(biāo)坐標(biāo)卻是物理像素。一個(gè)簡單粗暴的兼容方案是在代碼開頭讓窗口自適應(yīng)縮放import ctypes ctypes.windll.user32.SetProcessDPIAware()然后再創(chuàng)建窗口。這個(gè) API 調(diào)用在 Windows 上告訴系統(tǒng)我自己處理 DPI不需要你幫我縮放通常能解決大多數(shù)錯(cuò)位問題。但如果你要發(fā)布給各種屏幕配置不同的玩家更穩(wěn)妥的方案是寫分辨率自適配——即固定的游戲邏輯分辨率比如 960x540然后把整個(gè)窗口縮放顯示。這一塊不是新手必須掌握的但如果你準(zhǔn)備把作品發(fā)布給別人玩遲早會面對它。第一次遇到坐標(biāo)錯(cuò)位先查 DPI再查是不是窗口真的發(fā)生了 Resize 事件兩個(gè)排查方向基本覆蓋九成問題。最后說幾句心里話如果讓我給后來人一個(gè)最精簡的建議那就是別急著學(xué)很多花哨的功能先把一個(gè)球在屏幕上移動(dòng)、碰撞、計(jì)分、結(jié)束這四件事串起來跑通。這個(gè)過程能讓你真正理解什么是事件循環(huán)、什么是矩形碰撞、什么是狀態(tài)切換。我在實(shí)際開發(fā)中最大的體會是Pygame 是一個(gè)讓人敢于動(dòng)手的庫——它不完美但它把游戲制作的門檻壓到了一個(gè)下午就可以跨過去的高度??ㄗ×司腿シ录?duì)列、去打印精靈數(shù)量、去查 FPS這些小技巧比任何插件都好用。你的第一個(gè)游戲或許畫面粗糙但親手創(chuàng)造出一個(gè)能運(yùn)行的交互世界那種感覺會是持續(xù)學(xué)習(xí)的最大動(dòng)力。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
91成人高清在线观看| 国产400孕妇孕交群| 亚洲无码视频免费在线观看网址!| 强免费黄色网址| 欧美综合综合| s片在线观看| 91人妻素女| 99999久久精| 日韩中字av一区| 精品毛片av一区二区| 91丨精品丨国产丨丝袜| 黄色污污污污污污网站| 爱媛媛久久国产福利| 日韩欧美加勒比| 亚洲中亚日激情视频| 亚洲欧洲偷拍一区| 精品国产无码中文| 亚洲午夜免费狠狠干| 日韩黄片影院| 成人自拍三级在线观看| 91综合网站| 日韩熟女三十乱伦| 四虎精品一区| 精品二999| 麻豆黄色五月天| 色婷婷狠狠18禁| 少妇无码av专区线| 人人干黄色| 日韩猛交| 国产女人视频三四五区| 9999久久久| 欧美三级偷拍| 男女啊啊啊啊啊| 日韩在线电影| 日韩有码中文字幕女同性恋| 97操碰| 青青欧美在线| 91狠狠综合久久| 久久久精品成人国产| 人人摸人人干人人拍97| 激情综合五| 色色色99| 色哟哟-国产专区| 岛国成人av在线播放网址| 中文字幕狠狠玩| 欧美国产日韩高清在线| 97二区四区| 日韩AV中文字幕电影| 午夜福利久久久噜久噜久久综合| 精品乱码久久久久| 天天性射网| 男人在线天堂| 艹少妇网站| 爱射综合| 精品人体无圣光凹凸| 可以在线观看AV的网站| 色九久| 亚洲激情av| 破处bbq| 啊啊啊快操我视频| 久久是精品| 俞拍久久国应视频| 日日噜噜夜夜狠狠视频无| 午夜福利精品| 老鸭窝亚洲毛片| 色眯眯av| 91人妻人人澡人人爽人人精品| 日韩免费高清大片在线| 亚洲激情网| 亚洲综合九| 伊人aaa| AV色女综合| 国产精品分类在线观看| 九九久久综合| 日日AAvv| 色99999| 91精品网站| 国产AV天美传媒一区二区三区 | 国产美女在线精品免费看| 一二区在线观看视频| 亚洲诱惑| 91 偷| 国产真实子伦对白| 国产成人无码啪| 91小视频| 亚洲情色五月天 | 超碰97男女| 东北熟女91| 91肉丝| 久久五十路熟女人妻| 天天插夜夜操| 亚洲少妇色| 老熟女91av| 闷骚老熟女15P| 色哟哟av| 欧亚性爱在线视频| 极品白嫩福利在线| 日本不卡中文| 精品久久久久av影院| 激情五月婷婷| 亚洲色入欧美| 激情抓乳插进去啪啪啪日韩| 玖玖婷婷五月天| 九九无码久久精品视频| 啊啊啊啊啊啊在线| 一级久久性爱视频| 爱妻综合网| 伊人久久综合影院| 欧美日日人人天天| 综合色播| 国产99热| 欧美狠狠弄| 欧美日韩资源| 久久久com| 亚洲中文sv| 日韩一区二区三区四区五区| 91欧美美女日韩国产婷婷| 欧美色乱| 欧美婷婷久久| 蜜臀久久99精品| 免费观看欧美日韩操逼视频| 五月天久久久| 久久丝袜| 久无码| 亚洲久久久久| 欧美AB在线观看| 狠狠入| 中文字幕啊啊啊在线观看视频| 欧美少妇高潮视频| 黑操B| 思思热在线视频在线| 又摸又舔在线观看网站| 国产精品色色| 熟妇熟女亚洲天堂网| 91欧美www| 亚洲第91页 | 美女干逼2| 亚洲成?V人片在线观看福利| 百度百度日本操逼| 欧美偷拍| 青青草玖玖爱| 日韩久久超碰色| 亚洲第一无码播放立川理惠| 国产精品极品美女视频| 亚洲精品国产无码高清| 亚州性色| 久久久久久久| 日本人妻天堂网站在线播放| wwwss在线观看| 国产精品成人久久一区二区三区| 美欧色综合| A级毛片在线看免费| 久热最新在线杭州| 91日韩网站| 久久久专区| 97资源超碰| 亚洲老熟妇xxx| 伊人影院综合是一个与深夜成人在线| 伊人久久在线视频观看| 97人人模人人爽人人| 日韩av乱伦| 亚洲一区深夜| 97精品国产精品免费观看| 久久久禁| 91亚州| 少妇厨房愉情理伦片bd在线观看| 大象AV在线| 欧美gv在线观看| 91丝袜在线播放| 亚洲黄网在哪免费看| 91精片| 免费观看欧美日韩操逼视频| 日韩亚洲美女一区久久| 亚洲一区二区三区中文字幕| 亚洲丝袜少妇在线| 探花精品视频| 蜜桃久久综合视频| 日本中文字幕熟妇| 丁香五月性爱| 久久久久99999| 久久国产99精品72福利| 中文字幕AV中出| 一区二区三区精品黑丝白丝酒店对鸡 | 69av一区二区三区| 中文一区二区| 日日碰狠狠添天天爽超| 青青操国产夫妻| 天天天乱色综合全| 成人在线日韩| 久久人妻视频网| 97干在线视频| 亚洲区限制级 99| 久久肏大逼| 日B操| 呦呦影院| 青青草久草| 蜜桃天美传媒AV一区二区三区| 深夜啪啪啪视频免费| 伊人久久在线视频观看| www男人天堂| 一区二区三区无卡视频在线观看| 操逼片国产| 东北女人高潮视频| 97亚洲自在精品在线观看| 男女打扑克高清网站| 97国产成人精品免费视频| 国产1024在线播放| 91丝袜人妻| 99超碰网| Aa东京男人的天堂| 国产又大又粗又长视频| 国产精品suv一区| 中文字幕 一区二区 亚洲无码| 五月婷婷丁香六月| 国产精品亚洲无码| 中文人妻av高清一区| 国内外内射高清视频| 91五十路| 天天影视91看看| 色综合超碰超| 欧美精品,四区。五区| 亚洲极品| 久久久96| 黄片免费日韩| 热久久国产| 日本国产欧美高清在线| 国产92麻豆天美精品色欲5| 五月丁香影视| 亚洲国产精品久久久久久久久久| 五月婷婷激情综合| 水野优香在线观看| 激情综合97| 亚洲少妇色图自慰直播| 女上位精品在线| 屁股久久久久久| 亚洲天天操| 国产真实子伦对白| 欧美劲爆视频一区二区| 免费在线观看AV无码网站| 操香逼| 日韩亚洲97| 啊啊啊好多水| 韩国一级做A片免费的| 婷婷五月天成人网| 亚洲综合情色| 欧美中文字幕精品人妻| 久久直播国产| 亚洲熟女乱色| 老鸭窝在线视频播放| 操www| 亚洲色五月| 视频在线97| 欧美大香蕉专区网| 99啪啪视频| 淫荡网址| 欧美中出1| 激情四射五月天| 国产日韩在线播放av| 亚洲 日本 一 二 三| 94色色电影网| 色色色天美视频| 欧美亚洲宗合色性图| 无码人妻精品一区二区中文| 淮穴色AV| 中文字幕日韩人妻视频一区二区三区| 熟女性视频| 国产精品97视频| 一区二区三区精品黑丝白丝酒店对鸡| 91欧美丨精品丨入口| 免费一级黄色录像影片| jiujiujiujingpin| 国产一区二区三三视频| 亚洲中亚日激情视频| 亚洲无码精品AV久久久| 国产精品高朝久久久久久久| 精品中文字幕一区二区| 97爱b| 美女黄频a美女大全免费皮| 九九国产| 欧美拳交在线播放| 亚洲国产丝袜熟女av| 99超碰色| 少妇人妻好深太紧了vr91| 日韩人妻无码精品系列| 99在线免费公开视频| 亚洲人妻av| 超碰精品日韩欧美国产| 啊啊啊久久久视频| 久久6热视频免费观看| 男人的天堂在线| 无码高清操逼网址| 超碰 另类 欧美| 人伦四五区| 亚洲免费人妻在| 国产久9| 嫩草影院在线观看精品| 精品久久99| 91在线观看,天天综合| 午夜久久无码1000合集| 国产视频第二页| 搡老女人老91妇女熟女| 最近2018中文字幕在线高清第一页| 国产高清1234区| 老熟女搡BBBB搡BBBB视频| 91欧美另类| 熟女人妻一区二区三区| 夜夜嗨视频| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 国模不卡一本二本三电影| 丝袜人妻av一区二区| 亚州 综合 色图| 欧美日韩性爱视屏免费看了| 久久久999| 男人天堂导航| 色狠人在线99| 成视频在线观看免费看| 秋霞一级鲁丝片A片| 韩国嫰模上门援交视频| 丰满人妻一区二区三区四| 成人无码在线超碰网| 人妻大香蕉| 九九九久千久久激情蜜桃在线看| 天天干夜夜一操| 天美传媒婬乱| 国产又粗又长的视频| 色97欧美| 91欧美色| 婷婷色香| 97色欧州| 欧美日韩不卡传媒| 美女诱惑一区| 乱伦图一区| 欧美成人精品一区二区三区| 欧美黑人与女人91| 狠狠激情综合狠狠操中文字幕| 极品粉嫩少妇视频| 欧美九九九| 开心六月色| 亚洲国男人的天堂| 亚洲第一页第二页激情| 高潮9999外国| 精品国产污一区二区三区| 91N综合在线| 国产白丝网站| 国产野战露脸在线播放| 少妇一级无码精品| 欧美成人精品一区二区三区| 婷婷超| 熟妇视频一区二区三区在线观看| 亚洲区小说| 色狠狠 - 百度| 小骚逼被操的爽不爽| 中国大陆国产高清AⅤ毛片| 97视频900| 破苞ⅩXXX性无码动漫无码| 乱人乱色一区二区三区免费| 亚洲成人av色网| 91艹B视频| 骚鸭AV| 极品尤物在线观看| 国模无码一区二区三区在线| 内射夫妻三片| 国产精品视频91久久| 亚洲久草AV色图| A啊啊在线观看| 天天操av懂色| 亚洲色图在线视频| 久久女人一区二区三区| 91呆哥人妻| 在线精品福利免费播放| 国产1769在线| 狠狠中文字幕| 美女露胸露奶头| 福利偷拍视频-中文字幕2019国语完整视频大全-S91AV | 婬女免费一二三区A片| 亚洲天堂男人天堂网| 99久久精品国产高潮| 亚洲在线网站| 在线可观看的黄色网址| 91成人在线免费视频| 久久久久9| 五月丁香综合啪啪| 国产一区二区三区影片| 人妻熟女字幕一区二区| 亚欧美天堂在线| 一区二区三区四区久久视1| 丰满少妇高潮无码| 国产AV天美传媒一区二区三区 | 爱爱久久| 91中出在线| 97视频在线播放| 色激情综合网站| 亚洲成人av电影在线| 久操操| 99re69| 97视频在线免费| 欧美一级二级三级| 色欲蜜臀AV| 国产日韩在线播放| 婷婷九月国产| 人人玩人人添人人澡免费| 2019天天干天天操| 日日妻色网| 一类av片在线看| 成人一区二区三区四区| 91强奸乱轮| 99久在线精品99re8| 国产综合网站在线播放 | 天天综合站| 思思性爱| 欧美片第一页| 中出789在线视频| 国产乱伦性爱区| 一区二区亚州激情久婷婷欧美| 中文字幕日韩人妻视频一区二区三区 | 伊香蕉综合久久久久久久噜噜噜| 色999五月色| 欧美熟妇精品黑人巨大91| 国产免费永久精品无码| 日本男人天堂| 国产传媒日韩欧美| 大香蕉啪啪啪啪在线| 亚洲av影音先锋| 97精品一区二区视频在线观看| AV九九| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 狠狠2050在线观看| 日韩操人| 99亚洲国产精品色一区二区三区| 青苹果影院男人的天堂| 啪啪资源网| 91模特在线观看| 久久精品99| 美欧色综合| 嗯嗯啊啊操死我| 欧美探花网| baiduhicn.com。| 久久精品99| 秋霞免费无码视频日韩A片| 青青草原综合久久大伊人精品| 中文字幕丰满人妻日本| 色偷偷人人玩人人舔人人操人人摸人人爽 | 亚洲色欲天天人妻无码系列专区| 精品九九九| 亚洲大色堂| 一区二区三区视频在线观看免费| 94色色电影网| 久久婷婷亚洲欧| 色播丁香| 无码人妻丰满热妇又大又粗| 一级乱伦网站| 九九热国产| 欧美日日人人天天| 97超碰资源网| 九月AV| 五月丁香婷婷啪啪| 被体育老师抱着c到高潮| 亚洲欧洲无码bt精品合集| 欧美第二页午夜| 久久综合18p| 91婷婷| 久久香蕉综合一本到3atv| 天天夜躁日日躁狠狠2002| 和协无码影院| 亚洲色性情三级| 色月天AV导航| 99啪啪视频| 精品人妻二区三区| 欧美日韩国产中文超碰| 青青草原狼av| 超碰97玖玖爱| 欧美少妇性乱| 亚洲天堂日本| 综合熟妇一区二区三区| 欧美青青草视频| 日韩色女精品| 日韩啪啪视频| 午夜男女爽爽大片免费观看| 天天躁日日躁AAAAXXXX国产 | 国产精品久久久啊| 少妇一级婬片免费放一级a性色.| 免费久久一级毛片大黄| 久久在线观看免费视频| 久久久久久久伊人精品| 国产乱伦性爱AV| 91视频国品一二三区| 女人爽到高潮久久久| 熟妇女人妻呻吟久久AV| 伊蕉97蜜桃97狠狠综合干| 国产情色在线| av网站免费看| 国产九九九九九九九九| 天天操狠狠日夜夜干超碰撸com视频在线观看| 成片免费观看视频大全| 日日夜夜骚| 国产精品午夜福利亚洲综合网| 操逼www.| 欧美 综合| 女人18精品一区二区三区| 国产精品一区二区三区四区五区| 天天上日日上日韩精品| 亚洲色婷婷| 中文欧丝袜诱惑| 92久久| 爽 好舒服 无码刺激久久| 天天干一区二区| 国产蜜臀精品一区二区尤物| 亚洲欧美综合区自拍另类| 免费作爱一级视频| 日本顶级天天操狠狠操夜夜操中文字幕| 夜夜国自区| 欧美最婬乱婬爆婬性视频 | 中文字幕人妻资源在线| 成年男人的天堂| 国产日韩手机视频在线| 欧美 亚洲 综合 制服 另类| caoni国产亚洲av| 人妻人久久精品中文字幕| 国产精品一级片在线看| 亚洲se电影| 亚洲夜色在线| 欧美强奸乱能| 亚洲 在线| 中文字幕乱码人妻一区二区三区,99精品 | 不卡中文字幕aⅴ在线| 欧美在线大香蕉| 一区三区啪啪| 日日噜噜夜夜狠狠视频无| 麻豆人妻偷人精品无码视频| 亚洲福利中文字幕在线| 国产精品剧情| 国产日韩人人| 91婷婷伊人狠人| 亚洲中文字幕在线视频一区二区| 99re在线视频国产| 亚洲综合113页| 自拍偷拍2025在线观看| 美女裸体无遮挡永久免费观看网站| 日韩99神马视频播放| 8x福利精品第一福利视频导航| www亚洲免费| 私人尤物在线精品不卡| 日韩一卡二卡三卡| 97啪啪| 97中文天堂| 97久久精品国产| 青青青青青手机视频| 性色A∨91| 久久透逼视频| 超碰人人超在线观看| 高潮内射在线| www.夜夜| 亚洲综合性网址| 天堂性色| 超碰成人最新最好看| 青青草在线成人视频| 学生妹天天看| av黄图片在线观看| 五月天玖玖资源站| 女人一区| 亚洲色欧美| 黄片直播三级黄片两女一男| 欧美一区二区情色| 伊色久人大在线| 亚洲av影院在线观看| 欧亚乱色熟一区二区三四区| 久热最新在线杭州| 啪一啪免费视频| 欧美熟妇乱码在线一区| 欧美日日人人天天| 欧美日韩亚洲一区二区在线观看| 亚洲不卡不卡中文字幕不卡| 成人AV在线网站| 日本操逼视频免费| 激情AV| 中文子幕一二三| 综合久久久久久久久91| 97午夜剧场日韩| 就去色综合| 久久亚洲精品成人av| 天堂资源站| 免费av在线播放二区| 天天看少妇| 超碰2017| 日韩伦理久 久久 清纯| 国产精品99999| 九九视品黄色| 女人香蕉久久毛毛片精品| 3d成人精品一区二区| 在线一区| 999亚洲国产视频| 四虎国产成人精品免费一女五男| 国产黄色剧情影片麻豆免费播放| 激情欧美97| 国产一区二区视频在线播放| 农村少妇久久久久久久| 久久亚洲婷婷| 欧美性性性| 久草综合京东| 亚洲本色精品一区二区久久| 九九九九九九亚洲| 亚洲AV无码乱码| 九九九九九用不成了| 中文字幕国产| 国产夫妻性生活视频| 免费观看欧美日韩操逼视频| 夜夜精品视频| 青青操在线亚洲视频观看欧美在线| 日韩电影在线观看网址| 狠肏骚人妻| 日熟女| 2019亚洲男人天堂| 久肏视频字幕| 国产精品粉嫩福利在线| 久久久久久99AV无码免费网站| 密臀在线免费观看| 91香蕉视频在线观看免费| 偷拍综合亚洲| 六月婷婷色综合| 欧美加勒比| 操人妻逼91| 中文字幕中文字幕一区二区| 清纯唯美亚洲另类| 天天色悠悠激情| 国产无码久久高清| 中文字幕第95页| 亚洲无码一二三区| 有码色中文字幕在线观看| se01国产在线视频| 综合少妇网| 天天影视综合网欧美精品| 国产又猛又粗又爽又黄| 久草毛片| WWW4虎| 干婷婷综合网| 78久久| 欧美日韩亚洲五月天婷婷| 99精品无码| 中文字幕日韩电影人妻| 亚洲男人天堂2016| 五月婷在线| 亚洲天堂中文字| 91日产桃蜜| 91jk色拍| caorenqi shipin| 国产av强奸美女| 欧美综色欧| 欧美日韩国产电影| 亚洲欧美九九| 一区二区高清视频| 久久久天美| 一区| 熟女丰满人妻一区| av无码精品久久久久| 国产精品片| 九九九不卡| 狠狠图片青青草| 久久国产视频性吧 | 人妻精品综合中文字幕在线 | 熟妇无码视频三区| 久久久久久久久久久久黄色 | 精品国产一区二区三区香蕉欧美| 精品一区二区三区丰满熟女-亚洲欧美一区| 97精彩视频网站| 亚洲AV无码久久久国产精品| 日本精品无码三级网站| 屁股久久久久久久| 在线洲亚线| 77国产精品| 天天看特黄的免费网站| 97se综合网| 欧美日韩夜夜| 国产精品女同| 丁香六月婷婷综合| www…国产操逼| 夜嗨影院| 熟女精品va中文字幕| 成人av在线播放| 探花精品 一区二区| 爱逼综合| 久久内射| 美欧色综合| 亚洲国产精品无石码久久| 丰满熟女人妻一区二区三五十一路| 四虎在线免费视频| 99久久久无码| 日韩人妻网站| 婷婷五月天无码| 96免费视频在线| 十八禁黄色成人网站观看| 亚洲麻豆精品二区三区| 五月丁香六月激情| 99热色精品| 亚洲色诱惑| 激情文学网伊人| 男女做爰猛烈动高潮A片免费应用| 欧美综合网| 麻豆天美传媒毛片| 国产精品96| 久久精品黄色| 欧洲久久一二线| 亚欧无码线免费观看视频| 国产精品96| 涩综合导航| 东京热99999| av优播| 色综合色欲色综合色综合色综合| 99人妻碰碰碰久久久久禁片| 精品人妻一二三四区视频| 午夜偷拍久久熟女| 日韩黄色片子| 欧美激情 日韩精品| 99久久精品国产系列| 2003天天干夜夜操| 色五月激情网| 国产熟女少妇一区| 国产日韩欧美三级片| 欧美精品一二三| 久久超碰av在线| 欧美在线55555| 操逼无码一区| 久久女婷| 一区二区三区四区五区高清无码永久视频 | 伊人久久综合精品欧美| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 色97综合中文字幕| 亚洲毛片久久| 1人人看人人摸人人操| 亚洲欧美在线观看2021 | 国产精品视频91久久| 国产精品亚洲高清在线| 中文字幕在线高清男人的天堂 | 久久亚洲中文字幕视频| 中文字幕aⅴ在线视频| 五月天色色网站| 成人日韩中文字幕| 无码人妻丰满熟妇区毛片| 男女国产精品| 免费在线观看国内色片网站网址| 伊人成人中文字幕久久网| 日本欧美韩国日产片片在线看免| 丝袜天堂| 欧美色图20p| 肉嘟嘟www视频在线观看高清| 九九内射在线| 久热大香蕉网站| 亚州综合在线| av在线一区二区三区| 欧美人妻二区三区| 97在线播放| 95自拍视频在线观看| 97人人干| 大香蕉伊然在亚洲91| 国产偷拍网站| 乱伦系列一区二区| 亚洲少妇在线影音| 国产h小视频在线观看免费| 色色色天美视频| 图色综合网| 国产又粗又长又大的视频| 操高情无码| 日韩一级二级在线| 黑人性欧美| 亚洲欧洲国产综合av| AV天堂丝袜| 人人操超碰在线| 播播亚洲小说亚洲| 蜜臀99999| 熟妇一区,二区,三区。| 国产精品一区午夜福利| 日本一级特级毛片视频| 操逼网站地址| 足交视频老司机| 中文人妻av高清一区| 国产夫妻一区二区| 久久精品店| 亚洲成av人片色午夜乱码| 日韩一区二区熟女| 国产传媒日韩| 久久XX| 97国产中文| 伊人婷婷五月天| 久久久78| 色婷婷久久| 97在线免费视频观看| 丁香五月成人| 91性网| 95人妻爽爽人人做人人澡| 91欧美少妇| 2024人人操人人摸| 福利天天都操| 国产乱伦一二三区| 91天堂丝袜美腿| www99热| 欧美激情高清性猛交| 青青操青娱乐| 亚洲日韩资源| 日日狠狠久久偷偷色综合免费| 日韩精品亚洲一二三| 91狼人| 亚洲资源站| 91九色丨国产丨爆乳| 日本国产亚洲一区在线观看| 男人天堂日日夜夜| 凹凸久久人人| 欧美最大综合网| 中日高清无码操逼视频| 精品无码产区一区二| 综合色图区| 麻豆精品一区二区三区四区免费观看| 婷色五月| 韩美日操逼| 97超碰这里只有精品| 九九视频黄色片| 久久国语| 色香蕉影院| 国产精品久久久 | 色噜噜狠狠色综无码久久合欧美| 日韩在线观看中文字幕视频| 夜夜欧美 | 亚洲色 国产 欧美 日韩| 久操视频在线| 美女超碰978| 国产极品粉嫩馒头一线天av| 亚码人妻| 97人人干| 免费少妇一区二区| 日韩人妻精品| 性色avv| 香蕉热人人精品| Aa东京男人的天堂| 欧美在线视频99| 四虎国产精品永久在线囯在线 | 婷婷五月色| 国产精品人妻免费精品| 欧美与日韩97| 国产免费大片| 男人的天堂欧美| 亚洲码专区| 色呦呦国产精品免费看| 99热8| 日韩欧美经典在线观看| 国产熟女无套内射| 欧美少妇高潮久久91| 九九色色| AAAAAAAAA黄片| 欧美色人| 性感美女91影视| 97综合国产精品高潮久久| 大香蕉丝袜一级片| 天天爽夜夜爽夜夜爽精| 91操熟女视频| 色天欧美| 五月天伊人| 依人大香蕉| 伊人久操| 正在播放国产精品一区| 熟妇人妻精品一区二区| 色婷婷婷五月天激情四射| 色噜噜综合在线| 97人人操人人摸人人爱| 亚洲欧美国产中文视频| 偷拍导航视频网站| 欧日韩在线观看| 97人人爱人人做人人乐| 欧美色图天堂在线| 亚洲砖码砖专无区2023| 中字幕人妻一区二区三区| 麻豆国产成人精品| 一区二区首页| 色婷婷久久| 亚洲欧综合另类无码一区| 92性色国产午夜福利在线661| 好爽视频在线观看| 中文字幕日韩情色| 韩国嫰模上门援交视频| 91色伦综合| 嗯嗯嗯嗯啊啊啊好紧好大| 色香色欲天天综合网天天来吧| 久久黄片国产一区二区| 97精品久久| 少妇淫妇久久久久久久| julia ann久久| 中国小夫妻勾搭露脸淫荡对白| 欧美熟女激情| 日韩精品人妻系列无码天堂| 天天摸,夜夜摸| 久久极品伊人| 日本91白丝| 日本久久99| 日本理论在线| 亚洲图片欧美在线视频| 强奸乱伦日韩AV| 在线观看黄色电话| 啪啪AV导航| 欧美日韩国产另类综合| 成人免费看吃奶视频网站| 99久久精品无码一区二区毛片免费| 欧美激情 亚洲色图| 天天操妹子| 精品国产乱码久久久久久蜜臀| 九九九成人| 男人的天堂一区| 美女网站91| 丰满人妻一区二区三区四区| 人人妻人人爱人人玩| 操碰97| 日本操逼视频免费| 人人贴人人摸| 成人美女av| 大伊香蕉在线视频免费| α√在线| 99精品在线| 熟妇在线视频一区二区| 后入 亚洲 美女 射| www激情| 99热精品在线| 裸体美女国产免费久久久网站| 大香蕉免费中文| 色婷婷五月综合激情中文字幕| 日本不卡高清视频| 综合在线导航一区| 天天干天天狼在线视频| 人妻嗯啊啊在线播放| 少妇国产不卡| 日本欧美色| 天天操狠狠日夜夜干超大胆开放com大香蕉视频在线观看 | 久久久久国产精品片区无码直播| 激情久久av一区av二区av| 天天爽天天操| 黄总AV色图| 成人天天爽| 亚洲天天天| 久久精品国产精品一区| 午夜视频好爽啊| 国产欧美一区激情交| 超碰人人妻| 97玖玖超碰| 暴力av在线| 久久无码一区二区二三区性色| 日日噜噜夜夜狠狠视频无| 国产AV无码AV| 中文字幕艹艹| 色网综合网| 91亚洲欧洲| 日本狂喷奶水在线播放212| 国产亚洲中文不卡二区| 久久草大香蕉| 日本东京热大香蕉a片| 97超级久久| 国模无码人体一区二区三| 91精品国产高清久久久久久,亚洲成人| 97爱爱爱综合| AV99热18这里只有精品| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 色婷婷五月天| 97亚洲欧美日韩| 97国产|免费| 中文字幕一区二区日韩网| 婷婷丁香六月| 污污污8888| 精品在线蜜臀| 亚洲欧美中文一区二区三| 1024久久高清视频| 东北操逼| 在线观看一级α片刺激高潮视频| 久久av成人无码免费| 热天堂一区二区| 一区二区三区麻豆| 欧美日韩国产中文精品字幕自在自线| 看日韩美女二区三区免费操逼视频| 调教熟妇 久久久久久| 亚洲素人网| 久久久久少妇| 午夜乱轮操逼视频免费看| 一起草av| 学生妹天天看| 伊人热综合| 九月色婷婷| 日日妻色网| 女欧美一区二三区| 97精品综合| 91超碰碰在线| 天美精品原创av片国产| 免费一级欧美片片线观看| 91网站18在线| 97在线免费视频| 色色色欧美| 久久最新视频免费观看| 东京热91| 国产精品日韩在线一区| yazhououmeizongya| 色色色色日本| 一区二区三区四区五区高清无码永久视频 | 日本黄色精品| 久久久久久久亚洲Av无码| 青青草乱入乱欲视频在线观看| 久久精品一区二区三区四区五区| 五月婷婷AV| 啊啊啊慢点| 制服乱伦| 狠狠做深爱婷婷久久二区| {男男暴菊gay无套网站| 欧美亚男人的天堂| yw尤物av无码点击进入麻豆| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 青青草中文-久久青草精品一区二区三 | 国产精品伦理| 91五月天| 高清无码91| 国产成人在线观看综合| 蜜臀一二三区| 婷婷五月天色色| 天天综合网亚洲综合网| 日韩午夜精品一区二区三区电影| 黄色一区三区| 国产探花日韩援交| 9999九九九久久久| 日韩欧美字幕亚洲一区二区| 久偷拍欧美日韩三区| 正在播放国产精品一区| 人妻内射一区二区在线视频| 熟妇操花| 青青草原av| 国产精品老师| 99热在线观看| 美国久久一二三四| 性爱免费视频成人| 日本五区不卡| 能看的AV| 亚洲男人天堂2017| 久久久久久久久久久人妻| 中文字幕日韩精品久久| 夜夜青青无码影院| 毛片电影一区二区三区| 欧美高清第一页| 日日橹狠狠爱欧美超碰| 国产熟女乱论| 91亚洲网站| 国产欧美美女免费观看视频| 91精品久久久久五月天精品| 欧色性第一页| 天天爽天天操| 无码一区二区精品视频久久久春药 | 久久久久久综合久久伊人蜜月| 亚洲 日韩 欧美 国产综合体| 精品超碰色| 亚洲丝袜色图| 91色人妻| 人人九九精| 久久久99久9| 欧美成人一级免费电影| 超碰吊日色| 91在线视频免费中出| 国产精品久久久久久照片| 大香蕉 222| 天天做日日做天天欢。| 日韩中文9| 成人五月香网在线| 三级日本一区二区三区| 亚洲丝袜99| 欧美淫穴| 日本熟女免费視颖| 操熟女91| 99国产精品久久久久久久成人热| yellow网站免费观看日韩高清无码| 四方色播| 久久久少妇诱惑精品视频| 天天干2019| 日韩激情啪啪| 国产精品久久久啊| 久久人妻一区二区三区高清| 亚洲另类在线观看| 中国一级特黄大片护士| 欧美日韩在线小说 | 国产亚洲色婷婷久久99精品91葵花宝典| 天天综合网在线观看| 亚洲天堂资源| 九九久久久久久爱| 99久热| 久久久久久精品免费看A级| 校园春色 欧美| 日本久久999| 久久仑合| 天天干一区二区| 欧美日韩成人| 亚一综合久久久久久久久久| 天天看夜夜看日日干| 玖玖久久久| 久操视频在线| 国产青青美女玩逼视频| 中文字幕日韩精品一区二区三区| 色情五月综合婷婷| 亚洲黄片免费在线播放| 人人妻人人爽| 啊啊啊操死我了| 操死我了啊啊啊| 亚洲图片偷拍视频区| 国产久久成人| 亚洲精品成人动漫在线| 爱妃国产亚洲视频中文字幕| 亚洲AV在线资源| 99只有精品| 国产精品熟女AV中文字幕在线播放| 亚洲AV永久无码一区仙野| 精品乱码在线观看| 9精品在线| 国产性感骚丝袜在线| 色五月婷婷在线| 国产成人自拍视频视频| 97超碰色| 欧美精品97| 超碰78| 日夜伊人网| 国产精品操| 91老女人| 超碰成人人人爽人人爽| 九热久| 极品色综合| 久久黄黄| 97超碰69| 一区久久久二区| http://qxhbdz.com| 丁香五月久久| 26uuu国产| 欧美黑人性猛交91| 成人资源中文字幕在线观看天天| 亚洲成人碰碰| 天天干2019| 少妇与黑人高潮在线| 欧美超碰96| 久草在| 久久久性少妇| 性欧美999| 大鸡巴久久| 日本影视久久免费| 无遮挡男女激烈动态图| 一级毛片久久久久久久女人18| 97香蕉网| 翔田千里一区二区三区奶水| 久久精品中文字幕观看| 亚洲AV噜噜狠狠网址蜜桃动漫| 亚洲日韩美国人妻| 亚洲五码一区二区三区| 婷婷五月天AV| 夜夜高潮夜夜爽高清视频一 | 亚洲蜜乳av| 国产偷拍自拍在线视频| 久久激情视频| 老熟女91av| 亚洲 综合 第一页| 啊啊啊在线看| 999综合网| 三级色综合| 91中文在线| 日本日逼高清| 亚洲欧美经典一区二区| 国产夫妻一区二区| 综合大香蕉美。| 97超碰欧美|