色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合av,久久激情五月丁香伊人

ARTICLE DETAIL

資訊詳情

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

Dev-C++與EGE圖形庫:零基礎實現(xiàn)“躺平發(fā)育”游戲原型

Dev-C++與EGE圖形庫:零基礎實現(xiàn)“躺平發(fā)育”游戲原型 1. 項目緣起為什么是Dev-C與“躺平發(fā)育”如果你是一位對游戲開發(fā)感興趣但又覺得Unity、Unreal這些引擎門檻太高或者C#、C的現(xiàn)代開發(fā)環(huán)境配置起來太麻煩的初學者那么你很可能和我?guī)啄昵暗臓顟B(tài)一樣。那時候我想做點小游戲但光是搭建一個能跑起來的開發(fā)環(huán)境就勸退了好幾次。直到我重新?lián)炱鹆藢W生時代用的Dev-C配合上一些“躺平”式的開發(fā)思路才發(fā)現(xiàn)原來用最“古老”的工具也能快速體驗到游戲創(chuàng)作的樂趣?!疤善桨l(fā)育”這個詞最近在游戲圈里挺火它描述的是一種避開激烈競爭、專注于自身成長和資源積累的玩法策略。我把這個概念挪用到了游戲開發(fā)學習上。對于新手來說一上來就追求酷炫的3D效果、復雜的網(wǎng)絡同步無異于在“新手村”就挑戰(zhàn)終極Boss挫敗感極強。真正的“躺平發(fā)育”應該是選擇一個極其輕量、幾乎零配置的開發(fā)環(huán)境從最核心、最有趣的部分比如游戲邏輯直接入手快速獲得正向反饋在不斷的“小勝利”中積累經(jīng)驗和信心。Dev-C 5.11一個十幾年前就停止官方更新的IDE恰恰是“躺平發(fā)育”的絕佳選擇。它體積小安裝包幾十MB、綠色免安裝解壓即用、內(nèi)置了MinGW編譯器你不需要單獨配置任何環(huán)境變量。更重要的是它支持純Win32 API和古老的圖形庫如EGE、EasyX這些庫的API簡單直接沒有現(xiàn)代游戲引擎那層層疊疊的抽象讓你寫的每一行代碼都直接與屏幕上的像素、鍵盤的按鍵打交道。這種“所見即所得”的掌控感對于理解游戲底層運行機制至關重要。所以這個項目不是要教你用Dev-C開發(fā)一個商業(yè)級的游戲而是帶你用這個“老伙計”快速搭建一個可玩的游戲原型體驗從零到一的完整過程。我們會做一個類似“塔防”或“生存建造”概念的簡易版“躺平發(fā)育”玩家控制一個角色在場景中收集資源、建造防御設施抵御周期性來襲的“怪物”。整個過程我們將聚焦于游戲循環(huán)、圖形繪制、鍵盤交互、簡單碰撞檢測這些核心概念。2. 環(huán)境準備與“踩坑”指南讓小熊貓Dev-C跑起來雖然Dev-C以簡單著稱但在今天的Windows系統(tǒng)上直接使用還是會遇到一些“時代差異”導致的小問題。網(wǎng)上搜索“小熊貓dev-c安裝”的熱度恰恰說明了大家在這第一步就遇到了麻煩。別擔心跟著下面的步驟我們可以完美解決。2.1 獲取與安裝選對版本是關鍵首先絕對不要從一些莫名其妙的下載站獲取Dev-C。里面捆綁的垃圾軟件會讓你苦不堪言。推薦以下兩個可靠來源Embarcadero Dev-C這是原Dev-C項目停止后由Embarcadero公司維護更新的分支。它修復了原版在Windows 10/11上的很多兼容性問題是當前的首選。你可以去Embarcadero的官網(wǎng)或SourceForge頁面下載。Orwell Dev-C這是在原版停止更新后另一個比較活躍的維護版本也修復了大量Bug。我個人的選擇是Embarcadero Dev-C。下載下來通常是一個exe安裝包安裝過程無腦下一步即可。安裝路徑建議不要有中文和空格比如D:\Dev-Cpp這樣可以避免一些潛在的、古老編譯器可能遇到的路徑解析問題。安裝完成后打開Dev-C你可能會看到一個略顯復古的界面。先別急著寫代碼我們需要進行一項關鍵配置設置編譯器參數(shù)以支持C11標準。因為即使我們寫的是C風格代碼一些現(xiàn)代C的便利特性比如nullptr在C11下也是可用的而且這能避免一些奇怪的編譯警告。操作步驟點擊菜單欄的Tools-Compiler Options。在彈出的窗口中在Settings標簽頁下點擊Code Generation。在Language standard (-std)下拉框中選擇ISO C11。勾選底部的Add the following commands when calling the compiler并在下面的文本框中輸入-static-libgcc -static-libstdc。這兩個參數(shù)的意思是靜態(tài)鏈接C運行庫這樣編譯出來的exe文件可以獨立在沒有安裝相應運行庫的電腦上運行非常適合分享你的“游戲作品”。點擊OK保存。注意很多教程會推薦使用-stdc11但在Dev-C的圖形化界面里直接選擇ISO C11即可效果是一樣的。手動添加-static參數(shù)是制作獨立可執(zhí)行程序的必備步驟否則你的游戲在別人的電腦上可能會提示缺少libgcc_s_seh-1.dll之類的錯誤。2.2 圖形庫的選擇與配置EGE vs. EasyXDev-C本身只支持控制臺程序。我們要做圖形游戲必須借助第三方圖形庫。主流的兩個選擇是EGE (Easy Graphics Engine)和EasyX。它們都是為C/C初學者設計的圖形庫API極其相似都深受早期Turbo C圖形庫的影響。EGE開源免費更新相對活躍一些功能也更豐富一點支持透明通道、圖像旋轉(zhuǎn)等。EasyX閉源但免費用于學習文檔和社區(qū)資源可能更豐富一些在部分細節(jié)實現(xiàn)上略有不同。對于我們的“躺平發(fā)育”游戲兩者都能完美勝任。我選擇EGE來演示因為它開源且我個人更熟悉。下面是如何在Dev-C中配置EGE下載EGE搜索“EGE圖形庫”進入其GitHub倉庫或官方頁面下載開發(fā)包。通常是一個壓縮包里面包含include頭文件夾和lib庫文件夾。放置文件將下載的壓縮包解壓。找到include文件夾下的所有.h文件以及l(fā)ib文件夾下對應你編譯器位數(shù)Dev-C自帶的MinGW通常是32位的.a文件。將它們復制到Dev-C的安裝目錄下。頭文件.h復制到Dev-Cpp安裝目錄\MinGW64\x86_64-w64-mingw32\include具體路徑可能略有不同但原則是找到include文件夾。庫文件.a復制到Dev-Cpp安裝目錄\MinGW64\x86_64-w64-mingw32\lib。更“躺平”的做法很多EGE的發(fā)布包會直接提供一個ege文件夾你只需要把這個文件夾整個丟到Dev-C安裝目錄的include文件夾下即可。庫文件libgraphics.a同樣放到lib文件夾。項目鏈接設置新建一個項目File-New-Project選擇Empty Project給項目起名比如LyingFlatDev。然后你需要告訴編譯器鏈接EGE的庫。在項目管理器中右鍵你的項目名選擇Project Options。切換到Parameters標簽頁。在Linker框里點擊Add Library or Object按鈕。導航到你剛才放置庫文件的目錄lib選擇libgraphics.aEGE庫文件和libgdi32.aWindows GDI庫通常也需要鏈接。添加進去。同時在Linker框下的文本輸入?yún)^(qū)域確保有-lgraphics -lgdi32 -limm32 -lmsimg32 -lole32 -loleaut32 -lwinmm -luuid這一串參數(shù)。這是鏈接EGE所需的所有Windows系統(tǒng)庫。你可以直接復制粘貼進去。完成以上步驟環(huán)境就配置好了。你可以創(chuàng)建一個新的源文件File-New-Source File寫一個簡單的測試程序來驗證。#include graphics.h // EGE的頭文件 int main() { initgraph(640, 480); // 初始化一個640x480的圖形窗口 setcolor(EGERGB(255, 0, 0)); // 設置繪圖顏色為紅色 circle(320, 240, 100); // 在窗口中心畫一個半徑為100的圓 getch(); // 等待按鍵 closegraph(); // 關閉圖形窗口 return 0; }按F11編譯運行。如果彈出一個畫著紅圈的窗口恭喜你你的“游戲開發(fā)環(huán)境”已經(jīng)就緒這一步的順利通過意味著你已經(jīng)解決了90%初學者在“dev-c輸代碼”前遇到的障礙。3. 游戲框架搭建理解核心循環(huán)與基本結(jié)構(gòu)在開始堆砌具體的“躺平發(fā)育”游戲邏輯之前我們必須先建立起一個穩(wěn)固的游戲程序框架。這個框架是所有圖形化游戲的心臟理解了它你就掌握了游戲是如何“動”起來的。3.1 消息循環(huán)與游戲主循環(huán)Windows圖形程序是基于消息驅(qū)動的。但EGE/EasyX這類庫為我們封裝了底層消息泵提供了一個更簡單的、基于“死循環(huán)”的游戲主循環(huán)模型。這是游戲開發(fā)中最核心的概念之一。一個典型的EGE游戲主循環(huán)結(jié)構(gòu)如下#include graphics.h #include conio.h // 用于_kbhit和_getch int main() { initgraph(800, 600); // 初始化窗口 // 游戲初始化加載圖片、設置初始變量等 // ... // 游戲主循環(huán) while (true) { // 1. 處理輸入鍵盤、鼠標 if (_kbhit()) { // 檢查是否有按鍵 char key _getch(); // 根據(jù)按鍵更新游戲狀態(tài)例如移動角色 // ... } // 2. 更新游戲邏輯 // 例如更新怪物位置、檢查碰撞、計算資源增長 // ... // 3. 渲染圖形 cleardevice(); // 清空屏幕相當于每一幀都重畫 // 繪制背景、角色、怪物、UI等 // ... // 4. 控制幀率非常重要 delay_fps(60); // 嘗試將幀率穩(wěn)定在60幀/秒 } closegraph(); return 0; }讓我們拆解這個循環(huán)處理輸入在循環(huán)開始處我們檢查用戶的輸入。_kbhit()和_getch()是控制臺函數(shù)但在EGE窗口下同樣有效用于獲取鍵盤輸入。這是實現(xiàn)角色移動、建造等交互的基礎。更新邏輯這是游戲的“大腦”。所有游戲?qū)ο蟮臓顟B(tài)都在這里根據(jù)輸入和規(guī)則進行計算。比如根據(jù)按鍵移動玩家坐標讓怪物沿著路徑點移動判斷子彈是否擊中目標。渲染圖形這是游戲的“畫筆”。根據(jù)更新后的游戲狀態(tài)將一切視覺元素畫到屏幕上。切記要先cleardevice()清屏否則上一幀的畫面會殘留造成拖影??刂茙蔰elay_fps(60)是EGE提供的非常方便的函數(shù)它會自動計算并延遲使循環(huán)大約每秒運行60次。穩(wěn)定的幀率意味著游戲速度不會受電腦性能影響而忽快忽慢。沒有它你的循環(huán)會以CPU所能達到的最快速度運行游戲會快得無法控制且CPU占用率100%。3.2 為“躺平發(fā)育”設計數(shù)據(jù)結(jié)構(gòu)有了循環(huán)框架我們需要數(shù)據(jù)來描述游戲世界。對于我們的簡易游戲可以設計如下結(jié)構(gòu)// 定義一些常量 const int SCREEN_WIDTH 800; const int SCREEN_HEIGHT 600; const int GRID_SIZE 40; // 假設我們用一個網(wǎng)格來管理地圖每格40像素 // 玩家結(jié)構(gòu)體 struct Player { int x, y; // 像素坐標 int gridX, gridY; // 網(wǎng)格坐標方便計算 int health; int gold; // 游戲內(nèi)資源比如“金幣” // 可以添加更多屬性如攻擊力、背包等 }; // 建筑類型枚舉 enum BuildingType { NONE, WALL, TOWER, RESOURCE_GENERATOR }; // 建筑結(jié)構(gòu)體 struct Building { BuildingType type; int gridX, gridY; int level; int buildProgress; // 建造進度用于表現(xiàn)建造過程 // 塔會有攻擊力、射程等屬性 }; // 怪物結(jié)構(gòu)體 struct Monster { int x, y; int health; int speed; int pathIndex; // 當前所在路徑點的索引 // 路徑點數(shù)組假設有一條預設的進攻路徑 };實操心得在項目初期不要過度設計數(shù)據(jù)結(jié)構(gòu)。先用最簡單的變量比如全局變量playerX, playerY把核心玩法跑通。當發(fā)現(xiàn)代碼變得混亂時再逐步抽象成結(jié)構(gòu)體或類。對于“躺平發(fā)育”這種小型項目使用全局變量和結(jié)構(gòu)體數(shù)組是完全可以接受的這符合“躺平”快速迭代的精神。3.3 實現(xiàn)基礎繪制與輸入現(xiàn)在讓我們把框架、數(shù)據(jù)和繪制結(jié)合起來實現(xiàn)一個可移動的“玩家”方塊。#include graphics.h #include conio.h Player player; bool isRunning true; void initGame() { player.x SCREEN_WIDTH / 2; player.y SCREEN_HEIGHT / 2; player.health 100; player.gold 50; } void updateGame() { // 輸入處理可以放在這里也可以放在主循環(huán)里。為了模塊化我們放在這。 // 但注意EGE沒有提供完美的實時鍵盤狀態(tài)檢測我們通常在主循環(huán)里用_kbhit處理。 // 這里先留空邏輯更新稍后補充。 } void renderGame() { cleardevice(); // 關鍵清屏 // 1. 繪制背景例如一個簡單的網(wǎng)格 setcolor(EGERGB(100, 100, 100)); // 灰色網(wǎng)格線 for (int i 0; i SCREEN_WIDTH / GRID_SIZE; i) { line(i * GRID_SIZE, 0, i * GRID_SIZE, SCREEN_HEIGHT); } for (int j 0; j SCREEN_HEIGHT / GRID_SIZE; j) { line(0, j * GRID_SIZE, SCREEN_WIDTH, j * GRID_SIZE); } // 2. 繪制玩家一個填充方塊 setfillcolor(EGERGB(0, 255, 0)); // 綠色填充 setcolor(EGERGB(0, 200, 0)); // 深綠色邊框 fillrectangle(player.x - 15, player.y - 15, player.x 15, player.y 15); // 3. 繪制UI金幣和血量 setcolor(WHITE); char info[64]; sprintf(info, Gold: %d HP: %d, player.gold, player.health); outtextxy(10, 10, info); } int main() { initgraph(SCREEN_WIDTH, SCREEN_HEIGHT); initGame(); while (isRunning) { // 處理輸入 - 使用方向鍵移動玩家 if (_kbhit()) { char key _getch(); // _getch()對于方向鍵會返回兩個值第一個是0或224 if (key 0 || key 224) { key _getch(); // 獲取第二個值這才是方向鍵的掃描碼 switch (key) { case 72: player.y - GRID_SIZE; break; // 上 case 80: player.y GRID_SIZE; break; // 下 case 75: player.x - GRID_SIZE; break; // 左 case 77: player.x GRID_SIZE; break; // 右 } // 簡單邊界檢查 if (player.x 15) player.x 15; if (player.x SCREEN_WIDTH - 15) player.x SCREEN_WIDTH - 15; if (player.y 15) player.y 15; if (player.y SCREEN_HEIGHT - 15) player.y SCREEN_HEIGHT - 15; } else if (key 27) { // ESC鍵退出 isRunning false; } } updateGame(); // 目前是空的后續(xù)補充游戲邏輯 renderGame(); // 繪制 delay_fps(60); } closegraph(); return 0; }編譯運行這個程序你應該能看到一個帶網(wǎng)格的背景一個可以用方向鍵控制的綠色方塊以及左上角顯示的金幣和血量。至此一個最基礎的游戲引擎框架和可視化交互就完成了。這已經(jīng)是一個“可玩”的雛形雖然它現(xiàn)在還什么都沒做但所有擴展都將基于這個穩(wěn)固的循環(huán)。4. 核心玩法實現(xiàn)建造、資源與怪物現(xiàn)在我們有了一個可以移動的“主角”。接下來我們要為這個世界注入靈魂資源系統(tǒng)、建造系統(tǒng)和敵人系統(tǒng)。這才是“躺平發(fā)育”游戲性的核心。4.1 資源生成與收集邏輯資源是驅(qū)動游戲進程的血液。我們設計一種最簡單的形式地圖上隨機生成資源點比如金幣玩家靠近即可自動收集。首先我們需要一個資源點的結(jié)構(gòu)體和數(shù)組來管理它們struct ResourceNode { int x, y; bool isActive; int value; // 這個資源點提供的金幣數(shù) }; const int MAX_RESOURCES 20; ResourceNode resources[MAX_RESOURCES]; void initResources() { for (int i 0; i MAX_RESOURCES; i) { resources[i].isActive false; // 初始全部無效 } } void spawnResource() { // 隨機在地圖上生成一個資源點 for (int i 0; i MAX_RESOURCES; i) { if (!resources[i].isActive) { resources[i].x rand() % (SCREEN_WIDTH - 30) 15; resources[i].y rand() % (SCREEN_HEIGHT - 30) 15; resources[i].isActive true; resources[i].value 10 rand() % 20; // 10-29金幣 break; // 一次只生成一個 } } } void updateResources() { // 檢查玩家與所有資源點的碰撞收集 for (int i 0; i MAX_RESOURCES; i) { if (resources[i].isActive) { // 簡單矩形碰撞檢測 int dx player.x - resources[i].x; int dy player.y - resources[i].y; int distanceSquared dx * dx dy * dy; // 假設玩家和資源點都是半徑為15的圓 if (distanceSquared (15 15) * (15 15)) { player.gold resources[i].value; resources[i].isActive false; // 收集后消失 } } } // 每隔一段時間生成一個新資源點簡單計時器實現(xiàn) static int spawnTimer 0; spawnTimer; if (spawnTimer 180) { // 假設60幀每秒即3秒生成一個 spawnResource(); spawnTimer 0; } } void renderResources() { setfillcolor(EGERGB(255, 255, 0)); // 黃色金幣 for (int i 0; i MAX_RESOURCES; i) { if (resources[i].isActive) { // 畫一個簡單的圓形代表金幣 fillellipse(resources[i].x, resources[i].y, 10, 10); } } }在initGame中調(diào)用initResources()和spawnResource()初始生成幾個。在updateGame函數(shù)中調(diào)用updateResources()在renderGame函數(shù)中調(diào)用renderResources()在繪制玩家之后UI之前?,F(xiàn)在你的綠色方塊靠近黃色圓點時金幣數(shù)就會增加4.2 建造系統(tǒng)從選擇到放置建造是“躺平發(fā)育”的核心策略。我們需要實現(xiàn)一個建造模式按下某個鍵比如‘B’進入建造模式選擇建筑類型墻、塔然后在網(wǎng)格上預覽并放置。Building buildings[100]; // 假設地圖上最多100個建筑 int buildingCount 0; bool isBuildingMode false; BuildingType selectedBuildingType WALL; int previewGridX -1, previewGridY -1; // 預覽建筑的網(wǎng)格坐標 void handleBuildingInput() { if (_kbhit()) { char key _getch(); if (key b || key B) { isBuildingMode !isBuildingMode; // 切換建造模式 if (!isBuildingMode) { // 退出建造模式時清除預覽 previewGridX previewGridY -1; } } if (isBuildingMode) { // 在建造模式下用數(shù)字鍵選擇建筑類型 if (key 1) selectedBuildingType WALL; else if (key 2) selectedBuildingType TOWER; // 鼠標交互EGE獲取鼠標狀態(tài) mouse_msg msg {0}; while (mousemsg()) { msg getmouse(); } if (msg.is_move() || msg.is_down()) { // 將鼠標坐標轉(zhuǎn)換為網(wǎng)格坐標 previewGridX msg.x / GRID_SIZE; previewGridY msg.y / GRID_SIZE; // 鼠標左鍵按下放置建筑 if (msg.is_left() msg.is_down()) { // 檢查該網(wǎng)格是否已被占用 bool canPlace true; for (int i 0; i buildingCount; i) { if (buildings[i].gridX previewGridX buildings[i].gridY previewGridY) { canPlace false; break; } } // 檢查金幣是否足夠假設墻50金塔150金 int cost (selectedBuildingType WALL) ? 50 : 150; if (canPlace player.gold cost) { buildings[buildingCount].type selectedBuildingType; buildings[buildingCount].gridX previewGridX; buildings[buildingCount].gridY previewGridY; buildings[buildingCount].level 1; buildings[buildingCount].buildProgress 0; buildingCount; player.gold - cost; } } } } } } void updateBuildings() { for (int i 0; i buildingCount; i) { // 更新建筑建造進度 if (buildings[i].buildProgress 100) { buildings[i].buildProgress 2; // 每幀增加2% if (buildings[i].buildProgress 100) buildings[i].buildProgress 100; } // 可以在這里添加塔的攻擊邏輯如果建筑是塔且已建成 if (buildings[i].type TOWER buildings[i].buildProgress 100) { // ... 遍歷怪物數(shù)組尋找目標發(fā)射子彈等 } } } void renderBuildingsAndPreview() { // 繪制已放置的建筑 for (int i 0; i buildingCount; i) { int pixelX buildings[i].gridX * GRID_SIZE GRID_SIZE / 2; int pixelY buildings[i].gridY * GRID_SIZE GRID_SIZE / 2; color_t buildingColor; switch (buildings[i].type) { case WALL: buildingColor EGERGB(139, 69, 19); break; // 棕色 case TOWER: buildingColor EGERGB(70, 130, 180); break; // 鋼藍色 default: buildingColor WHITE; } setfillcolor(buildingColor); // 如果還在建造用半透明色或根據(jù)進度繪制 if (buildings[i].buildProgress 100) { setfillcolor(EGERGB(100, 100, 100)); // 灰色表示在建 // 可以畫一個進度條 int progressWidth (GRID_SIZE - 4) * buildings[i].buildProgress / 100; bar(pixelX - GRID_SIZE/2 2, pixelY - GRID_SIZE/2 2, pixelX - GRID_SIZE/2 2 progressWidth, pixelY GRID_SIZE/2 - 2); } fillrect(pixelX - GRID_SIZE/2 2, pixelY - GRID_SIZE/2 2, pixelX GRID_SIZE/2 - 2, pixelY GRID_SIZE/2 - 2); } // 繪制建造模式下的預覽 if (isBuildingMode previewGridX 0 previewGridY 0) { int previewPixelX previewGridX * GRID_SIZE GRID_SIZE / 2; int previewPixelY previewGridY * GRID_SIZE GRID_SIZE / 2; setlinewidth(2); color_t previewColor (selectedBuildingType WALL) ? EGERGB(160, 82, 45) : EGERGB(100, 149, 237); setcolor(previewColor); // 畫一個半透明的矩形作為預覽 setfillcolor(EGERGB(previewColor.red, previewColor.green, previewColor.blue, 128)); // ARGB顏色128是半透明 fillrect(previewPixelX - GRID_SIZE/2 2, previewPixelY - GRID_SIZE/2 2, previewPixelX GRID_SIZE/2 - 2, previewPixelY GRID_SIZE/2 - 2); setlinewidth(1); } }將handleBuildingInput整合到主循環(huán)的輸入處理部分放在_kbhit判斷里注意處理按鍵沖突。在updateGame中調(diào)用updateBuildings在renderGame中調(diào)用renderBuildingsAndPreview在繪制資源點之后UI之前?,F(xiàn)在你按下B鍵就可以用鼠標預覽并放置墻和塔了4.3 怪物系統(tǒng)路徑點與簡單AI沒有敵人的“發(fā)育”是孤獨的。我們來創(chuàng)建一些沿著固定路徑進攻的簡單怪物。struct Monster { float x, y; // 使用浮點數(shù)讓移動更平滑 int health; float speed; int pathIndex; bool isActive; }; const int MAX_MONSTERS 50; Monster monsters[MAX_MONSTERS]; // 假設一條簡單的進攻路徑一系列屏幕坐標點 POINT monsterPath[] { {50, 50}, {400, 50}, {400, 400}, {700, 400}, {700, 200} }; const int PATH_POINT_COUNT sizeof(monsterPath) / sizeof(monsterPath[0]); void spawnMonster() { for (int i 0; i MAX_MONSTERS; i) { if (!monsters[i].isActive) { monsters[i].x (float)monsterPath[0].x; monsters[i].y (float)monsterPath[0].y; monsters[i].health 30; monsters[i].speed 0.5f (rand() % 10) / 20.0f; // 0.5 ~ 1.0 的速度 monsters[i].pathIndex 1; // 目標點是路徑上的下一個點 monsters[i].isActive true; break; } } } void updateMonsters() { for (int i 0; i MAX_MONSTERS; i) { if (!monsters[i].isActive) continue; // 獲取當前目標路徑點 int targetIdx monsters[i].pathIndex; float targetX (float)monsterPath[targetIdx].x; float targetY (float)monsterPath[targetIdx].y; // 計算朝向目標的向量 float dx targetX - monsters[i].x; float dy targetY - monsters[i].y; float distance sqrt(dx * dx dy * dy); // 如果已經(jīng)非常接近目標點則切換到下一個點 if (distance monsters[i].speed) { monsters[i].pathIndex; // 如果走完了所有路徑點怪物到達終點對玩家造成傷害 if (monsters[i].pathIndex PATH_POINT_COUNT) { player.health - 5; // 扣血 monsters[i].isActive false; // 怪物消失 continue; } // 更新目標點 targetIdx monsters[i].pathIndex; targetX (float)monsterPath[targetIdx].x; targetY (float)monsterPath[targetIdx].y; dx targetX - monsters[i].x; dy targetY - monsters[i].y; distance sqrt(dx * dx dy * dy); } // 向目標點移動 if (distance 0) { monsters[i].x (dx / distance) * monsters[i].speed; monsters[i].y (dy / distance) * monsters[i].speed; } // 簡單碰撞檢測怪物與墻這里僅作示例實際需要更精細的網(wǎng)格碰撞 for (int j 0; j buildingCount; j) { if (buildings[j].type WALL buildings[j].buildProgress 100) { int buildingCenterX buildings[j].gridX * GRID_SIZE GRID_SIZE / 2; int buildingCenterY buildings[j].gridY * GRID_SIZE GRID_SIZE / 2; float mdx monsters[i].x - buildingCenterX; float mdy monsters[i].y - buildingCenterY; if (mdx * mdx mdy * mdy (GRID_SIZE/2 10) * (GRID_SIZE/2 10)) { // 簡單處理讓怪物稍微彈開或停止這里簡化僅停止 // 更復雜的可以尋路繞開 monsters[i].x - (dx / distance) * monsters[i].speed; monsters[i].y - (dy / distance) * monsters[i].speed; } } } } // 怪物生成計時器 static int monsterSpawnTimer 0; monsterSpawnTimer; if (monsterSpawnTimer 300) { // 5秒生成一個 spawnMonster(); monsterSpawnTimer 0; } } void renderMonsters() { setfillcolor(EGERGB(255, 0, 0)); // 紅色怪物 for (int i 0; i MAX_MONSTERS; i) { if (monsters[i].isActive) { fillellipse((int)monsters[i].x, (int)monsters[i].y, 12, 12); // 可以畫一個簡單的血條 setfillcolor(GREEN); int healthBarWidth 20 * monsters[i].health / 30; bar((int)monsters[i].x - 10, (int)monsters[i].y - 20, (int)monsters[i].x - 10 healthBarWidth, (int)monsters[i].y - 15); setfillcolor(EGERGB(255, 0, 0)); } } }同樣在initGame中初始化怪物數(shù)組在updateGame中調(diào)用updateMonsters在renderGame中調(diào)用renderMonsters順序建議在建筑之后UI之前?,F(xiàn)在紅色的怪物會沿著預設的黃色路徑點你可以在renderGame里畫出來向終點移動撞擊終點會扣減玩家血量它們還會嘗試繞過你建造的墻雖然現(xiàn)在的碰撞處理很簡陋。5. 打磨與優(yōu)化讓游戲更像樣現(xiàn)在我們的游戲已經(jīng)有了核心玩法循環(huán)移動、收集、建造、防御。但它還很粗糙。下面進行一些關鍵的打磨讓體驗更完整。5.1 游戲狀態(tài)管理與勝負判定一個完整的游戲需要有開始、運行、結(jié)束的狀態(tài)。我們添加一個簡單的游戲狀態(tài)機。enum GameState { MENU, PLAYING, GAME_OVER }; GameState currentState MENU; void renderMenu() { cleardevice(); setcolor(YELLOW); setfont(48, 0, 黑體); outtextxy(SCREEN_WIDTH/2 - textwidth(躺平發(fā)育)/2, 100, 躺平發(fā)育); setfont(24, 0, 宋體); outtextxy(SCREEN_WIDTH/2 - textwidth(按 Enter 鍵開始游戲)/2, 300, 按 Enter 鍵開始游戲); outtextxy(SCREEN_WIDTH/2 - textwidth(按 ESC 鍵退出)/2, 350, 按 ESC 鍵退出); } void updateGameLogic() { // 原來的updateGame改名為這個 if (currentState ! PLAYING) return; updateResources(); updateBuildings(); updateMonsters(); // 勝負判定 if (player.health 0) { currentState GAME_OVER; } // 可以添加勝利條件例如堅守一定波數(shù) } void renderGameScene() { // 原來的renderGame改名為這個 cleardevice(); // 繪制網(wǎng)格背景、資源、建筑、怪物、玩家、UI... // ... (將所有之前的render函數(shù)調(diào)用整合到這里) renderResources(); renderBuildingsAndPreview(); renderMonsters(); // 繪制玩家 setfillcolor(EGERGB(0, 255, 0)); fillrectangle(player.x - 15, player.y - 15, player.x 15, player.y 15); // 繪制UI setcolor(WHITE); char info[128]; sprintf(info, Gold: %d HP: %d State: %s, player.gold, player.health, isBuildingMode ? BUILDING (1:Wall 2:Tower) : NORMAL (B:Toggle Build)); outtextxy(10, 10, info); } void renderGameOver() { cleardevice(); setcolor(RED); setfont(48, 0, 黑體); outtextxy(SCREEN_WIDTH/2 - textwidth(游戲結(jié)束)/2, 200, 游戲結(jié)束); setfont(24, 0, 宋體); char scoreMsg[64]; sprintf(scoreMsg, 最終金幣: %d, player.gold); outtextxy(SCREEN_WIDTH/2 - textwidth(scoreMsg)/2, 300, scoreMsg); outtextxy(SCREEN_WIDTH/2 - textwidth(按 R 鍵重新開始)/2, 350, 按 R 鍵重新開始); } // 主循環(huán)需要重構(gòu)成這樣 while (isRunning) { // 輸入處理需要根據(jù)狀態(tài)分發(fā) if (_kbhit()) { char key _getch(); if (currentState MENU) { if (key 13) { // Enter initGame(); // 重置游戲數(shù)據(jù) currentState PLAYING; } else if (key 27) { isRunning false; } } else if (currentState PLAYING) { // ... 原有的游戲內(nèi)輸入處理移動、建造等 if (key 27) currentState MENU; // 游戲中按ESC回菜單 } else if (currentState GAME_OVER) { if (key r || key R) { initGame(); currentState PLAYING; } else if (key 27) { currentState MENU; } } } // 更新與渲染 if (currentState PLAYING) { updateGameLogic(); } // 根據(jù)狀態(tài)渲染不同場景 switch (currentState) { case MENU: renderMenu(); break; case PLAYING: renderGameScene(); break; case GAME_OVER: renderGameOver(); break; } delay_fps(60); }5.2 性能優(yōu)化與代碼組織隨著游戲?qū)ο笤龆嗄銜l(fā)現(xiàn)幀率下降。優(yōu)化是必須的。避免在循環(huán)中頻繁創(chuàng)建/銷毀對象我們使用的固定大小的數(shù)組resources[MAX_RESOURCES]就是一種對象池的雛形這比頻繁new/delete或malloc/free高效得多。減少不必要的繪制目前我們每一幀都清屏并重畫所有元素cleardevice。對于這種像素不多的小游戲完全夠用。但如果元素非常多可以考慮臟矩形渲染只更新變化的部分。不過在Dev-C和EGE環(huán)境下cleardevice的開銷通??梢越邮堋4a模塊化將不同功能的代碼分到不同的.cpp和.h文件中。例如創(chuàng)建game.h聲明全局變量和函數(shù)player.cpp、building.cpp、monster.cpp、resource.cpp分別實現(xiàn)各自的對象邏輯main.cpp只負責主循環(huán)和狀態(tài)調(diào)度。這會讓代碼更易讀、易維護。在Dev-C中你只需要在項目中添加這些源文件即可。5.3 音效與圖像進階EGE支持播放wav格式音效和加載bmp,jpg,png等格式圖片。音效使用mciSendString函數(shù)需要#include windows.h和#pragma comment(lib, winmm.lib)可以播放背景音樂和音效。圖像使用PIMAGE類型和newimage(),getimage(),putimage()等函數(shù)可以加載并顯示圖片讓你的游戲畫面更精美。例如替換掉用fillrectangle畫的玩家改用一張精靈圖PIMAGE imgPlayer newimage(); getimage(imgPlayer, player.bmp); // 假設有一張60x60的玩家圖片 // 在渲染玩家時 putimage(player.x - 30, player.y - 30, imgPlayer);踩坑提示圖片路徑問題。確保圖片文件放在你的項目.dev文件所在的目錄或者使用絕對路徑。加載失敗時getimage不會報錯但會顯示一片黑色。另外復雜的圖像操作如圖像旋轉(zhuǎn)、縮放在EGE中性能開銷較大在小游戲中需謹慎使用。至此一個功能相對完整的“躺平發(fā)育”游戲原型就完成了。從零開始我們只用了一個輕量級的Dev-C和EGE圖形庫就實現(xiàn)了游戲的核心循環(huán)、圖形渲染、鍵盤鼠標輸入、對象管理、碰撞檢測、狀態(tài)機等關鍵概念。這個過程本身就是一種高效的“躺平發(fā)育”——避開復雜引擎的沉重直擊游戲創(chuàng)作樂趣的核心。你可以在此基礎上繼續(xù)擴展給塔添加攻擊子彈、設計不同的怪物波次、加入更多建筑類型和科技樹、甚至實現(xiàn)一個簡單的存檔系統(tǒng)。最重要的是你擁有了一個完全由自己代碼驅(qū)動的、可任意修改的游戲世界這份成就感是使用現(xiàn)成引擎拖拽組件難以比擬的。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
国产无码一二三区| 国产成人网址| 操逼逼无码| 久久久艹艹艹| 无遮挡一级毛片视频免费的| 亚洲中字慕不卡| 精品国产91内射久久| 丁香五月激情综合| 天天色踪合| 秋霞一级A片黄色视频| 色五月婷婷网| 九九九九精品精| 免费黄色A片| 夜夜嗨一区二区三区三州加勒比| 性开放中文AV高清无码免费看| 蜜臀精品1区2区| 日韩97P| 激情啪啪拍91| 亚洲综合69| 在线亚洲 欧美 日本专区 | 亚洲一区日韩精品中文字幕| 97超级久久强资源| 9Ⅰ老熟女| 日韩操人| a'v在线资源| 狠狠五月天| 992视频一区| 中文字幕性感少妇av| 在线五区| 800zy一区二区| 欧美性夜| 精品大久久| 国产免费黄色一级大片| 青青草在线成人视频| juliaann欧美丝袜办公室| 婷婷综合激情| 极品欧美一区二区三区| 久操精品| 91美女在线视频| 日本操逼视频不卡直接放| 18禁久极品美女久久哦哟呀!| 久久九九视频九九视频| 加勒比性爱成人在线| 日韩欧美中文日韩欧美色| 蜜屁Av| 色综合九九| 色区97| 97综合在线观看| 老子午夜伦不卡影院| 色狠人在线99| 久久久久国产精品喷潮免费观看臀 | 久久婷婷亚洲| 日本性爱欧美性爱| 亚洲,欧美,综合网| 麻豆视频test| 欧美组图日韩亚洲中文字幕| 高跟伊人julia ann| 精品成人无码| 九t超碰| 成人精品视频一区二区| 丝袜剧情| 蜜臀中文字幕| 色综合99999| 先锋精品av色鲁| 亚洲色图亚洲| 91色射| 亚洲日韩视频二区| 抽查国产福利主播| 日韩免费av片高清无码| 爱爱动态120秒| 99久久综合| 97伦综合| 亚洲中文字幕熟女| 久久人妻少妇| 亚洲欧美清纯| 超碰成人公开| 极品白嫩福利在线| 亚洲高清视频在线免费观看| 婷婷激情综合网| 亚洲伊人青青草| 91色艳| www.av在线视频| 亚洲色电影在线| 97在线观看免费视频l| 青青操轻轻| 国产91亚洲精品一区二区三区| 91天天爱| 尤物av网站| 亚洲综合中文字幕有码| 国产 亚洲 一二三四| 吊色| 91天美传媒在线观看| 特级毛片特黄久久免费看| 97日韩超碰超碰中文字幕| 亚洲污污网站| 亚洲丝袜天堂| 久久人妻视频网| 艹精品| 天堂性色| 欧美小说区视频区| 91激情综合| 嗯嗯,啊啊,国产精品| 黄网在线播放| 蜜乳AV一区二区三区四| 自拍偷拍第26| 乱伦熟女论坛| 日本影视久久免费| 五月天婷婷社区| 91美女視頻| 日日橹狠狠爱欧美超碰| 国产视频一区二区三区久久亚洲天堂| 五月婷视频| 911粉嫩人妻| 日韩综合成人免费视频| 精品国产乱码久久| 国产色产精品在线观看| 大奶的诱惑| 九九九九一区| 不卡六六在线91| 久久综合av| 精彩国产视频播放1区2区| 丁香五月天堂网| 国产 v乱码一区二| 久久激情亚洲精品无码?V| 久草尤物| av在线免费一区二区| 澳门黄片一香蕉视频| 蜜臀一区二区三区在线| 亚洲欧美综合| 久久久久久九| 日韩免费一级性爱视频| 2017人人操,人人摸| 九九视频黄色片| 欧美日本成人一区二区| a片 xxxx受爽视频| 91性感在线| 中文字幕视频二区| 国产精品久久久久久久久久久久久久吹 | 超碰在线欧美性爱激情| 国产肏逼网站| 中日韩免费看男女操逼大全| 在线观看一级α片刺激高潮视频| 免费福利视频中文字幕| 日韩性爱视频在线免费观看 | 一区二区三区免费岛国片| 6080YYY午夜理论片在线观看| 国产成人超碰在线| 放黄片放3级黄片没穿衣服| 欧美日韩资源| 无码高清操逼网址| 在线强奷到舒服的无码视频| 色综合九九| 久久婷婷精品| 久久久亚洲精品电影免费看| 午夜福利久久久噜久噜久久综合 | 人妻黑丝袜电影| 精品一区99999| 欧美美逼| a级免费在线观看| 综合影院永久入口国产| 久久久久人妻二区精品叶可怜| 成年人三级黄色片视频| 欧洲一级性爱视频在线观看| 玖玖97综合| 天无日色综合| 熟妇国产免费一区| 大色综合| 久草网站免费在线观看| 无码9区| 亚洲网自拍| 久久一本大香蕉 | 一起草在线视频| 偷拍 欧美 日韩| 草草影院最新网址| www.av在线观看| 蜜臀av在线播放一区二区三区| 色好看av| 99超碰碰| 狠狠操夜夜| 久久婷婷六月综合| 亚洲91网。| 四虎影视永久在线观看精品免费网站 | AV天堂电影网| 天天内射| 91久精品| 鸥美极品| 9Ⅰ老熟女| 国产精品久久久久综合| 国产精品久久久视频| 校园春色亚洲无码| 91亚洲影视| 亚洲AV噜噜狠狠网址蜜桃动漫| 久久97| 欧美在线大香蕉| 色九九久九九| 精品亚洲国产成人精品| 日本一二区免费| 欧美色图在线视频少妇| 欧美日韩插逼视频| 狠狠久久亚洲欧美专区| 久操影视| 一级岛国大片| 大胆91| 久久AV无码1区2区3区| 亚洲熟妇白浆无码AV| 极品色| 色婷网| 精品久久久久久久久久久久| 超碰九7免费| 乱伦1色页| 色噜噜人妻av 中文字幕| 91伊人久久在线| a片久久久久久久久久久久 | 干我久操| 欧美日韩淫加| 夜夜嗨视频| 久9视频| 啊啊啊啊二区好大| 加勒比综合| 久久性视频| 精彩久久中文| 中文字幕一区二区三区字幕| 精品视频123区小说区| 黄色一区三区| 国产乱人伦AVA麻豆软件.| 精品人妻一区二区免费蜜桃| 色图综合网| 自拍鲍鱼一区在线高清观看免费| 99re热| ..日韩av毛片精品久久久| 欧亚不卡| 熟妇xxxxx性春色| 亚洲欧洲小说图片视频 | 在线观看无码三级少妇| 第四色亚洲色图| 大色综合| 中文字幕乱碼在线| 黄色视频高清无码网站| 99国内精品| 99热| 青青青国产| 日韩av无码网站| 亚洲91av| 亚洲精品国产专区在线观看| 青青伊人久久| 女人喷水视频在线观看| 国产丁香精品露脸视频| 国产大学生高潮在线播放 | 亚洲图片小说欧洲| 涩五月婷婷| 操熟女91| 精品少妇一区二区三区免费观看| 欧美超碰在线| av情色影音| 欧美精品精品一区二区| 久插综合| 亚洲成人美女无吗| 欲香欲色综合天天伊人| 操九九九九九九| 欧美一区二区三区不卡高清视频| 神马久久久久久久久久久久| 欧美日韩不卡a片| 久久久久无码一妻区| 国产成人一级av88| 变态另类专区| 亚洲欧美性生活| 国产在线观看91精品一区| 亚州精品丝袜-不卡成人免费| 13小男生GAY自慰脱裤子| 欧美一二三区四五区| 亚洲精品一区二区精品| 狠狠躁天天躁日日躁97| 欧美日韩91| 欧洲色| 欧美色蜜桃97| 丰满少妇一区二区三区四区观看| 大香蕉www.超碰| 精品二区三四区五电影| 综合欧美日本三级| 欧美综合91| 欧美日本天堂| 激情专区综合| 一级片视频啪啪| 亚洲射综合网| 日韩性爱网址| 美国日韩黄片| 美女丝袜激情小说| 日本熟妇熟色97一本在线观看| 懂色中文一区二区三区| 夜夜无码| 97精品视频免费| 天天做日日做天天欢。| 久久精品一区二区一8| 亚洲天堂人人妻| 99综合视频一体| 一个人免费视频观看在线WWW | 91中出视频| 安徽熟妇视频| 日本天天色| 乱操乱伦AV| 人妻激情视频| 在线观看AV片| 手机不卡视频不卡在线一二三区| 加勒比在线视频一区二区三区| 亚洲丝袜二区在线| 91网站视频在线观看| 91精品黄在线观看| 乱伦1色页| 亚洲一区二区AV| 男人天堂综合| 乱日视频| 激情婷婷五月天| 秋霞久久亚洲精品成人| 92久久| 91精品久久久久久77777| 日韩欧美成人大香蕉| 黄片直播三级黄片两女一男| 日韩99精品视频综合区| 五月亭亭六月丁香| 91性网| 欧美影音在线| 热天堂一区二区| 99热久| 爆操无码| 亚洲 小说 欧美 激情 另类| 久久这里只有精品9| 大但人体久久久久| 99热日| 国产天天看| 91亚洲黑人| 超碰人人妻| 啊视频在线| 亚洲第一狼人丝袜美女另类| 18啪啪手机免费性爱| 久久狠狠色噜噜狠狠狠狠97| 亚洲资源站| 国产suv精品一区二六| 夜夜骑天天燥| 99精品伊人| 91jk色拍| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 牛牛久久国产精品视频一二三| 极品丝袜无码| 亚洲综合色婷婷| 九九无码视频| 国产亚洲国产超碰| 国产小u女在线观看| 伊人久久大香大香线蕉中文| 久草免费在线一区二区| 新版天堂中文资源8在线| AV无码久久久精品| 日本 欧美 国产一区| 欧色性第一页| 久草在| 欧美少妇高潮久久91| 白丝jkav| 日日黄色三级网站| 中文久久96| 手机av亚洲丝袜美腿日韩第一页二页| 60秒免费视频| 欧美色图小说综合| 国产精品午夜福利| 亚洲毛片久久| 操国产逼| 操逼片国产| 亚洲高清无码在线桃色| 亚洲无码久久久久久久| 再深点灬舒服灬太大了好硬好爽| 丁香五月自拍| 插入综合网| 韩国一级做A片免费的| 97超碰超碰| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 夜夜操一区二区| 熟女乱伦二区| 91oumei| 插入综合网| 欧美天天综| 乱欲性色| 男女国产精品| 天天懆天天日| 亚洲第一成人影院色播| 亚洲va综合va国产va中文| 亚洲日本成人动漫| 欧美中文字幕一区| 狠狠操狠狠燥| 久久久9999| 久久精品人人做人人看| 午夜120视频在线观看| 欧美劲爆视频一区二区| 色五月综合| 欧美专利1区2区3区4区5区免费| 日韩成人大片一区二区| 97色冈| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 超碰国产情侣自拍网| 激情色播| 吻戏激情性巴克| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 亚洲一卡2卡3卡4卡乱码网站| 亚洲精品黄码久久久久| 目产99999久久999| 67194无码不卡| 日本超碰97日韩精品人妻| 精品女同一区| 黄色片A级一区二区三区| 日本在线不卡v二区| 精品一区二区人妖| 中文字幕 国产 精品| 色婷婷五月综合激情中文字幕| 亚洲大胆人体av| 超碰精品日韩欧美国产| 五月天久久婷婷亚洲 | 九热中文字幕| 中文字幕精品人妻丝袜| JuliaAnnXXX888| 欧美淫乱视频| 久久性爱精品一区| 中文字幕熟女人妻丝袜丝| 99re不伦| 91大神电影天堂| 天堂中文日本在线观看| 美女淫穴| 99久久99九九99九九九| 加勒比在线观看一区二区| 五月丁香六月婷| 色超碰综合| 精品国产乱码久久久久久久久久毛片| 成人麻豆av电影网站| 天美麻豆精品视频99| 天天干夜夜肏| 日韩无码操逼片| 91狠狠综合久久久久久| 91亚洲最新在线| 波多野结衣先锋影音| 观看免费区二区三区二| 国产97av| 日韩少妇一区二区三区| 亚州 综合 色图| 亚洲欧美日韩偷拍色图| 久久婷色| 91痴汉| 激情无码日韩| 久插综合| 黄色人人| 超碰在线97国产| 国内毛片热久久思思热| 久热婷婷| a天堂视频| 麻豆影音天美视频| 2019精品国产无码成人| 亚洲永久AV无码精品秋霞| 免费视频一二三区| 久久久久免费少妇| nuu12国产麻豆精品| 操操操五月天婷婷丁香影院| 高清不卡一二三区视频......| 亚洲国产精品无石码久久 | 午夜爽爽爽| 五月丁香六月婷| 九九九九热只有精品| 日韩乱插| 天天影视综合色| 探花激情视频| 婷婷激情丁香| 操逼网免费无码视频| 夜草欧美| 操我无码| AV在线播放网址| 日本中文字幕在线电影| 男人的天堂com| 熟女精品一区二区三区| 麻豆成人AV| 中文无码一二三区| 亚洲影院成人| 禁十八久久| AA级电影三区| 日韩欧美天天爽爽爽天天爽爽| 精品亚洲国产成人精品| 性欧美| hd成人一区二区在线| 一本色道久久综合狠狠操| 日本黄 R色 成 人网站| 国产中文字幕在线观看| 五月丁香色色网| 亚洲情色视频| 天天享受天天看| 日韩精品碰碰| 欧美综色欧| 六月婷婷色综合| 加勒比综合网| 亚洲熟女乱综合一区二区三区| 精品v日韩欧美国产| 激情婷婷丁香网| 啊啊啊啊一区| 国产精品人人爽人人做可爱福利| 夜夜做夜夜爽精品视频| 丰满人妻-区二区三区免费| 久久久久久久强迫| 中文字幕一区二区三四五区日日骚| 国产精品自在线发布| 欧美亚洲系列| 精品国产91久久久久久一区黄无| 精品区国产区一区二区三区| 精品久| 亚洲天天影视综合网| 亚洲AV操| 黑人猛交| 九九超碰综合网| 日本久操视频| 久久av成人无码免费| 精产品久久| 久久天天躁日日躁狠狠躁| 亚洲综合中文字幕有码| 国产精品电影大全| 亚洲精品人伦一区二区| 久久精品亚洲婷婷| 偷拍自拍在线视频观看| 亚洲 暴爽 AV人人爽日日碰| 色阁阁AV综合网| 精品久久久无码| 可以免费观看的日韩av毛片| 干超碰碰熟女| 97操综合| 久久久久久久久久久久黄色| 色婷婷九月天天综合| 人妻少妇精品久久久久久久| 嗯嗯啊啊好大好爽| 97天天操| 热的中文 热的有码 热的国产| 操狠狠| 成人免费不卡在线视频| 国产精品久久久久久久久久久久| 老鸭窝日丰县女人| 精品久久久久久久久久久久| 狂操嫩妻视频一区二区三区| 五十路六十路七十路熟婆| 208天天久久九九九| 91在线限制级| 乱伦系列一区二区| 国产日韩在线播放av| 一本久道久久综合狠狠爱一密臀精| 久久精品国产精品| 国产美女激情| 9999伦理视频| 亚洲色图激情小说| 五月丁香狠狠爱| 久久无码成人| 岛国片在线播放| 91人妻少妇| a啊啊啊啊啊啊啊啊一区二区| 97色涩| 蜜臀亚洲中文| 美女露胸露屁股| 熟妇熟女视频一区二区三区| 国产精品自产拍在线观看社区| 国产精品成人无码a v毛片| 久久狠狠色噜噜狠狠狠狠97| 上床不卡网站| 麻豆黄四叶草网站| 不卡超碰护士AV在线免费播放| 久久99网站| 日韩AV一起草| 亚洲一区二区三区四区视频| 色屁屁影院www国产| 日本一道在线播放高清| 精品久| 亚洲国产精品无石码久久| 精品无码久久| 九九九九AV| 蜜臀99精品国产高清在线观看| 97超碰免费生活| 日本东京热大香蕉a片| 亚洲天堂另类小说男人| 中文字幕 av v| 激情五月综合| 午夜精品久久久久久久男人的天堂| 久碰视频| 毛片中心9视频99| 操人妻少妇中文 | 日韩A优精品在线观看| 成人无码电影在线观看网| 99e久久国产精品| 免费福利视频中文字幕| 噜噜噜在线视频| 久草国产在线视频| 国产懂色精品国产av| 男人的天堂一区三区| 激情五月天丁香社区| 人人干人人操人人..com| 一级A片女人高潮叫床| 国产97视频免费观看| 欧美疯狂做爰xxxx| 东京热激情视频一二三区 | 日韩情色一区二区| 在线综合网| 日韩激情毛片一级久久久| 老司机福利青青草| 日本熟女免费視颖| 日本中文字幕在线视频| 天天流夜夜操| 久插综合| 日本 情色 1区2区3区| 精品免费囯产一区二区三区| 国产高清成人免费视频| 国产一级高清免费观看| 欧美在线大香蕉| 中文字幕人乱码中文字的预防方法 | 97干在线看| 亚洲污污网站| 欧美 亚洲精品首页| 日韩免费a级毛片无码a∨| 国产高清精品一区二区三区毛片 | 91精品人妻一区二区三区蜜臀| 91精品国产91久久青草| 91精品国产91久久青草| 久干9操| 久久99综合| 夜夜嗨av午夜成人| 亚洲熟女乱综合一区二区三区| 国产97/欧美| 视频国产欧美在线播放| 久久性爱网站| 久草久热| 91天天c| 日日躁夜夜躁狠狠躁超爽| 2017av无码免费无线播| HEYZO高无码国产精品227| 又黄又爽在线观看视频| 夜夜 中文视频rt| 蜜臀网址在线| 伊人丁香五月婷婷| 99久久99久久综合| 国产精品久久久久久久久久久久久久久| 超碰97.com| 99re热有精品视频国产| 国产精品探花在线| 97欧美精品综合| 男人天堂导航| 中文字幕精品日韩中文字幕| 99国内精品| 情色五月天就去干| 收看日本人日bb| 亚洲欧洲偷拍一区| 亚洲日本大香蕉1| 天天激情综合站| 久久久爆乳翘臀一线天伦理视频| 青青操视频在线| 婷婷伊人五月| 91无码中出人妻视频| 玖玖蜜臀资源网| 国产亚洲色停停久久99精品91| 久久超碰免费的| 9久精品| 男人的天堂成人的社区| 少妇人妻太紧太深av| 校园春色家庭伦理欧美激情| 国产第二页| 亚洲丝袜综合| 日日夜夜狠狠| 狠狠躁久久躁| 在线视频免费播放一区| 精品176精品2| 97精品一区二区视频| 九九性爱网| 日产成人久久| 91东北熟女| 大伊香蕉在线视频免费| 热久日综合| 精品日韩人妻精品一二三区| 久久99国产综合精品女同| 伊人96在线| 亚洲天堂人妻熟妇视频| 伦在线97| 久久亚洲AV无码专区首页| 曰本精品久久久| 91丝袜人妻| 天天草天天干天天日| 日韩情色AV| 日本精品五区| 亚洲精品丝袜-不卡成人免费……| 夜夜国自区| 又大又长又粗又爽又黄| 亚热日本熟女| 手机在线视频国内精品| 亚洲高清男人天堂| 国产综合永久精品日韩鬼片| 四虎AV影视国产精品亚洲精品| 国语对白露脸XXXXXX| 欧美美女啪啪视频| 亚洲麻豆av一区二区| 日本91白丝| 精品人妻中文字幕高清| 免費人妻夜夜爽天天爽爽一区| 午夜舔阴达高潮视频免费看| 日本精品人妻少妇一区二区| 日韩熟女三十乱伦| 婷婷情色综合网| 色婷婷六月丁香七月婷婷| 好吊色一区| 日韩无码三级影院| 肉丝无码中文高清| 国产精品亚洲免费| 上床啊啊啊| 91大胆欧美| 69XX一中文字幕人妻91| 最新精品久久蜜桃 | 精品国产Av无码久久久伦古装| 色嘟嘟人妻天堂网| 日韩免费福利在线观看| 超碰这里只有精品| 国产精品视频白浆免费| 97色欧洲| 桃花色涩综合影院| 午夜爽爽爽| 乱码熟妇人妻久久久| 日韩卡一卡二卡三在线| 亚洲综合色图欧美| 亚洲最大91网| 2017人人操,人人摸| 欧美日韩一干二干| 色999五月色| 极品销魂美女一区二区| 伊人991| 久久人人爽人人爽人人片Ⅴ| 婷婷色婷婷| 欧差乱伦二三| 久久亚洲熟妇在线视频| 日韩亚洲Av人人夜夜澡人人爽| 78m成人视线| 亚洲色图 欧美热图 清纯唯美 另类自拍| 2017人人操,人人摸| 久久精品综合| 黄色网址久久精品欧美喷水| 一区二区三区美女超清| 91老熟女91老女人| 色妹子A V| 免费的很黄很污的全部视频| 日韩三级av片| 大奶尤物鲍汁淫荡欧美视频粉嫩夜夜骚| 欧美日韩性爱操大逼| 97超碰欧美中文字幕| 国产乱人妻精品入口| 操人无码| 日韩黄片视频试看| 亚洲小说视频| 熟女精品一区二区在线观看| 久久久精品国产亚洲AV无码| 高清无码久操视频| 97天天插| 91嫩草欧美| 超碰在线99| 日韩在线性爱免费视频| 色五月av| 中文字幕1区2区| 国产成人主播| 国产人伦精品一区二区三区| 国产日韩欧美三级片| 91亚洲网| 四虎影视国产精品| 淫乱图区| 久操热线| 免费观看的黄色的网站| 日本一二三免费久久| 91爰爱欧美| 99青草| 九月丁香婷婷| 91人妻最真实刺激绿帽| 成 人 A V免费视频在线观看| 亚洲高潮影院| 日日日大屁股骚女人精品| 男人的天堂在线2| 午夜大香蕉| 国产精品视频麻豆入口| 亚洲欧美综合| 亚洲天堂资源在线| 一区超碰一区| 久久九精品| 吉川爱美98堂在线| 色五月婷婷中文字幕| 国产亚洲日本精品在线| 天天日天天搞天天干| 999精品乱码| 久久久三区二区一区| 色婷婷淫色网| 青青草在线视频欧美| 亚洲日韩肥臀视频在线观看| 久久中文字幕一区不卡| 色天堂在线观看| 久久最新视频免费观看| 色哟哟-国产专区| 大鸡吧尹人在线| 日本在线不卡123| 开心五月激情网| 国产欧美日韩在线不卡第一页| 人妻系列无码专区中文有码| 精品无码久久久久久久久果冻糖心| 女人天堂网| 日韩不卡码| 国产白丝在线| 天天综合有色网| 亚洲AO在线| 最新亚洲风情电影| 久久综合日韩亚洲欧美| 三级片大波波| 亚洲色综合| 五月天色五月| 色噜噜综合在线| 97久精品| 五月天社区| 五月天色图影视| 国产激情视频在线观看| www.99热| 韩国久久97| 神马久久久久眼| 日本精品人妻少妇一区二区| 超碰97网址| 国产女同性恋视频| 丝袜美女诱惑 91 视频| 97国产天堂岛| 啊啊啊啊啊啊啊网址在线观看| 欧美一品道| 99re99在线视频| 日日躁夜夜躁狠狠躁超爽| 91日韩| 91av一区二区在线观看| 又粗又长又爽在线观看| 亚洲美女自拍偷拍视频| 欧美性爱另类综合| 国产午夜无码片在线观看影视 | 99精品在线| 另类综合另类| 欧美日韩国产电影| 伊人在线大香蕉视频久久| 久久精品一区一起草| 超碰视97中文| 91精品操美女| 午夜福利合集| 啊啊啊好想要| 八戒无码国产午夜福利| 日本色色色色色视频| 开心五月婷婷激情| 久久久啊啊| 91撸色网 玖玖网 欧美| 99色悠悠| 美女淫穴| 干B| 78精品在线| 视频国产成人精品日本亚洲18| 亚洲第一免费视频| 精品国产丝袜一区二区三区乱码| 99久久无色码| 69精品在线| 国产精品久久久久绯色| 女一区二区| 91九色丰满高潮| 91国产丝袜白虎| 久久久久久综合久久伊人蜜月| 69精品| 精品人妻av在线播放| 天天色综亚洲91污| 97超碰美国| 精品乱码在线观看| 亚洲国产综合图区中文字幕| 日本三级一区二区 在线| 中文字幕精品一区欧美| 日韩中文字幕二区| 天天操狠狠日夜夜干超碰撸com视频在线观看 | 中文字幕五区| 久久久久国产| 91色狼| 亚洲αv一区二区三区| 校园春色之综合网| 亚洲第91页| 欧美天天射| 视频黄色国产一级| 亚洲欧洲小说图片视频 | 91在线视频免费中出| 夜夜国自区| 亚洲一卡二卡在线免费| 大香蕉伊人久久| 日韩av三四区| 亚洲熟女诱惑| 日韩三级天堂在线观看| 天美麻豆精品视频99| 黑人粗大V S日韩女优视频| 国产精品com| 色色丁香| 人妻内射一区二区在线视频| 国产品精品自在在线午夜免费| 亚洲操人| 嫩草黄页| 国产一区二区三区高清视频| 激情四射五月天| 成人在线午夜视频一区| 国内偷拍精品一区二区| 天天做天天爱天天高潮| 东京热99999| 超碰无码加勒比| 亚洲av总站| 精品黄色电影| 色情成人五月天| 丰满少妇精品一区二区| 少妇高潮特黄A片| 青青草在线视频欧美| 亚洲综合第一页| 婷婷亚洲综合| 伊色久人大在线| 国产欧美日韩精品中文| 九九自拍伦理| 国产亚洲精品久久久久小| 草b在线| 国产美女高潮| 国产精品免费视频人成| 欧美综合网1| 无遮挡又黄又刺激的视频| 精品少妇一区二区三区免费观看| 天天肏夜夜肏| 黄片免费久久久久久久| 冬京热男人的天堂| 午夜小电影在线插入淫高潮| 亚洲欲色9532548967一区| 清纯唯美综合| 无码一区二区精品视频久久久春药| 日韩三级网址| 欧美Ⅴ性爱| 黄色成品网站| 成人a v在线播放免费| 国产久久久9999| 搡老熟女免费视频| 中文字幕丝袜美腿| 五十路一区无码| 尤物国产一区在线观看| 国产久9| 99热婷婷| 91欧美综合| 在线观看十八禁| 天堂v无码免费视频| 美女裸体无遮挡永久免费观看网站| 女人爽到高潮潮喷18禁网站| 强奸熟女一区二区三区| 日韩精品1区2区中文字幕| 加勒比五月天| 久久精品色欧美aⅴ一区二区| 91久热| 三级三级三级日本99| 中文字幕第7页| 夜夜草网站| 东京热男人天堂| 一区,二区,三区网站| 亚洲无码国产精品久久| 校园春色中文字幕AV| 亚洲另类小说卡通动漫| 97欧美色| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 国产免费久久久久| 激情露脸爱| 免费AV中文网在线观看| 五月丁香激情综合| 久久老女人| 极品久久久久久久久久久久久久| 亚洲暴力强奸AV| 久久久久久人体| 久久婷婷视频| 97资源亚洲| 一区二区精品更新提醒| 不卡一区二区日本视频| 久久精品99久久久久久| 美女写真| 欧美偷拍| 欧美色图片91| 天天色综亚洲91污| 天天做天天爱| 亚州久久9| 啪啪一区| 乱伦熟女专区| 人妻黑丝袜电影| 激情五月天综合网| 激情熟女12P| 欧美性少妇| 狼人综合婷婷激情四射 | 伊人激情五月天一区二区| 日日骚一区二区三区| AV一二区| 色爱三区| 色在线视频导航| 亚洲人精品午夜不卡| 操人妻少妇中文| 三级日韩一区二区三区| 性色高清..……| 九一亚洲国产免费| 国产日本久久免费精品| 精品一级毛片在线观看| 亚洲欧美综合网站| 97干在线看| WWW黄片COM| 亚洲av综合色区图片亚洲| 一本色道人妻久久| 亚洲自拍欧美色综合| 七久久久| 草莓精品视频| 免费a级毛片av无码久久精品中文字幕| 亚洲欧美在线丝袜| 一区| 精品国产自在在线99| 男男H黄动漫啪啪无遮挡网站| 欧美精品精品一区二区| 中文字幕视频二区| 97精品久久久久中文字幕| 污到发麻的视频 国产| 亚洲成?V人片在线观看福利| 久久欲| 亚洲欧美第一页| 久操国产在线| 日本中文字幕一区| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 精品久久久不卡一区二区| 日韩精品99999| 伊人丁香五月婷婷| 91性网| 淫纸中9区| 亚洲日韩欧美一区二区| 少妇毛片久久| 国产人妻精品久久久一区二区三区 | 日本二区不卡| 天天超级碰碰碰| 97se综合网| 97超碰色五月| 少妇二级| 99热官网| 99婷婷| 热九九精品| 在线观看精品国产免费| 3028国产精品| 亚洲图片日本AⅤ欧美在线| 91社区伊人| 亚洲色宗合| 久久久蜜桃臀无码视频| 午夜福利合集| 丝袜美腿丝袜| 蜜桃视频一区二区三区| 亚洲第一页欧美| 99热导航| 99xav| 国产熟女一区二区丰满| 蜜臀av中字字幕网站| 欧美亚洲国产自久久| 岛国A V在线免费看| 国产一区二区a毛片| 97超碰色五月| 大肥女高潮bbwbbwhd视频| 德国一二三不卡| 中国国产精品一区视频| 天天天做天天天爱天天天爽| 欧美夜夜狠| 人妻精品一区二区| 色盈盈影院| 日韩人妻无码专区| 亚洲精品自拍| 老司机午夜福利视频一区二区| 草草影院最新网址| 久久久新亚洲AV| 色老牛| 少妇蹲下买菜露大唇0| 99热色精品| 欧美成人性爱视频大全| 男女激烈网站最新| 麻豆国产精品午夜视频| 久久久一二三四区| 国产精品密臀网在线观看| 麻豆亚洲Av成人无码一区精品| 欧美顶级黄片AAAAA在线免费看| 国产特级毛片AAAAAA高潮流水| 成人国产视频在线观看| 久操免费观看| 97资源久久| 欧美性性性| 欧美性爱一区二区三区| 人人摸人人舔一区二区| 欧美熟妇亚洲版| 欧美少妇第一页| 日韩内射视频| 久久久久久久久久久97| 国产超碰国产97| 99超碰色| 国产精品久久久视频| 亚洲综合色男人网| 91色五月俺来也| 亚洲综合性感在线| 日韩精品9999| 亚洲 另类 丝袜 自拍 动漫| 欧美在线大香蕉| 亚洲日本天堂| 亚洲色图 欧美热图 清纯唯美 另类自拍| 国产一区96在线| 免费看污网址| 97草草| 校园春色综合网| 高清国产精品无码| 26uuu国产日韩综合在线观看| 国产精品成人蜜臀AV在线| 91人妻爽爽人人做人人澡| 99久久无色码| 国产熟女自拍| 97爱| 欧美精品精品一区二区| 亚洲高清视频在线免费观看| 色五天伊人| 91福利网在线观看| 全免费a敌肛交毛片免费| 天天上日日上日韩精品| 伊人网免费视频| 嫩草一区二区在线观看| 亚洲成人免费在线| 西西美女视频网| 婷婷精品久久av影视| 日韩精品亚洲一二三| 色色毛片| 99在线免费公开视频| 五月丁香社区婷婷日韩欧美精品影院| 亚洲,欧美,春色,另类| 97超碰逼| 加勒比色99999| 日韩黄色av中文字幕| 欧美激情五月天| 九九九九免费高| 校园春色欧美色图| 97在线播放 | 玖玖爱一区在线| 九九热三级片| 无码人妻丰满热妇又大又粗| 春色校园综合网| 上床啊啊啊| 亚洲国产午夜真人一级片中文字幕精品黄网站 | 韩三级a视频在线观看| 亚洲色图激情小说| 天操天操夜操夜月月年年操操 | 激情综合婷婷| 很很很很操| 少妇一区二区三区高速| 欧美色棕合| 91 综合网| 一起草日韩| 日韩78m视频| 日韩免费av片高清无码| 蜜臀国产AV中文字幕| 欧美欧美少妇| 激情专区综合| 嗯嗯不要 视频| 国产精品99久久久www| 青青草乱入乱欲视频在线观看| 欧美精品宗合| 高潮内射在线| 成人av毛片在线观看| 欧美有码亚洲中文字幕一区二区三区四区| 黄网色一区二区三区四区精品| 超碰色男人操熟女| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 九九黄色网| 中欧人妻丝袜中文字幕|