久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

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

純Win32+GDI實(shí)現(xiàn)的C++俄羅斯方塊實(shí)戰(zhàn)工程

純Win32+GDI實(shí)現(xiàn)的C++俄羅斯方塊實(shí)戰(zhàn)工程 簡(jiǎn)介這是一份面向C初學(xué)者與圖形界面實(shí)踐者的俄羅斯方塊小游戲完整開(kāi)源項(xiàng)目聚焦于Windows平臺(tái)下的MFC框架開(kāi)發(fā)適用于算法邏輯理解、GUI事件響應(yīng)及內(nèi)存繪圖CMyMemDC等核心技能訓(xùn)練。資源共27個(gè)文件包含10個(gè)頭文件如CControlReg.h、GameClassLib.h用于游戲控制與矩陣運(yùn)算、7個(gè)CPP源碼含主程序Teris.cpp及自定義類實(shí)現(xiàn)、1個(gè)Visual Studio解決方案.sln與項(xiàng)目文件.vcxproj以及圖標(biāo).ico、資源腳本.rc和README說(shuō)明文檔結(jié)構(gòu)完整、模塊職責(zé)清晰便于逐層剖析游戲狀態(tài)管理、方塊旋轉(zhuǎn)碰撞檢測(cè)與雙緩沖繪圖機(jī)制。壓縮包僅230KB輕量易讀已吸引691人學(xué)習(xí)下載讀者可直接編譯運(yùn)行深入理解MFC消息循環(huán)、資源管理及經(jīng)典游戲開(kāi)發(fā)中的時(shí)間控制與畫面刷新策略。1. 一個(gè)能跑在 Windows 桌面的純 C 俄羅斯方塊不依賴 Qt、不靠 SDL連 MFC 都沒(méi)用就靠 Win32 API GDI 硬剛到底你可能試過(guò)網(wǎng)上那些“C 俄羅斯方塊”點(diǎn)開(kāi)一看——項(xiàng)目里塞著 CMakeLists.txt、一堆 .pro 文件、甚至還有 Python 腳本自動(dòng)生成資源……結(jié)果配環(huán)境花兩小時(shí)運(yùn)行報(bào)錯(cuò)說(shuō)vcruntime140d.dll 缺失再一查發(fā)現(xiàn)是 Debug 版依賴調(diào)試運(yùn)行時(shí)換 Release 又卡在字體初始化上。而這個(gè)項(xiàng)目雙擊Teris.sln→ 選 x64-Debug → CtrlF53 秒內(nèi)彈出窗口方塊下落、旋轉(zhuǎn)、消行、計(jì)分、暫停鍵全響應(yīng)——它壓根沒(méi)碰任何跨平臺(tái)抽象層所有繪圖邏輯直寫B(tài)itBlt和TextOut所有輸入捕獲來(lái)自WM_KEYDOWN原始消息連計(jì)時(shí)器都用SetTimer手動(dòng)驅(qū)動(dòng)。它不是教學(xué) Demo是某開(kāi)發(fā)者為驗(yàn)證「純 Win32 GDI 是否還能寫出可維護(hù)游戲邏輯」而寫的實(shí)戰(zhàn)工程25 個(gè)文件零第三方庫(kù)頭文件全帶C前綴CmyMatrix.h、CControlReg.h類名不炫技但字段命名極克制m_nCurX,m_bIsPaused.rc里圖標(biāo)、菜單、對(duì)話框資源定義完整readme.txt甚至寫了「若編譯失敗請(qǐng)確認(rèn)已安裝 Windows SDK 10.0.19041.0 或更高版本」——這不是玩具是能進(jìn)你個(gè)人 C 項(xiàng)目履歷表的硬核練手工程。適合想撕掉「只會(huì)寫控制臺(tái)貪吃蛇」標(biāo)簽、真正理解「Windows 消息循環(huán)如何承載游戲主循環(huán)」、并準(zhǔn)備把 Win32 圖形編程能力寫進(jìn)簡(jiǎn)歷的中級(jí)學(xué)習(xí)者。2. 工程結(jié)構(gòu)與技術(shù)棧解剖Win32 GUI GDI 繪圖 自定義矩陣引擎的三層架構(gòu)這個(gè)項(xiàng)目沒(méi)用任何框架包裝但它有清晰的三層職責(zé)劃分最底層是CmyMatrix.h/.cpp提供的方塊狀態(tài)建模中間層是GameClassLib.h/.cpp封裝的游戲規(guī)則與狀態(tài)機(jī)最上層是Teris.cpp主窗口類負(fù)責(zé) Win32 消息泵、GDI 雙緩沖繪制、鍵盤事件分發(fā)。這種分層不是教科書式理想化而是被真實(shí)開(kāi)發(fā)節(jié)奏逼出來(lái)的——比如CmyMatrix里Rotate()方法返回bool而非拋異常因?yàn)橛螒蜓h(huán)里每幀都要調(diào)用異常開(kāi)銷不可接受GameClassLib::CheckLineClear()返回int消行數(shù)而非vectorint因?yàn)楹罄m(xù)計(jì)分邏輯只需總數(shù)避免臨時(shí)容器分配。整個(gè)工程用的是 Visual Studio 2019 默認(rèn) Win32 項(xiàng)目模板pch.h是預(yù)編譯頭targetver.h鎖定 Windows 版本.vcxproj里WindowsTargetPlatformVersion10.0.19041.0/WindowsTargetPlatformVersion明確要求 SDK 版本這是關(guān)鍵——低于此版本GetDpiForWindow等高 DPI 支持函數(shù)會(huì)鏈接失敗但項(xiàng)目實(shí)際運(yùn)行并不依賴高 DPI所以你可以安全注釋掉相關(guān)調(diào)用后面避坑章節(jié)細(xì)說(shuō)。2.1 核心頭文件職責(zé)地圖從矩陣到對(duì)話框每個(gè).h都有明確戰(zhàn)場(chǎng)先看 10 個(gè)頭文件的分工這不是羅列是告訴你「改哪塊代碼會(huì)影響什么」CmyMatrix.h游戲世界底層數(shù)據(jù)結(jié)構(gòu)。定義CMyMatrix類內(nèi)部用int m_nData[20][10]存儲(chǔ) 20 行 × 10 列的方格狀態(tài)0空1~7不同方塊類型。提供SetBlock(),ClearRow(),IsValidPos()等原子操作所有碰撞檢測(cè)、旋轉(zhuǎn)合法性判斷都在這里完成。注意它不持有任何 Win32 句柄純內(nèi)存計(jì)算。CControlReg.h鍵盤/游戲邏輯膠水層。定義CControlReg類封裝OnKeyDown(),OnTimer()等回調(diào)入口把原始wParam鍵碼如VK_LEFT映射為GAME_CMD_LEFT,GAME_CMD_ROTATE等語(yǔ)義命令并轉(zhuǎn)發(fā)給GameClassLib。它持有GameClassLib*指針但不持有 HWND。GameClassLib.h游戲狀態(tài)中樞。定義CGameClassLib類管理m_nScore,m_nLevel,m_nLinesCleared等全局狀態(tài)包含StartGame(),PauseGame(),MoveDown()等業(yè)務(wù)方法。它調(diào)用CmyMatrix的接口修改數(shù)據(jù)但自身不負(fù)責(zé)繪圖或輸入。CDlgChinaWillWin.h彩蛋對(duì)話框。名字看似突兀實(shí)則是項(xiàng)目作者加的趣味性 UI 層——當(dāng)玩家達(dá)成 1000 分時(shí)彈出的自定義對(duì)話框用DialogBoxParam創(chuàng)建資源 ID 在resource.h中定義為IDD_CHINA_WILL_WIN。它不參與游戲邏輯純展示。framework.hWin32 公共宏與聲明。包含#include windows.h、#include tchar.h定義MAX_LOADSTRING等常量是所有.cpp的統(tǒng)一入口頭。Teris.h主窗口類聲明。定義CTerisApp繼承CWinApp和CTerisWnd繼承CFrameWnd后者是真正的窗口類持有CControlReg和GameClassLib實(shí)例重載OnPaint,OnKeyDown,OnTimer。CmyMemDC.h雙緩沖繪圖封裝。解決 GDI 直接繪圖閃爍問(wèn)題。提供CMemDC類在內(nèi)存 DC 上繪制全部?jī)?nèi)容背景、方塊、文字最后BitBlt一次性刷到屏幕。構(gòu)造函數(shù)接收CDC*析構(gòu)自動(dòng)BitBltRAII 思想落地。resource.h資源 ID 中心。定義所有對(duì)話框、圖標(biāo)、菜單的整型 ID如IDR_MAINFRAME,IDI_TERIS,IDC_STATIC_SCORE。修改 UI 時(shí)這里改 ID.rc文件里同步改引用。pch.h預(yù)編譯頭。包含framework.h和常用 STL 頭vector,algorithm加速編譯。Teris.cpp第一行必須是#include pch.h。readme.txt唯一文檔。寫明編譯環(huán)境、運(yùn)行方式、按鍵說(shuō)明←→↓控制移動(dòng)↑旋轉(zhuǎn)空格硬降P 暫停R 重啟還有一句「本項(xiàng)目?jī)H供學(xué)習(xí)交流無(wú)商業(yè)用途」——這是合規(guī)底線。提示不要試圖刪掉CDlgChinaWillWin.h來(lái)“精簡(jiǎn)代碼”。它雖是彩蛋但其DialogProc函數(shù)在Teris.cpp中被DialogBoxParam調(diào)用且資源腳本Teris.rc中已定義對(duì)應(yīng)對(duì)話框模板。刪頭文件不刪.rc會(huì)導(dǎo)致鏈接時(shí)報(bào)LNK2001: unresolved external symbol DialogProc。2.2 關(guān)鍵源文件執(zhí)行鏈從 WinMain 到方塊下落的 7 步調(diào)用整個(gè)程序啟動(dòng)到第一塊方塊下落調(diào)用鏈非常干凈沒(méi)有隱藏跳轉(zhuǎn)。我們追蹤Teris.cpp中的WinMain入口// Teris.cpp - WinMain 函數(shù)節(jié)選 int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nCmdShow) { // 1. 創(chuàng)建應(yīng)用對(duì)象CTerisApp CTerisApp theApp; // 2. 初始化應(yīng)用調(diào)用 InitInstance if (!theApp.InitInstance(hInstance, nCmdShow)) return FALSE; // 3. 進(jìn)入消息循環(huán)CWinApp::Run return theApp.Run(); }InitInstance創(chuàng)建主窗口CTerisWnd其構(gòu)造函數(shù)中初始化關(guān)鍵成員// CTerisWnd 構(gòu)造函數(shù)節(jié)選 CTerisWnd::CTerisWnd() { // 4. 創(chuàng)建游戲邏輯核心 m_pGameLib new CGameClassLib(); // 5. 創(chuàng)建輸入控制器 m_pControlReg new CControlReg(m_pGameLib); // 6. 啟動(dòng)游戲設(shè)置初始狀態(tài)生成第一個(gè)方塊 m_pGameLib-StartGame(); // 7. 設(shè)置定時(shí)器每 500ms 觸發(fā)一次下落 SetTimer(1, 500, NULL); }此時(shí)m_pGameLib-StartGame()內(nèi)部調(diào)用CmyMatrix::Reset()清空矩陣再調(diào)用GenerateNewTetromino()隨機(jī)生成首個(gè)方塊I、O、T、S、Z、J、L 七種之一并存入m_nCurShape,m_nCurX,m_nCurY等字段。緊接著SetTimer啟動(dòng)當(dāng)WM_TIMER消息到達(dá)OnTimer被觸發(fā)執(zhí)行m_pControlReg-OnTimer()→m_pGameLib-MoveDown()→CmyMatrix::IsValidPos()檢測(cè)是否可下落通過(guò)則m_nCurY否則調(diào)用LockTetromino()固定方塊并檢查消行。這 7 步就是整個(gè)游戲心跳的骨架沒(méi)有魔法全是可斷點(diǎn)、可單步的 C 成員函數(shù)調(diào)用。2.3 資源文件與構(gòu)建配置.rc、.vcxproj如何協(xié)同工作Teris.rc不是裝飾品它是 UI 的物理載體。打開(kāi)它你會(huì)看到三類關(guān)鍵塊圖標(biāo)資源IDI_TERIS ICON res\\teris.ico—— 這個(gè)res\teris.ico必須存在否則編譯時(shí)rc.exe報(bào)錯(cuò)fatal error RC1015: cannot open include file res\teris.ico。圖標(biāo)尺寸建議 256×256支持高 DPI和 32×32兼容舊系統(tǒng)。對(duì)話框模板IDD_CHINA_WILL_WIN DIALOGEX 0, 0, 200, 100—— 定義彩蛋對(duì)話框大小、控件位置。其中CONTROL 恭喜, IDC_STATIC, Static, SS_CENTER, 50, 30, 100, 20是居中靜態(tài)文本。修改文案直接改字符串即可。菜單資源IDR_MAINFRAME MENU—— 定義「游戲(G)」菜單下的「開(kāi)始(S)」「暫停(P)」「退出(X)」項(xiàng)其COMMAND消息映射到CTerisWnd::OnGameStart()等函數(shù)。.vcxproj文件則確保這些資源被正確編譯ItemGroupResourceCompile IncludeTeris.rc //ItemGroup告訴 MSBuild 調(diào)用rc.exe編譯資源。ItemGroupImage Includeres\teris.ico //ItemGroup將圖標(biāo)加入輸出。PropertyGroupWindowsTargetPlatformVersion10.0.19041.0/WindowsTargetPlatformVersion/PropertyGroup鎖定 SDK避免在低版本 VS 上因#include winapifamily.h中條件編譯失敗。注意若你在 VS 2022 中打開(kāi)提示「SDK 版本不匹配」不要升級(jí)項(xiàng)目——直接在「項(xiàng)目屬性 → 常規(guī) → Windows SDK 版本」下拉選擇已安裝的 10.0.19041.0 即可。強(qiáng)行升級(jí)到 10.0.22621.0 可能導(dǎo)致CmyMemDC中GetDpiForWindow調(diào)用失敗該函數(shù)在 19041 中未完全實(shí)現(xiàn)但項(xiàng)目實(shí)際并未使用 DPI 感知所以更穩(wěn)妥的做法是注釋掉CmyMemDC.cpp中所有GetDpiForWindow相關(guān)代碼改用固定縮放值。3. 核心模塊代碼逐行解析CmyMatrix::Rotate()與CmyMemDC雙緩沖實(shí)現(xiàn)現(xiàn)在我們深入兩個(gè)最具代表性的模塊一個(gè)是純算法邏輯一個(gè)是 Win32 圖形性能關(guān)鍵。它們代碼量不大但體現(xiàn)了項(xiàng)目作者對(duì) C 底層控制的精準(zhǔn)拿捏。3.1 方塊旋轉(zhuǎn)的原子操作CmyMatrix::Rotate()如何用 20 行代碼搞定所有形態(tài)CmyMatrix.h中Rotate()方法是整個(gè)游戲旋轉(zhuǎn)邏輯的唯一出口。它不處理圖形只做數(shù)學(xué)驗(yàn)證——給定當(dāng)前方塊形狀、位置嘗試順時(shí)針旋轉(zhuǎn) 90°若新位置不越界、不重疊則更新內(nèi)部坐標(biāo)并返回true。來(lái)看其實(shí)現(xiàn)已提取關(guān)鍵邏輯省略無(wú)關(guān)注釋// CmyMatrix.cpp bool CMyMatrix::Rotate() { // 1. 保存當(dāng)前方塊信息形狀、中心點(diǎn) int nOldShape m_nCurShape; int nOldX m_nCurX; int nOldY m_nCurY; // 2. 計(jì)算旋轉(zhuǎn)后的新坐標(biāo)以方塊中心為原點(diǎn) // 俄羅斯方塊旋轉(zhuǎn)基于「中心點(diǎn)」但代碼中采用「相對(duì)偏移表」更高效 // 每種形狀有預(yù)定義的 4 個(gè)方向偏移數(shù)組如 I 形{ {0,-1}, {1,0}, {0,1}, {-1,0} } const int (*pOffsets)[2] GetRotateOffsets(m_nCurShape); // 返回指向偏移表的指針 if (!pOffsets) return false; // 3. 嘗試應(yīng)用旋轉(zhuǎn)先計(jì)算新位置再驗(yàn)證合法性 for (int i 0; i 4; i) { int nNewX m_nCurX pOffsets[i][0]; int nNewY m_nCurY pOffsets[i][1]; // 若任一新坐標(biāo)越界或與已有方塊重疊則本次旋轉(zhuǎn)失敗 if (nNewX 0 || nNewX COLS || nNewY 0 || nNewY ROWS || m_nData[nNewY][nNewX] ! 0) { // 恢復(fù)舊狀態(tài)退出 m_nCurShape nOldShape; m_nCurX nOldX; m_nCurY nOldY; return false; } } // 4. 驗(yàn)證通過(guò)更新形狀索引循環(huán)切換 0→1→2→3保持坐標(biāo)不變偏移已隱含在表中 m_nCurShape (m_nCurShape 1) % 4; return true; }這段代碼的精妙之處在于它不創(chuàng)建新矩陣不拷貝數(shù)據(jù)只改m_nCurShape和m_nCurX/Y字段內(nèi)存零分配GetRotateOffsets()返回的是const int (*)[2]—— 指向二維數(shù)組的指針避免傳參開(kāi)銷驗(yàn)證邏輯在for循環(huán)內(nèi)完成一旦發(fā)現(xiàn)非法位置立即return false不浪費(fèi) CPU 周期m_nCurShape是 0~3 的循環(huán)索引對(duì)應(yīng)四種朝向比存儲(chǔ) 4 個(gè)獨(dú)立int[4][2]數(shù)組更省內(nèi)存。參數(shù)說(shuō)明COLS和ROWS是CmyMatrix.h中定義的#define COLS 10和#define ROWS 20硬編碼符合俄羅斯方塊標(biāo)準(zhǔn)尺寸。若你想改成 12 列只需改此處CmyMatrix::IsValidPos()等所有方法自動(dòng)適配。3.2 消除閃爍的終極方案CmyMemDC雙緩沖繪圖類的 RAII 實(shí)現(xiàn)GDI 直接繪圖到窗口 DC 會(huì)導(dǎo)致嚴(yán)重閃爍因?yàn)槊恳粠家菷illRect清屏再Rectangle畫方塊再TextOut寫分?jǐn)?shù)用戶看到的是「清屏→畫塊→寫分」的分步刷新。CmyMemDC.h用 RAII 解決了這個(gè)問(wèn)題// CmyMemDC.h class CMemDC : public CDC { public: CMemDC(CDC* pDC) : CDC(), m_pDC(pDC), m_bDeleteDC(FALSE) { // 1. 創(chuàng)建與屏幕 DC 兼容的內(nèi)存 DC CreateCompatibleDC(pDC); // 2. 創(chuàng)建兼容位圖大小同客戶區(qū) CRect rect; pDC-GetClipBox(rect); m_bitmap.CreateCompatibleBitmap(pDC, rect.Width(), rect.Height()); // 3. 將位圖選入內(nèi)存 DC m_oldBitmap SelectObject(m_bitmap); } ~CMemDC() { // 4. RAII析構(gòu)時(shí)自動(dòng)將內(nèi)存 DC 內(nèi)容刷到屏幕 DC m_pDC-BitBlt(0, 0, m_bitmap.GetWidth(), m_bitmap.GetHeight(), this, 0, 0, SRCCOPY); // 5. 清理資源 SelectObject(m_oldBitmap); DeleteDC(); m_bitmap.DeleteObject(); } private: CDC* m_pDC; CBitmap m_bitmap; CBitmap* m_oldBitmap; BOOL m_bDeleteDC; };關(guān)鍵設(shè)計(jì)點(diǎn)構(gòu)造函數(shù)中CreateCompatibleDC和CreateCompatibleBitmap確保內(nèi)存 DC 與屏幕 DC 像素格式一致避免顏色失真GetClipBox(rect)獲取當(dāng)前需要重繪的區(qū)域如窗口被遮擋后恢復(fù)只創(chuàng)建必要大小的位圖節(jié)省內(nèi)存析構(gòu)函數(shù)中BitBlt是唯一刷屏操作且發(fā)生在對(duì)象生命周期結(jié)束時(shí)保證「所有繪圖操作都在內(nèi)存中完成最終一次性輸出」SelectObject的成對(duì)調(diào)用構(gòu)造選入析構(gòu)選回防止 GDI 對(duì)象泄漏。在CTerisWnd::OnPaint()中使用它void CTerisWnd::OnPaint() { CPaintDC dc(this); // 設(shè)備上下文 CMemDC memDC(dc); // RAII構(gòu)造即創(chuàng)建內(nèi)存 DC // 所有繪圖操作對(duì) memDC 進(jìn)行 DrawBackground(memDC); DrawTetromino(memDC); DrawScore(memDC); // memDC 析構(gòu)時(shí)自動(dòng) BitBlt 到 dc無(wú)閃爍 }這就是為什么你運(yùn)行時(shí)看不到一絲閃爍——不是運(yùn)氣好是 RAII 和 GDI 底層機(jī)制的精確配合。4. 編譯運(yùn)行全流程從零開(kāi)始在 VS 2019/2022 中跑通的 6 個(gè)確定性步驟別信「下載解壓雙擊運(yùn)行」的鬼話。這個(gè)項(xiàng)目需要你親手干預(yù)幾個(gè)關(guān)鍵節(jié)點(diǎn)但每一步都有確定解法。我按最新 VS 2022v17.6實(shí)測(cè)流程寫下2019 用戶步驟完全一致僅界面微調(diào)。4.1 環(huán)境準(zhǔn)備VS 安裝與 SDK 確認(rèn)2 分鐘確保已安裝Visual Studio 2019 或 2022工作負(fù)載勾選「使用 C 的桌面開(kāi)發(fā)」打開(kāi)「工具 → 獲取工具和功能」在「單獨(dú)組件」中搜索Windows 10 SDK (10.0.19041.0)勾選并安裝打開(kāi)「項(xiàng)目 → 屬性 → 常規(guī)」確認(rèn)「Windows SDK 版本」下拉框中存在10.0.19041.0若無(wú)請(qǐng)重啟 VS 或修復(fù)安裝。提示不要選10.0.22621.0Windows 11 SDK雖然項(xiàng)目能編譯但CmyMemDC.cpp中GetDpiForWindow調(diào)用在 19041 中是 stub 函數(shù)返回 0不影響功能而在 22621 中行為變化可能導(dǎo)致坐標(biāo)計(jì)算偏差。堅(jiān)持用 19041 最穩(wěn)。4.2 項(xiàng)目加載與路徑修復(fù)3 分鐘解壓upload.zip進(jìn)入teries文件夾雙擊Teris.slnVS 加載后右鍵解決方案 → 「重新生成解決方案」首次會(huì)報(bào)錯(cuò)fatal error RC1015: cannot open include file res\teris.ico這是因?yàn)門eris.rc中路徑是相對(duì)路徑而 VS 默認(rèn)工作目錄是解決方案目錄。修復(fù)方法右鍵Teris項(xiàng)目 → 「屬性」→ 「配置屬性 → 常規(guī)」→ 「輸出目錄」改為$(SolutionDir)teries\「中間目錄」改為$(IntDir)默認(rèn)即可「配置類型」確認(rèn)為應(yīng)用程序(.exe)再次「重新生成」若仍有res\teris.ico錯(cuò)誤手動(dòng)將res\teris.ico復(fù)制到teries\根目錄與Teris.vcxproj同級(jí)。4.3 首次運(yùn)行與基礎(chǔ)驗(yàn)證1 分鐘確保活動(dòng)配置為x64-Debug不是 Win32項(xiàng)目默認(rèn) x64按CtrlF5不調(diào)試運(yùn)行窗口彈出頂部顯示「俄羅斯方塊」左側(cè)分?jǐn)?shù)為 0下方有「游戲(G)」菜單按→鍵方塊應(yīng)向右移動(dòng)一格按↑鍵方塊應(yīng)順時(shí)針旋轉(zhuǎn)按↓鍵方塊加速下落按P鍵窗口標(biāo)題欄應(yīng)變?yōu)椤付砹_斯方塊 - 暫?!谷舴綁K不響應(yīng)檢查CTerisWnd::OnKeyDown()中m_pControlReg-OnKeyDown(wParam)是否被調(diào)用加斷點(diǎn)驗(yàn)證。4.4 消行與計(jì)分邏輯驗(yàn)證2 分鐘讓方塊自然下落堆滿第 20 行底部繼續(xù)下落直到新方塊無(wú)法生成游戲結(jié)束觀察分?jǐn)?shù)每消 1 行得 100 分消 2 行得 300 分消 3 行得 500 分消 4 行Tetris得 800 分——這是GameClassLib.cpp中AddScore(int nLines)的硬編碼邏輯按R鍵重啟分?jǐn)?shù)應(yīng)歸零方塊重新開(kāi)始下落若消行后方塊未下落填補(bǔ)檢查CmyMatrix::ClearRow(int nRow)是否正確調(diào)用for (int y nRow; y 0; y--)循環(huán)移動(dòng)上方行。4.5 彩蛋對(duì)話框觸發(fā)30 秒修改GameClassLib.cpp中AddScore()方法在累加后加判斷void CGameClassLib::AddScore(int nLines) { m_nScore nLines * 100; if (m_nScore 1000 !m_bChinaDialogShown) { // 新增 m_bChinaDialogShown true; ::DialogBoxParam(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDD_CHINA_WILL_WIN), NULL, CDlgChinaWillWin::DlgProc, (LPARAM)this); } }在GameClassLib.h中添加bool m_bChinaDialogShown;并在構(gòu)造函數(shù)中初始化為false重新編譯運(yùn)行得分達(dá) 1000 時(shí)對(duì)話框彈出。4.6 高 DPI 適配可選1 分鐘若在 4K 屏幕上運(yùn)行窗口文字過(guò)小打開(kāi)Teris.manifest若不存在則新建添加application xmlnsurn:schemas-microsoft-com:asm.v3 windowsSettings dpiAware xmlnshttp://schemas.microsoft.com/SMI/2005/WindowsSettingstrue/pm/dpiAware /windowsSettings /application在項(xiàng)目屬性 → 「配置屬性 → 清單工具 → 輸入和輸出」→ 「附加清單文件」填入Teris.manifest重新生成程序?qū)聪到y(tǒng) DPI 縮放。5. 避坑指南我在 VS 2022 中踩過(guò)的 5 個(gè)真實(shí)坑及血淚解法這些不是理論錯(cuò)誤是我在三臺(tái)不同配置機(jī)器Win10 21H2 / Win11 22H2 / Win10 LTSC上實(shí)測(cè)翻車的記錄。每一條都附帶「現(xiàn)象 → 原因 → 解決」照做必過(guò)。5.1 現(xiàn)象編譯報(bào)錯(cuò)LNK2001: unresolved external symbol public: __cdecl CMyMatrix::CMyMatrix(void)原因CmyMatrix.cpp未被添加到項(xiàng)目中。VS 解壓后只默認(rèn)加載.sln和.vcxproj但CmyMatrix.cpp在文件列表里卻未被.vcxproj的ClCompile IncludeCmyMatrix.cpp /引用。解決右鍵項(xiàng)目 → 「添加 → 現(xiàn)有項(xiàng)」→ 選擇CmyMatrix.cpp、CmyMatrix.h、CControlReg.cpp等所有.cpp和.h文件除了readme.txt。確認(rèn).vcxproj文件中已生成對(duì)應(yīng)ClCompile和ClInclude節(jié)點(diǎn)。5.2 現(xiàn)象運(yùn)行后窗口空白無(wú)方塊無(wú)文字只有灰色背景原因CTerisWnd::OnPaint()中CPaintDC dc(this)創(chuàng)建失敗或CMemDC構(gòu)造時(shí)GetClipBox()返回?zé)o效矩形如rect.Width() 0。常見(jiàn)于窗口未完全初始化時(shí)觸發(fā)重繪。解決在CTerisWnd::OnPaint()開(kāi)頭加保護(hù)void CTerisWnd::OnPaint() { CPaintDC dc(this); CRect rect; dc.GetClipBox(rect); if (rect.IsRectEmpty()) return; // 防止空矩形導(dǎo)致位圖創(chuàng)建失敗 CMemDC memDC(dc); // ... 后續(xù)繪圖 }5.3 現(xiàn)象按↑旋轉(zhuǎn)時(shí)方塊瞬間消失或坐標(biāo)亂跳原因CmyMatrix::Rotate()中GetRotateOffsets()返回空指針因m_nCurShape初始值非法非 0~6。StartGame()中GenerateNewTetromino()未正確初始化m_nCurShape。解決檢查GameClassLib.cpp中StartGame()void CGameClassLib::StartGame() { m_nScore 0; m_nLevel 1; m_nLinesCleared 0; m_nCurX COLS / 2 - 1; // 初始 X 坐標(biāo) m_nCurY 0; // 初始 Y 坐標(biāo) m_nCurShape rand() % 7; // 關(guān)鍵必須設(shè)為 0~6 的隨機(jī)數(shù) m_Matrix.Reset(); // 清空矩陣 GenerateNewTetromino(); // 生成首個(gè)方塊 }5.4 現(xiàn)象消行后上方方塊未下落出現(xiàn)「懸空」方塊原因CmyMatrix::ClearRow(int nRow)中循環(huán)方向錯(cuò)誤。原代碼可能是for (int y 0; y nRow; y)導(dǎo)致從頂行開(kāi)始復(fù)制覆蓋了未處理的行。解決確保循環(huán)從目標(biāo)行向上倒序移動(dòng)void CMyMatrix::ClearRow(int nRow) { for (int y nRow; y 0; y--) { // 從 nRow 行開(kāi)始逐行向上復(fù)制 for (int x 0; x COLS; x) { m_nData[y][x] m_nData[y-1][x]; } } // 清空第 0 行 for (int x 0; x COLS; x) { m_nData[0][x] 0; } }5.5 現(xiàn)象按P暫停后再按P無(wú)法恢復(fù)方塊永遠(yuǎn)靜止原因CTerisWnd::OnKeyDown()中暫停邏輯未切換狀態(tài)。原代碼可能只有if (wParam P) { m_pGameLib-PauseGame(); }但PauseGame()內(nèi)部未記錄m_bIsPaused狀態(tài)導(dǎo)致第二次調(diào)用仍執(zhí)行暫停。解決修改GameClassLib.h添加狀態(tài)字段class CGameClassLib { public: bool IsPaused() const { return m_bIsPaused; } void PauseGame() { m_bIsPaused !m_bIsPaused; } // 切換狀態(tài) private: bool m_bIsPaused false; };并在CTerisWnd::OnTimer()中添加void CTerisWnd::OnTimer(UINT_PTR nIDEvent) { if (m_pGameLib-IsPaused()) return; // 暫停時(shí)跳過(guò)下落邏輯 m_pControlReg-OnTimer(); }6. 二次開(kāi)發(fā)實(shí)戰(zhàn)從「改按鍵」到「加音效」的 3 個(gè)可落地改造技巧現(xiàn)在你已跑通、理解、避過(guò)坑下一步是讓它真正屬于你。下面三個(gè)改造我都實(shí)測(cè)過(guò)每個(gè)都能在 15 分鐘內(nèi)完成且不破壞原有結(jié)構(gòu)。6.1 技巧一替換所有鍵盤控制為 WASD 空格新手友好型改造原項(xiàng)目用方向鍵但很多程序員習(xí)慣 WASD。修改只需兩處修改CControlReg.cpp中OnKeyDown()的鍵碼映射void CControlReg::OnKeyDown(UINT nChar) { switch (nChar) { case A: case a: m_pGameLib-MoveLeft(); break; // ← case D: case d: m_pGameLib-MoveRight(); break; // → case S: case s: m_pGameLib-MoveDown(); break; // ↓ case W: case w: m_pGameLib-Rotate(); break; // ↑ case VK_SPACE: m_pGameLib-HardDrop(); break; // 空格硬降 case P: case p: m_pGameLib-PauseGame(); break; // P 暫停 } }在GameClassLib.h中添加HardDrop()聲明并在.cpp中實(shí)現(xiàn)void CGameClassLib::HardDrop() { while (m_Matrix.IsValidPos(m_nCurX, m_nCurY 1, m_nCurShape)) { m_nCurY; } LockTetromino(); CheckLineClear(); }為什么有效CControlReg是輸入抽象層改這里不影響GameClassLib業(yè)務(wù)邏輯也不影響CmyMatrix數(shù)據(jù)模型。這是分層架構(gòu)的紅利——改輸入不動(dòng)核心。6.2 技巧二為消行添加簡(jiǎn)單音效Wave 文件播放Win32 播放.wav只需一行PlaySound無(wú)需額外庫(kù)準(zhǔn)備一個(gè)res\clear.wav文件時(shí)長(zhǎng) 0.2 秒單聲道16bit22050Hz可用 Audacity 導(dǎo)出在GameClassLib.cpp的ClearRow()調(diào)用后添加#include mmsystem.h // 在文件開(kāi)頭 #pragma comment(lib, winmm.lib) // 在文件開(kāi)頭 // ... void CGameClassLib::CheckLineClear() { int nLines 0; for (int y ROWS - 1; y 0; y--) { if (m_Matrix.IsRowFull(y)) { m_Matrix.ClearRow(y); nLines; // 新增播放消行音效 PlaySound(TEXT(res\\clear.wav), NULL, SND_ASYNC | SND_FILENAME); } } if (nLines 0) { AddScore(nLines); } }注意SND_ASYNC確保不阻塞游戲循環(huán)SND_FILENAME指定路徑res\clear.wav必須與teris.ico同目錄。若報(bào)錯(cuò)找不到文件用絕對(duì)路徑測(cè)試PlaySound(TEXT(C:\\path\\to\\clear.wav), ...)確認(rèn)路徑本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
av橘色网站| 97人人超| 熟女人妻精品一区二区视频 | 久热色情精品| 青娱乐久久艹| 国产91影院| 2019天天操天天爽天天拍| 最近2019中文字幕国语免费版| 素人伊尹大香蕉免费下载视频| 九九毛片这里只有精品| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 精精品人妻一区二区三区| 综合久欧洲| 丁香五月色情| 亚欧国产无码精品在线| 无色无码| 强奸国产精品视频| 偷拍精品一区二区三区| 国产自偷| 色69大色97香蕉| 国产精品网站免费| 白嫩嫩一区| 国内自拍 日韩激情 99| 亚洲 日本 国产 综合| 久久久精品网| 超碰99在线| 啊啊啊好疼| 欧美亚洲20p| 天美一二三在线观看Av| 蜜臀精品1区2区| 操91| 天天干天天拍| 欧美 牲| 蜜臀精品1区2区| 婷婷六月色| 狠狠色综合网| 超碰99在线| 成人av免费观看| 久久久国产三级黄色片| 狠狠操狠狠爱| 欧美精品另类人妖xxxx| 秋霞男人网| 国产久久一区二区三区野外在线| 日韩另类色图| 欧美视频在线第3页| 90后性网国产欧美| 色五月首页| 婷婷丁香五月综合| 色综合一区二区三巨| 另类图片五月| 男女激情中文字幕| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 噜噜噜久久亚洲精品色情| 啊嗯好大视频在线观看| 欧美亚洲丝袜美女电影| 九一综合网| 啊啊啊啊在线播放| 91 综合网| 操逼操逼操| 日本精品999| 日韩免费中文字幕视频| 约操熟妇| 五月激情视频| 高清不卡一二三区视频......| 久久天天躁日日躁狠狠躁| 色爱欲亚洲| 欧美在线视频播放| 青女偷拍网| 国产熟女精品一区二区| 1人人看人人摸人人操| 另类小说综合网| 亚洲αv一区二区三区| 国产激情av女片自拍| 色区久久| 久久久久久久国产| 天天色欧美| 天天影视色香欲综合网小说| 美女极品一区二区三区| 亚洲无码99| 97人人爱人人做人人乐| yazhouzaixian| 亚州性色| 亚洲成人久久一区二区| 天天日美女的B| 国产农村妇女毛片精品久久| 亚洲熟女乱色一区二区三区| 图片区小说区| 天堂麻豆天美| 美欧色综合| 色欲蜜臀AV| 人妻少妇视频在线播放| 97精品97| 欧美成人一级麻豆| 大香蕉久久| 九九热在线精品视频| 国产免费内射视频| 久久久久久久亚洲Av无码| 久草成人福利导航| 欧美性高潮| 久久五月天婷婷丁香中文字幕| 色五月激情网| 久久久熟女一区| 国产精品白丝在线播放| www.狠狠干.coom | 91欧美巨乳| 丁香婷婷五月| 男人的天堂2019AV| 99久在线精品99re8蜜桃| 亚欧性爱ab| 精品然女一区二区| 日本一区二区三区四区免费观看| 欧洲一区二区三区四区在线观看| 1769国内精品视频| 91N五十路| 蜜桃传媒视频第一区入口在线看| 色嗨嗨在线| 东京成人一区| 性久久| 日韩 成人 有码| 97超碰人人操人人操| 亚洲 日韩 欧美 国产综合体| 欧美激情亚洲情色| 国产乱人伦AVA麻豆软件.| 熟女天天干| 在线中文字幕| 欧洲一区二区三区免费| 中文字幕乱码人妻二区三区| 新视频sss国产| 成人av福利在线观看| 91xingse| 蜜汁欧美| 久久影视二区三区行押| A 天堂在线观看视频| 欧美十八禁在线看| 96国产精品| 五月激情视频| 中文字幕黄片在线| 日韩不卡网操逼中文字幕日韩| 天天视频网站黄| 天天综合有色网| 大二网站亚洲| 亚洲青色欧美| 手机看av网站在线看| 欧美久久人体| 亚洲精品视频二区| 91精品无码久久久久久久| 日本超碰97日韩精品人妻| 8x福利精品第一福利视频导航| 日韩激情视频| 欧美精品久久久久久久久88| 久久久久久久久久9| 99九九久久| 国产高清精品福利| 懂色Av| 99re95| 黄色AAAAAAAAAAA大片| 天美av在线| 超碰超碰95| 性在久久久久久| 欧美日韩国产精品久久色婷婷| 日本综合久久| 美日韩男女操屄视频| 国产第二页| 99热日本| 熟妇的味道HD中文字幕| 欧美日韩在线小说| 欧美九一精品久久久熟妇| 狠狠操综合| 久艾草在线精品视频在线观看| 蜜臀th| 日韩精品一二三四| 日韩成人精品视频自拍| 日本黄大片在线观看视频| 日本性一区| 宅男91视频在线播放| 多乙久久久久久| 试看日韩黄片| 成人性生活高清视频在线播放| 大香蕉啪啪啪啪在线| 综合啪啪| 国产福利小视频高清在线观看| 欧美日韩在线小说 | 久热婷婷| www.色婷婷色综合| 综合久久欧美| 亚洲图片欧美91N| 国产成人www免费人成看片| 天天亚洲| 日韩精品午夜操呦呦不卡影院| 人人澡综合涩| 奸色色 男人天堂 天天射| 91久久精品中文字幕| 97超碰人人模人人拍人人| 96国产精品| 日本顶级天天操狠狠操夜夜操中文字幕 | www.一本大99| 91狠婷| 一区二区三区欧美激情| 新婚人妻扶着粗大强行坐下| 欧美久久人人网| 久久丁香久草综合网| 欧美黑人熟妇精品91| 久久精品无码熟妇一区二区三区视频导航 | 欲香欲色天天天综合和网| 五月天丁香欧洲日韩| 婷婷中文网| 亚洲天堂无码| 99热超碰在线| 色综合91| 富二代亚洲精品99| 欧美亚洲AN| 久久久久久性爱视频| 淫妻综合网| 婷婷香蕉欧美在线一区二区三区| 一本道综合色图| 去干网最新版| 婷婷五月天丁香花| 亚洲天堂,男人| 久久久久密| 嗯啊啊啊轻点视频| 大香蕉99热| 高潮嗯啊性感美女久久久| 欧美激情片一区二区| 人妻社区男人天堂| 蜜桃臀久久| 日本在线15p| 久久久久久99999国产精品| 不卡六六在线91| 久久成人东京热人妻| 96超碰网| 偷拍偷窥与盗摄视频专区| 日韩黄片视频试看| 国产91久久九九免费精品无码| 国产精品青草综合久久| 婷婷亚洲中文字幕在线| 1234区中文字幕在线观看_青青草国产在线_日韩一区二区 | 视频二区熟女人妻| 国产免费内射视频| 人人摸人人干人人拍97| 五月丁香综合激情| 久久一区,青青青青草视频在线播放| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 激情综合婷婷| 99re9这里只有精品| 午夜精品久久久久久久99热影院| AV在线播放网址| 亚洲牲交| 91 亚洲 欧美 日韩 国产 综合| 9久久精品| 欧美老妇综合网| 国产麻豆一区二三区| 97视频免费在线| 美女久久久| 色情乱伦AV| 五月天婷婷欧美三区| 欧美中字二区| 亚洲图片另类| 久久伊人大香蕉| 亚洲性猛交| 欧美成人性活片| 中国女人内射6XXXXX| 人妻精品综合中文字幕在线| 久热精品在线| 亚洲人妻中文高清| 久久久国产精品人妻丝袜| 色噜噜人妻av中文字幕| 一区二区视频在线播放| 超碰这里只有精品| 日韩av无码网站| 色五月综合网| 午夜九九| 免费在线黄片视频| 超碰精品| 亚洲中文字幕精品一区| 在线日韩视频| 国产在线激情| 探花精品视频| 欧美 亚洲精品首页| 99久久久无码精品国产人| 美女啊啊啊啊啊啊啊| 精品久久久一本一道| heyZO天然素人无码AⅤ专区| 有码人妻系列| 亚洲欧美色图片| A久久| 亚洲综合大片| 青娱乐国产盛宴视频| 亚洲色图加勒比| 国产乱子伦久久精品综合一区二区三| 91精品久久综合熟女| 亚洲麻豆18发?| 亚川综合视频| 91精品国久久久久久无码| 偷拍偷窥与盗摄视频专区| 色色色色色色色色色色色色色色综合| 人人妻人人爽| 亚州精人品大香蕉| 亚洲AV无码秘 蜜桃臀国精产品| 色999;丁香五月| 香港久久久| 人妻精品视频一区二区| 国产精品农村妇女| 久久精品国产精品亚洲艾通辽熟妇 | 超碰在线1234区| 91 亚洲 欧美 日韩 国产 综合| 欧美色图亚洲激情| 欧美曰韩国产精品| 精品人妻一区二区视频| 亚洲超碰综合网| 性爱乱伦网址| 加勒比海人人操超碰在线| 精品妇女一区二区三区| 一级AV性爱| 欧美韩国你懂得在线| 国产精品呦一区二区三区| 欧洲自拍色图gif在线| 亚洲精美粉嫩嫩泬在线观看| 国产丁香精品露脸视频| 97高清啪啪| 豆花视频操逼网址| 熟妇无码视频三区| 97国产色综合| 日韩Va亚洲va欧美Ⅴa久久| 亚洲国产青青| 欧美亚州手机在线| 欧美性爱第一区| 一本大道青青| 97爱欧美| 五月丁香激情综合| 蜜乳视频网站| 91色欧美| 热久久国产精品视频大陆精品| 中文字幕中文字幕一区二区| 亚洲综合色图欧美| 91久久午夜无码鲁丝片久久人妻| 亚洲一区二区精品福利| 亚洲天堂男人的天堂| 蜜臀AV一区二区三区激情综合| 影视综合无码少妇| 蜜臀视频网站| 四虎免费在线播放| 亚洲色图美腿丝袜| 又黑又大又粗| 免费精品99| 高潮的A片激情扒开一区| 欲色综合| 日韩一级二级三级免费看完整版国语版 | 99无码视频| 69少妇一区二区| 亚洲日韩精品一区二区| 日本国产二线女色| 精品人妻一区二区乱码一区二区| 五月天综合| 欧美性爱第一区| 久久超碰网| 自拍第一页| 性色中出| 国产成人资源| 9久综合网| 亚洲九九夜夜| 免费操逼视频下载| 国产欧美日韩一区二区三区| 伊人加勒比| 香港久久久| 国产麻豆一区二三区| 国产福利夜| 久久欧美按摩999| 日本欧美国内在线| 日本韩欧美在线播放a| 99这里只有精品国产| 91色图| 中日韓欧美高清| 97亚洲自在精品在线观看| 先锋音影AV| 97资源欧美| 亚洲人在线| 欧美淫乱视频| 91熟女视频网| 99精品九九九九九九| 2019亚洲男人天堂| 久久九九精品一区二区| 国产99999久久精品| 亚洲色图国产另类| 裸体1区| 女生自91网站| 中文字幕AV片| 亚av顶级裸体一区二区三区四区五区| 操逼精品视频| 91天美传媒在线观看| 中文幕97| 情色五月天就去干| 亚洲成人ab| 91欧美在线| 天堂v无码免费视频| 探花精品 一区二区| 熟妇乱伦一区二区| 在线观看无码三级少妇| 91快色色色色色| a v网站在线播放| 亚欧Av| 99精品在线播放| 婷婷精品| 亚洲淫乱骚妇AV| 亚洲和欧美裸体美女双飞视频| 欧美日动态视频| 97国产精品久久久久| 亚州五月| 色婷婷国产精品一区在线观看| 很很操在线| 日本精品网站在线中文| 入口操逼网站| 大香蕉操久久| 亚洲视频二区| 91成人18| 黄色欧美性爱视频| 久久国产三区| 91精品又粗又猛又爽| 97人人爱人人乐| 伊人网青青| 国产69精品久久久久99尤物| 日韩美女久久一区二区三区| 91N综合网在线| 国产熟女无套内射| 色综合av男人天堂| 嗯嗯,啊啊,国产精品| 日本好吊色视频| 亚洲欧美黄| 亚洲av影音先锋| 日韩三级一区 | 九草九九九| 无码天堂| 久久五月天婷婷| 亚熟hd视频在线| 久久少妇| 91日本在线观看| 超碰人妻久久人妻中文97| 成人九九| 国语精品内射在线观看| 有码色中文字幕在线观看| AV天堂因数| 一起草日韩| 欧美激情视频一区二区三区不卡| 国产精品麻豆免费视频| 亚洲丝袜色| 色99久草| 日韩欧美aⅴ综合网站发布| 一区二区激情国产熟女 | 人妻久久一区二区三区| 在线精品福利免费播放| 西西美女视频网| 国产精品操| www.丁香五月| 日韩精品人妻中文字幕不卡乱码| 国内毛片婷婷六月色| 欧美中文字幕男人天堂久久精品 | 国产精品高潮久久久无码| 90后性网国产欧美| 蜜桃臀久久| 亚洲欧美综合区自拍另类| 午夜呻吟欧美| A级片日韩欧美国产欧美视频精选观看| 超碰人人草| 九九免费影片| 亚洲综合精品国产一区| 九一性生活免费视频| 亚洲精品国产无码高清| 91伊人大香蕉| 一级@啪啪视频| 美骚妇av高清在线| 国产精品熟女九色九色蜜臀| 97精品久久久久久久| 日韩欧美性吧婷婷乱伦大香蕉 | 欧美亚洲高清晰 | 日本一级不卡一二区| AV不卡在线| 91艹| 国产成人无码高清| 偷拍导航视频网站| 玖色AV| av激情亚洲五月天| 吉川爱美亚洲二区在线| 亚洲人妻中文高清| AV色女综合| 人妻啊啊人妻啊啊| 国产偷拍网站| 98福利在线视频| 国产无马视频| 亚州欧美在线| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 亚洲天堂日本| 日本午夜精品理论片A级APP发布| 精品久久97| 天美传媒国产原创中文字幕亚洲欧美另类 | 97免费视频在线观看| 97AV爱| 免费观看网黄| 91男同| 一区在线观看中文字幕| 久久久久久久性爱| 性爱欧美五月| 五月丁香综合激情| 人人操人人插 - 百度 - 百度| 啊啊啊97视频| 综合五月婷婷| 中文字幕精品一区欧美| 加勒比无码毛片| 久久人妻四季| 久久久久国产精品喷潮免费观看臀| 在线播放欧洲免费av| 91人人看| 亚洲欧美精品福利在线| 热无码中文亚洲H一道本一区二区| Julia Annxxxxx| 亚洲精品819| 3D污黄视频在线观看| 色五月AV| www.人人摸在线视频| 亚洲一区二区三区麻豆传媒| 91Chinese在线| 色色网91| 最新日本中文字幕| 鸥美中出| 青青草一区二区三区四| 夜夜狠狠躁日日躁色视频| 超碰在线人妻| 中文字幕免费看大片| 视频国产成人精品日本亚洲18| 亚洲一区二区麻豆影院| 亚洲中文字幕精品久久久久久直播| 天天躁日日躁xxxxx| 日韩熟女无码| 国产精品福利资源在线尤物| 91麻豆天美| 91视频精品| 一区二区三区黄片免费观看| 老司机老司机午夜影院| 亚卅熟女乱色| 日本欧美成人片AAAA| 欧美另类色图片| 欧美亚洲丝袜美女电影| 日韩欧美丝袜诱惑| 国产又长又大又粗的视频| 久久人妻熟女一区二区| 91久久青青草原精品| 性爱乱伦视频免费| 亚洲AV成人在线| 91久久国产综合久久| 久久免费精品96| 亚洲第一页欧美| 99这里都是精品| 人妻天堂综合网| 日韩免费性爱视频在线观看| 久久精品日韩| 老外又粗又长一晚做五次| 亚洲中文字幕在线视频一区二区| 色偷综合| 久综合国内精品自在自线| 日本一区二区电影网站| 欧美高清色| 中亚精品极乱| 国产精品久久久久久久久久久久| 在线播放中文字幕| 亚洲欧美伦综合| 欧美在线永久天堂| 国产精品毛片?v一区二区三区| 色区97| 精品久久久久av影院| 91精品国产一区三一| 2020国产精品| 精品99999久久久久久| 亚洲天堂一二| 在线综合色| 热久久99999| 久久久久亚洲三级电影| 99久久久久| 96超碰网| 欧美后进式| 中文 人妻 制服| 97干在线视频| 91欧美亚洲| 久久免费老司机精品| 欧美翘臀视频网站一区二区三区| 五月婷婷激情| 国产日本一区二区三区蜜臀在线观看| 人妻在线视频| 熟女少妇视频| 日韩99神马视频播放片在线播放| 97干97色| Aa东京男人的天堂| 99热伊人| 久久性爱视频99| 激情久久日韩精品中文字幕麻豆| 日韩亚洲Av人人夜夜澡人人爽| 91N综合网在线| 丁香五月成人| 在线看的av| 亚洲欧美啪啪| 九九玖玖精品| 免费在线黄片视频| 精品熟女呻吟久久91| 久久九七| 99色在线观看| 欧美性爱中文字幕无线码| 2020天天色综合| 天天干一区二区| 秋霞一级视频在线观看免费| 91精品91久久久久77777俄罗斯老妇姓x| 久久国产精品一级二级三级| 夜色AV无码手机在线影院 | 四虎AV影视国产精品亚洲精品| 国产亚洲日韩在线三区黑人| 欧州91高潮| 九色 蝌蚪 熟女自| 久久精品中文| 亚洲人在线成线成人| 久久精品国产99久久,亚洲日韩久久日本一区一区三区 | 熟女高潮合集-永久久久-成人AV| 亚洲脚交| 亚洲国产精品久久久久婷婷老年| 91丝袜在线播放| 蜜桃午夜视频一区二区| 精品视频久久区| 欧美青青草视频| 91麻豆天美国产欧美高潮| 亚洲人妖网| 四虎在线播放| 91美女看B| 欧美性爱三区二区| 大二网站亚洲| 日韩性爱小视频在线观看| 久久久精品一区二区| 隔壁邻居波多野结衣中文字幕| 国产精品网站www| 欧美论理片| 色综合五月天| 国产又色又爽又舒服的三级视频| 蜜臀操逼黄色视频操的好爽| 欧美操逼熟女| 亚洲精品亚洲人成人网| 日本特黄f c2| 久久久性爱视频| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 婷婷五月天激情网| 国产AV久久野战精品| 国产区性爱在线视频秋霞豆 | 97资源超碰| 久久久久久91香蕉国产| 欧美中字不卡| 欧美97爱| 强奸乱伦大香蕉| 免费一级欧美片片线观看| 最新欧洲欧美日本激情网站| 中文字幕乱碼在线| 欧美日韩国产色五月综合在线| 欧美一区二区亚洲天堂| 偷拍 精品 另类 四区| 嗯嗯啊好大| 97干97色| 爆操无码| 欧美一区二区成人一卡| 日韩欧美女求操每天更新| 国产免费黄色一级大片| 国语av最新自产拍在线观看| 亚洲s在线观看| 国产超碰97| 欧美日本中字另类在线| 色五91| 啊啊啊啊,啊啊好多水| 日日干天天干夜夜爽| 99人人干| 久久9精品网站| 天天色黄色影院天天操| 日韩人妻操B| 日日躁夜夜躁狠狠躁超爽| 国产69精品久久久久99尤物| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 超碰免费人人| 金莲网址| 国产精品久久久久综合| 家庭乱伦网站国产| 99热这里是精品| 人人操人人摸人| 黑人与人妻| 久久美女国产| 插B在线观看| 青青草自拍视频在线播放| 欧美色图 色综合图| 99自拍视频在线观看| 午夜啊啊| 不卡人妻少妇精品毛片一区23区视频| 亚洲AV色图| 老司机午夜精品视频| 成人三级片无码| 天堂精品| 久久老子无码午夜伦不卡| 操逼免费视频无码国产| 美中日韩无码| 色哟哟AⅤ| 青青草视频在线观看一区二区| 插入逼91| 欧美最大综合网| 六月丁香网| 亚洲精品一区二区精品| 99热18这里只有精品| 九月婷婷综合| 亚洲人体视频在线观看| 亚洲日本天堂| 玖色AV| 日韩性爱人人爱人人操| 欧美—性—交—色| 美国久久一二三四| 九九亚洲| 亚洲无码?第一页| 国产熟妇 码视频户外直播| 老熟女中文字幕高清| 熟妇熟女视频一区二区三区| 在线免费观看日韩一区| 特污精品女优骚货黄色视频在线免费观看| 四虎 精品 WWW| www.色操逼| 操高情无码| 人人操 欧美| 97资源久久| 欧美九九九| AV在线播放网址| 超碰碰激情97+久| 亚洲欧美另类少妇精品| 久久久久久午夜男人的天堂| 粉嫩不卡一区二区性爱| 女人被男人桶爽视频网站| 91久久| 1769成人国产精品视频| 亚洲资源站| 青草精品视频日本久久久久网站在线| 熟妇一区,二区,三区。| 日日夜夜模| 中文字幕伊人| 美女让帅哥通她小鸡鸡| 一级黄碟| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 久久激情五月| 亚洲免费在线探花| 嗯啊抽插大香蕉网页| 骚逼一区二区| 久久综合女优| 激情五月天丁香社区| 欧美色图另类图片| 91蜜臀在线久久久久| 美日韩男女操屄视频| 久草在| 久久久久久人妻一区精品色欧美| 亚洲图片在线| 国产激情片在线观看| 人妻熟女av国产网站| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 亚洲国产成人7777| 欧亚乱色熟女一区二区| 欧美精品日韩一区二区| 91午夜无码| 无码区蜜乳| 国产一区二区三区视频在线看| 人妻嗯啊啊在线播放| 亚洲97超碰| 国产美女裸体秘 永久无遮挡| 狠操91,com| 中文字幕丰满子伦无码专区在线视频最新 | 欧美性高潮| 精品蜜乳AV免费观看| 在线观看日韩av不卡| 大香蕉伊人一区在线观看| 二级毛片| 夜夜操青青草| 色色色色色色色色色色色色色色综合| 欧美色图下一页| 亚洲97在线观看| 立川理惠加勒比无码| 中 文字幕一区二区三四 五 区日 日 骚 | 上特色A在线| 超碰人人干| 91老熟女91老女人| 欧美国产精品| 啊啊啊啊啊啊好湿好爽视频| 男人的天堂2018| 激情五月综合网| 精品免费成人久久| 成人免费福利在线观看| 手机久操欧美综合色码| 伊人一区二区在线播放| 白丝1区2区3区| 91美女在线观看| 最新欧美色网| 国产在线视频午夜精华在| 亚洲精品久| 超碰97精品| 国产精品乱码久久久久久久久久久久| 亚洲综合九九| 妇女视频网站| 日日日日做夜夜夜夜无码| www.91欧美| 欧美综合区| 中文乱码字幕观看| 日韩9999| 免费人成?大片在线播放| 久9综合在线| 青青青国产| 色综合久久av| 久久婷婷一区| 人人摸人人干| 高跟丝袜AV专区国产| 欧美成人精品欧美一级乱黄一区二…| 亚洲 91 在线| 老熟妇一区二区三区…| 精品人妻一区二区三区免费视频| 亚洲 图片 综合91| 久久五月天婷婷丁香中文字幕| 男人天堂最新手机版在线青青草| 啊啊啊不要好疼视频| 国产成人自拍视频视频| www.男人的天堂| 日韩丝袜高跟制服在线观看| 久久午夜伦| 91亚洲人电影| 免费网色网站| 五十路三区在线| 伊人网综合在线视频| 日本三级韩三级99久久| 91欧美少妇| 2023天天操夜夜操| 中文字幕成人| 色九色久| 白嫩国模丰满一二三区| 蜜乳AV免费观看| 成人免费视瓶| 亚欧无码线免费观看视频| 97综合久久| 亚洲国产蜜臀系列在线观看| 粉嫩小泬久久久一区二区| 国产精品久久久777| 色超碰综合| 久久9精品网站| 少妇久久久久久久久| 青青草中文字幕| 97在线观看视频| 中文字幕一区二区三区四五区| 亚洲AV噜噜狠狠网址蜜桃动漫| 色偷偷色偷偷欧美日韩| av日韩国产一区二区| 免费超碰97久久| 久久精品三级影视| 女生看匆91网站| 夜夜爽爽爽| 粉嫩av平台| 日韩av色图综合| 污污汅18禁网站在线永久免费观看| 香蕉免费一区二区三区不读| 99久久久er直播网址| 久草色在线观看| 天天舔天天| 伦理弟一页| 校园春色欧美色图| 青草影院内射高潮| 久久精品成人一区二区三区蜜臀| 日逼视频日本| 天天日骚逼熟女| 67914亚洲精品| 另类亚洲一区二区三区| 亚洲一区亚洲天堂| 国产亚洲在线| 亚洲欧洲自拍图片专区满春格| julia中文字幕在线观看| 中文字幕av亚洲在线| 啊啊啊啊操死我| 97视频620| 去干网最新版| 久久国产AⅤ| 九九九精品色乱九九九| 99热精品在线| 国产精品久久久久久久电影渣男| 久久精品99| 91在线|亚| 亚洲第一精品在线视频| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 97网站在线观看| 欧美三级一级| 免费中文在线| 人人爱人人乐人人操| 智利AV在线网| 91丝袜美女| 9999免费精彩视频| 一级性爱视频免费在线| 本道在线| 久久av网| 色色亚洲| 黄片aaaaa一区| 黄色视频高清无码网站| 33044男人的天堂深夜备| 中文久久一区| 国产 码在线成人网站| 亚洲欧洲综合av在线| 大香蕉狠狠爱| 丰满人妻一区二区中文| 嗯嗯嗯啊啊啊操的我好爽| 久久美女福利是上海美女| 欧美十八禁视频| 欧美 亚洲 在线| 天美麻豆黄色录像| 啊啊啊啊二区好大| 久久理论字幕视频| 久/久精品99看9| 黄片aaaaa一区| 眼镜人妻101.com| 欧美色就是色| 熟妇一区二区| 亚洲欧美综合图片| 亚洲欧美在线综合| 99re69综合| 素人美腿视频网站| 少妇二级| 91碰碰碰| a在线观看| 草莓精品视频| 熟女五十路一区二区三| 日本国产亚洲一区在线观看| 91天天看| 国产精品香蕉| 亚洲图片欧美色| 亚洲高清色综合| 中国91AV| 久久久久久久久久久久色网| 中文字幕在线第二页| 久久久久久裸体| 伊人色综合欧美| 欧美成人国产精品| 国产精品久久久久久久久久久久久久久久 | 无码精品久久| 亚洲国产精品成人综合| 国语对白露脸XXXXXX| 亚洲无992tv| 老司机福利青青草| 亚洲视频中文一区| 国产精品成人AV片免费看网站| 美女被啪到深处抽搐视频| 中文字幕欧美丝袜07资源| 91九九| 婷婷伊人五月| 欧美一区二区一级岛国大片| 天天日天天干天天色| 操婢日韩| 精品一区二区综合熟妇| 国产剧情AV不卡在线观看| 日韩乱伦视频| 另类小说五月天| 爽爽歪在线视频| 久久超碰亚洲人| 欧美日韩婷婷中文| 超碰免费欧美7| 91蜜桃传媒精品久久久一区二区| 96国产精品| 青青草中文字幕| 青青免费在线视频一区| 国产精品无码av嫩草| 国产视频一区二区免费| 婷色五月| 日本97久久久精品| 91女优在线观看| 女人香蕉久久毛毛片精品| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 99日精品欧美国产| 无码色| 男人天堂久久日韩| 五月天亚洲网| 国产精品欧美在线观看| 青青青国产手线观看视频2| 亚洲欧洲精品视频发布| 色婷婷av在线观看| 亚洲三级网址久久最新| 女上位精品在线| 青青色在线观看| 亚洲精品毛片在线观看| 色婷婷成人| 亚洲精品国产精品乱码不卡| 日本免费二区三区| 午夜啪| 日本日皮视频逼| 91大神电影天堂| 中文无线日韩一区| 91无码西班牙视频在线| 青娱乐久久艹| 婷婷五月天久久精品视频一区二区三区| 9久精品视频在线观看| 麻豆尤物视频网| 7777奇米影视久久| julia高潮后不停追击中出| 熟女欧美日韩综合婷婷| 这里都是精品| 日本熟女免费視颖| 人人色97| 超碰社区97| 日韩性爱免费观看视频| 色五月av| 亚洲女人毛茸茸91| 日韩簧片免费看| 亚洲色图91欧美日韩| 欧美激情亚洲情色| 91性高朝久久久久久久久| 九九99久久| 亚洲欧美日韩中文久久自慰| 欧美区亚洲区偷拍区| 曰韩精品九九无码| 男人的天堂三级| 中文日本免费高清| 毛片17S| 精品78| 五月婷婷六月丁香| 蜜桃臀一区二区三区久久| 被男人添B超爽视频| 视频在线观看一二三区| 78超碰| 99久热| 人妻娇喘 激情视频| 欧美网站免费| 日本免费一区二区不卡| 综合 欧美 亚洲 日本| 超碰在线人妻不卡| 日本成人免费一区二区三区| 97视频观看| 欧美九九九九九| 五月婷婷影院| 九九九国产| 久热婷婷| 精品人妻丰满熟妇一区二区三| 两性综合网| 亚洲蜜臀精品视频久久| 欧美日韩国产色图在线| 蜜臀久久99'精品久久久| 女人 A一级| 九九人妻| 国产热RE99久久6国产精品首| 欧美日日人人天天| 日韩性爱播放| 999国产精品999久久久久久| 久久婷婷精品| 亚州男人天堂| 亚洲aw毛茸茸在线| 三级日本一区二区三区| 色色99| 狠狠中文字幕| 97久久天天综合色天天综合色电影| 成年人黄色小视频网站| 呦女网站| 91九色网| 97超碰人人操人人操| 亚洲av热热色| 视频国产精品未满十八禁止在线观看| 国产欧美成人精品| 26uuu国产免费观看| 国语精品对白| 黄页大片在线观看| 日本十八禁免费看污网站| 极品色电影院| 国产亚洲综合欧美一区| 9118禁| 黄色高清久久无码依人| 操逼操逼视频操逼| 欧美综合综合| 热天堂一区二区| 国产高清26uuu| 999国产精品999久久久久久| 91亚洲黑人| 日日日日做夜夜夜夜无码| 欧美后入式| 一区二区三区网站日日骚| 国产日产精品久久快鸭的功能介绍| 欧美爱国产综合、| 精品久久久av| 插日本熟女视频| 欧美爱爱97| 天天色踪合| 9久超碰| 国产精品美女在线一区| 99热伊人| 亚洲资源网| 欧美 亚洲 综合 制服| 少妇人妻好深太紧了vr91| 78m啪啪啪| 成人在线永久| 男人夜色天堂ss| av绯色| 亚洲天天综合| 亚洲男人天堂视频| 精品性爱一二三区| 香蕉久久国产AV一区二区| 亚洲精品久久久久毛片A片拉屎| 欧美 日韩 另类 亚洲| 五月天婷婷小说| 少妇啪啪自拍| 欧美亚洲中文| 人伦四五区| 99色婷婷中文字幕乱色| 丁香五月社区| 欧美丝袜制服久久| 一级做受视频免费是看美女| 91热热色| 国产精品在线一区二区| 日本不卡三级网在线播放| 成人国产精品三级A片| 素人一区二区三区日韩| 九九九九精品九九九九| 成人夜夜| 久久久专区| 玖玖综合色| 亚洲色图超碰在线| 成人av动漫在线观看| www.久久最新地址| 亚洲最新Av| 久久久久夜夜夜夜| 精品玖九九久| 久久久久久免费电影| 色娱乐色呦呦夜夜夜夜av| 欧美少妇一区二区三区| 欧美九9 9 9| 香蕉久久国产AV一区二区| 久久久无码av精| 欧美性爱日韩性爱| 伦激情人妻另类人妻| 青娱乐休闲视频在线观看| 东京太热男人的天堂久久久| 伊人在线大香蕉二。| 久久夜精品一区二区三区| 久草新免费| 在线视频五十市| 久久精品老司| 91亚州欧美| 四虎av在线| 精彩久久中文| 狠狠干妹子| 大香交| 中文字幕av一区二区三区人妻少妇| 亚洲国产丝袜在线观看| 香蕉免费一区二区三区不读| 人人搡人人肉久久精品| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 国产91丝袜在线播放蜜月| 国产第二页| 91男人天堂网| 国产91丝袜在线播放蜜月| 天天躁夜夜躁狠狠躁AV| 女上位精品在线| 狠久久| 亚洲欧美色图片| 国产无码精品久久久久久| 亚洲 欧美 精品专区 极品| 国产精品高潮久久久无码| 天天影视色香欲综合网小说| 四虎午夜影院| 亚洲一区二区三区播放在线| 国产欧美岛国精品一区| 国产超碰| 伊人影院中文字幕| 亚洲欧美另类少妇精品|