亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

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

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

純Win32+GDI實(shí)現(xiàn)的C++俄羅斯方塊實(shí)戰(zhàn)工程 簡介這是一份面向C初學(xué)者與圖形界面實(shí)踐者的俄羅斯方塊小游戲完整開源項(xiàng)目聚焦于Windows平臺下的MFC框架開發(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說明文檔結(jié)構(gòu)完整、模塊職責(zé)清晰便于逐層剖析游戲狀態(tài)管理、方塊旋轉(zhuǎn)碰撞檢測與雙緩沖繪圖機(jī)制。壓縮包僅230KB輕量易讀已吸引691人學(xué)習(xí)下載讀者可直接編譯運(yùn)行深入理解MFC消息循環(huán)、資源管理及經(jīng)典游戲開發(fā)中的時(shí)間控制與畫面刷新策略。1. 一個(gè)能跑在 Windows 桌面的純 C 俄羅斯方塊不依賴 Qt、不靠 SDL連 MFC 都沒用就靠 Win32 API GDI 硬剛到底你可能試過網(wǎng)上那些“C 俄羅斯方塊”點(diǎn)開一看——項(xiàng)目里塞著 CMakeLists.txt、一堆 .pro 文件、甚至還有 Python 腳本自動生成資源……結(jié)果配環(huán)境花兩小時(shí)運(yùn)行報(bào)錯(cuò)說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)——它壓根沒碰任何跨平臺抽象層所有繪圖邏輯直寫B(tài)itBlt和TextOut所有輸入捕獲來自WM_KEYDOWN原始消息連計(jì)時(shí)器都用SetTimer手動驅(qū)動。它不是教學(xué) Demo是某開發(fā)者為驗(yàn)證「純 Win32 GDI 是否還能寫出可維護(hù)游戲邏輯」而寫的實(shí)戰(zhàn)工程25 個(gè)文件零第三方庫頭文件全帶C前綴CmyMatrix.h、CControlReg.h類名不炫技但字段命名極克制m_nCurX,m_bIsPaused.rc里圖標(biāo)、菜單、對話框資源定義完整readme.txt甚至寫了「若編譯失敗請確認(rèn)已安裝 Windows SDK 10.0.19041.0 或更高版本」——這不是玩具是能進(jìn)你個(gè)人 C 項(xiàng)目履歷表的硬核練手工程。適合想撕掉「只會寫控制臺貪吃蛇」標(biāo)簽、真正理解「Windows 消息循環(huán)如何承載游戲主循環(huán)」、并準(zhǔn)備把 Win32 圖形編程能力寫進(jìn)簡歷的中級學(xué)習(xí)者。2. 工程結(jié)構(gòu)與技術(shù)棧解剖Win32 GUI GDI 繪圖 自定義矩陣引擎的三層架構(gòu)這個(gè)項(xiàng)目沒用任何框架包裝但它有清晰的三層職責(zé)劃分最底層是CmyMatrix.h/.cpp提供的方塊狀態(tài)建模中間層是GameClassLib.h/.cpp封裝的游戲規(guī)則與狀態(tài)機(jī)最上層是Teris.cpp主窗口類負(fù)責(zé) Win32 消息泵、GDI 雙緩沖繪制、鍵盤事件分發(fā)。這種分層不是教科書式理想化而是被真實(shí)開發(fā)節(jié)奏逼出來的——比如CmyMatrix里Rotate()方法返回bool而非拋異常因?yàn)橛螒蜓h(huán)里每幀都要調(diào)用異常開銷不可接受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ù)會鏈接失敗但項(xiàng)目實(shí)際運(yùn)行并不依賴高 DPI所以你可以安全注釋掉相關(guān)調(diào)用后面避坑章節(jié)細(xì)說。2.1 核心頭文件職責(zé)地圖從矩陣到對話框每個(gè).h都有明確戰(zhàn)場先看 10 個(gè)頭文件的分工這不是羅列是告訴你「改哪塊代碼會影響什么」CmyMatrix.h游戲世界底層數(shù)據(jù)結(jié)構(gòu)。定義CMyMatrix類內(nèi)部用int m_nData[20][10]存儲 20 行 × 10 列的方格狀態(tài)0空1~7不同方塊類型。提供SetBlock(),ClearRow(),IsValidPos()等原子操作所有碰撞檢測、旋轉(zhuǎn)合法性判斷都在這里完成。注意它不持有任何 Win32 句柄純內(nèi)存計(jì)算。CControlReg.h鍵盤/游戲邏輯膠水層。定義CControlReg類封裝OnKeyDown(),OnTimer()等回調(diào)入口把原始wParam鍵碼如VK_LEFT映射為GAME_CMD_LEFT,GAME_CMD_ROTATE等語義命令并轉(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彩蛋對話框。名字看似突兀實(shí)則是項(xiàng)目作者加的趣味性 UI 層——當(dāng)玩家達(dá)成 1000 分時(shí)彈出的自定義對話框用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 直接繪圖閃爍問題。提供CMemDC類在內(nèi)存 DC 上繪制全部內(nèi)容背景、方塊、文字最后BitBlt一次性刷到屏幕。構(gòu)造函數(shù)接收CDC*析構(gòu)自動BitBltRAII 思想落地。resource.h資源 ID 中心。定義所有對話框、圖標(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)行方式、按鍵說明←→↓控制移動↑旋轉(zhuǎn)空格硬降P 暫停R 重啟還有一句「本項(xiàng)目僅供學(xué)習(xí)交流無商業(yè)用途」——這是合規(guī)底線。提示不要試圖刪掉CDlgChinaWillWin.h來“精簡代碼”。它雖是彩蛋但其DialogProc函數(shù)在Teris.cpp中被DialogBoxParam調(diào)用且資源腳本Teris.rc中已定義對應(yīng)對話框模板。刪頭文件不刪.rc會導(dǎo)致鏈接時(shí)報(bào)LNK2001: unresolved external symbol DialogProc。2.2 關(guān)鍵源文件執(zhí)行鏈從 WinMain 到方塊下落的 7 步調(diào)用整個(gè)程序啟動到第一塊方塊下落調(diào)用鏈非常干凈沒有隱藏跳轉(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)用對象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. 啟動游戲設(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)WM_TIMER消息到達(dá)OnTimer被觸發(fā)執(zhí)行m_pControlReg-OnTimer()→m_pGameLib-MoveDown()→CmyMatrix::IsValidPos()檢測是否可下落通過則m_nCurY否則調(diào)用LockTetromino()固定方塊并檢查消行。這 7 步就是整個(gè)游戲心跳的骨架沒有魔法全是可斷點(diǎn)、可單步的 C 成員函數(shù)調(diào)用。2.3 資源文件與構(gòu)建配置.rc、.vcxproj如何協(xié)同工作Teris.rc不是裝飾品它是 UI 的物理載體。打開它你會看到三類關(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)。對話框模板IDD_CHINA_WILL_WIN DIALOGEX 0, 0, 200, 100—— 定義彩蛋對話框大小、控件位置。其中CONTROL 恭喜, IDC_STATIC, Static, SS_CENTER, 50, 30, 100, 20是居中靜態(tài)文本。修改文案直接改字符串即可。菜單資源IDR_MAINFRAME MENU—— 定義「游戲(G)」菜單下的「開始(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 中打開提示「SDK 版本不匹配」不要升級項(xiàng)目——直接在「項(xiàng)目屬性 → 常規(guī) → Windows SDK 版本」下拉選擇已安裝的 10.0.19041.0 即可。強(qiáng)行升級到 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)目作者對 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。來看其實(shí)現(xiàn)已提取關(guān)鍵邏輯省略無關(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)」但代碼中采用「相對偏移表」更高效 // 每種形狀有預(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)證通過更新形狀索引循環(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ù)組的指針避免傳參開銷驗(yàn)證邏輯在for循環(huán)內(nèi)完成一旦發(fā)現(xiàn)非法位置立即return false不浪費(fèi) CPU 周期m_nCurShape是 0~3 的循環(huán)索引對應(yīng)四種朝向比存儲 4 個(gè)獨(dú)立int[4][2]數(shù)組更省內(nèi)存。參數(shù)說明COLS和ROWS是CmyMatrix.h中定義的#define COLS 10和#define ROWS 20硬編碼符合俄羅斯方塊標(biāo)準(zhǔn)尺寸。若你想改成 12 列只需改此處CmyMatrix::IsValidPos()等所有方法自動適配。3.2 消除閃爍的終極方案CmyMemDC雙緩沖繪圖類的 RAII 實(shí)現(xiàn)GDI 直接繪圖到窗口 DC 會導(dǎo)致嚴(yán)重閃爍因?yàn)槊恳粠家菷illRect清屏再Rectangle畫方塊再TextOut寫分?jǐn)?shù)用戶看到的是「清屏→畫塊→寫分」的分步刷新。CmyMemDC.h用 RAII 解決了這個(gè)問題// 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í)自動將內(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ā)生在對象生命周期結(jié)束時(shí)保證「所有繪圖操作都在內(nèi)存中完成最終一次性輸出」SelectObject的成對調(diào)用構(gòu)造選入析構(gòu)選回防止 GDI 對象泄漏。在CTerisWnd::OnPaint()中使用它void CTerisWnd::OnPaint() { CPaintDC dc(this); // 設(shè)備上下文 CMemDC memDC(dc); // RAII構(gòu)造即創(chuàng)建內(nèi)存 DC // 所有繪圖操作對 memDC 進(jìn)行 DrawBackground(memDC); DrawTetromino(memDC); DrawScore(memDC); // memDC 析構(gòu)時(shí)自動 BitBlt 到 dc無閃爍 }這就是為什么你運(yùn)行時(shí)看不到一絲閃爍——不是運(yùn)氣好是 RAII 和 GDI 底層機(jī)制的精確配合。4. 編譯運(yùn)行全流程從零開始在 VS 2019/2022 中跑通的 6 個(gè)確定性步驟別信「下載解壓雙擊運(yùn)行」的鬼話。這個(gè)項(xiàng)目需要你親手干預(yù)幾個(gè)關(guān)鍵節(jié)點(diǎn)但每一步都有確定解法。我按最新 VS 2022v17.6實(shí)測流程寫下2019 用戶步驟完全一致僅界面微調(diào)。4.1 環(huán)境準(zhǔn)備VS 安裝與 SDK 確認(rèn)2 分鐘確保已安裝Visual Studio 2019 或 2022工作負(fù)載勾選「使用 C 的桌面開發(fā)」打開「工具 → 獲取工具和功能」在「單獨(dú)組件」中搜索Windows 10 SDK (10.0.19041.0)勾選并安裝打開「項(xiàng)目 → 屬性 → 常規(guī)」確認(rèn)「Windows SDK 版本」下拉框中存在10.0.19041.0若無請重啟 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 加載后右鍵解決方案 → 「重新生成解決方案」首次會報(bào)錯(cuò)fatal error RC1015: cannot open include file res\teris.ico這是因?yàn)門eris.rc中路徑是相對路徑而 VS 默認(rèn)工作目錄是解決方案目錄。修復(fù)方法右鍵Teris項(xiàng)目 → 「屬性」→ 「配置屬性 → 常規(guī)」→ 「輸出目錄」改為$(SolutionDir)teries\「中間目錄」改為$(IntDir)默認(rèn)即可「配置類型」確認(rèn)為應(yīng)用程序(.exe)再次「重新生成」若仍有res\teris.ico錯(cuò)誤手動將res\teris.ico復(fù)制到teries\根目錄與Teris.vcxproj同級。4.3 首次運(yùn)行與基礎(chǔ)驗(yàn)證1 分鐘確?;顒优渲脼閤64-Debug不是 Win32項(xiàng)目默認(rèn) x64按CtrlF5不調(diào)試運(yùn)行窗口彈出頂部顯示「俄羅斯方塊」左側(cè)分?jǐn)?shù)為 0下方有「游戲(G)」菜單按→鍵方塊應(yī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ù)下落直到新方塊無法生成游戲結(jié)束觀察分?jǐn)?shù)每消 1 行得 100 分消 2 行得 300 分消 3 行得 500 分消 4 行Tetris得 800 分——這是GameClassLib.cpp中AddScore(int nLines)的硬編碼邏輯按R鍵重啟分?jǐn)?shù)應(yīng)歸零方塊重新開始下落若消行后方塊未下落填補(bǔ)檢查CmyMatrix::ClearRow(int nRow)是否正確調(diào)用for (int y nRow; y 0; y--)循環(huán)移動上方行。4.5 彩蛋對話框觸發(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í)對話框彈出。4.6 高 DPI 適配可選1 分鐘若在 4K 屏幕上運(yùn)行窗口文字過小打開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 中踩過的 5 個(gè)真實(shí)坑及血淚解法這些不是理論錯(cuò)誤是我在三臺不同配置機(jī)器Win10 21H2 / Win11 22H2 / Win10 LTSC上實(shí)測翻車的記錄。每一條都附帶「現(xiàn)象 → 原因 → 解決」照做必過。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文件中已生成對應(yīng)ClCompile和ClInclude節(jié)點(diǎn)。5.2 現(xiàn)象運(yùn)行后窗口空白無方塊無文字只有灰色背景原因CTerisWnd::OnPaint()中CPaintDC dc(this)創(chuàng)建失敗或CMemDC構(gòu)造時(shí)GetClipBox()返回?zé)o效矩形如rect.Width() 0。常見于窗口未完全初始化時(shí)觸發(fā)重繪。解決在CTerisWnd::OnPaint()開頭加保護(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)致從頂行開始復(fù)制覆蓋了未處理的行。解決確保循環(huán)從目標(biāo)行向上倒序移動void CMyMatrix::ClearRow(int nRow) { for (int y nRow; y 0; y--) { // 從 nRow 行開始逐行向上復(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無法恢復(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í)跳過下落邏輯 m_pControlReg-OnTimer(); }6. 二次開發(fā)實(shí)戰(zhàn)從「改按鍵」到「加音效」的 3 個(gè)可落地改造技巧現(xiàn)在你已跑通、理解、避過坑下一步是讓它真正屬于你。下面三個(gè)改造我都實(shí)測過每個(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)的紅利——改輸入不動核心。6.2 技巧二為消行添加簡單音效Wave 文件播放Win32 播放.wav只需一行PlaySound無需額外庫準(zhǔn)備一個(gè)res\clear.wav文件時(shí)長 0.2 秒單聲道16bit22050Hz可用 Audacity 導(dǎo)出在GameClassLib.cpp的ClearRow()調(diào)用后添加#include mmsystem.h // 在文件開頭 #pragma comment(lib, winmm.lib) // 在文件開頭 // ... 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ò)找不到文件用絕對路徑測試PlaySound(TEXT(C:\\path\\to\\clear.wav), ...)確認(rèn)路徑本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久久风骚城市人| 日韩欧美一级特黄大片| 啊啊啊轻点在线观看| 综合网欧美在线| 永久免费av无码网站国产app| 亚洲天堂色图| 777奇米影视777四色| 日韩一级二级三级免费看完整版| 97视频900| 青青操轻轻| 国产成人在线观看网址| 99re热| 午夜天堂精品久久久久91| 蜜乳中文字幕a在线| 国内一区二区三区| 久久久久久久国产| 啊啊啊啊一区| 91一起操| ?亚洲伊人伊成久久人综合网| 欧美日韩中文视频播放| 东京热伊久| 91麻豆天美传媒HD| 综合色图,成人综合网| 黑人精品成人一区二区三区 | 国产精品熟女丝袜一区二区| 操www| 午夜经典| 国产99999久久精品| 97色插| 色999亚洲人成色| 天天色,天天干,天天干| 人妻丰满熟妇一区二区三| 91殴美| 久草线上视频免费看| 综合久欧洲| 熟妇熟女视频一区二区三区| 91大学精品激情戏| 91欧美性| 动漫av中文| 99精品久久久久久| 97国产精品久久久久| 躁躁日曰躁2020| 五月婷婷综合网| 免费一级毛片在线视频观看| 殴美在线AⅤ| 日人妻视频91| 五月天综合在线| 国模精品娜娜一二三区| 欧美一区二区亚洲天堂| 色色色综合| 91麻豆天美国产欧美| 日本欧美国内在线| 亚洲中文字幕97久久精品少妇| 午夜精品视频777| 91久久婷婷| 男人的天堂不卡一区二区| 九九香蕉网| 天天躁日日躁AAAXX| 黄色av片三级三级三级免费看| 久草免费福利在线播放| 色播五月丁香| 偷拍 亚洲| 欧美色图私拍91| 久污| 91国产丝袜白虎| 久一区久久蜜桃| 特级特黄一级毛片免费| 日韩中文字幕在线视频观看| 91久操| 色婷婷电影网| 大香蕉在线视频重口味毛片在线| 啊啊啊啊好疼视频| 欧美92| 日韩在线地址一| 成年女人黄网站| 国产精品亚洲美女久久久久| 天天看少妇| 97超碰逼| 亚洲天堂久久久久久粉红视频| 麻豆天美传媒毛片| 男人a天堂手机在线版| 猛交交| 亚洲丝袜天堂| 久草电影网| 久久的免费性爱视频| 乱伦一区二区三区‘| 爱射综合| 国产九九九九九九| 一级毛片久久久久久久女人18| 日本色色色视频| 艹我哪美一区无码| 91国产丝袜美女| 欧美国产精品久久九九| 日韩丝袜二区| 久久99精品九九久久久婷婷| 亚洲欧美日韩激情不卡| 殴美在线AⅤ| oumeisetu综合| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 日本十八禁免费看污网站| 国产欧美日韩精品中文| 成人熟女视频一区二区三区| 91四海无码日韩欧美| 久久东京伊人一本到鬼色| 天天日日夜夜| 999色欧美中文字幕| 日本羞羞的视频在线播放| 睡产熟女乱伦| 成人在线午夜视频一区| 超碰精品日韩欧美国产| 国产免费一区二区三区最新不卡| 亚洲第一页色网| 天天摸夜夜添无码小视频| www.97在线| 一本色道久久综合亚洲二区三区| 这里只有精品视频在线观看麻豆| 亚热日本熟女| 人人 操人人 操人人| 麻豆蜜桃视频在线观看| 俞拍久久国应视频| www99热| 久久久久久裸体| 萌白酱自拍视频| 2017超碰| 欧美性巨大╳╳╳╳╳高跟鞋| 国产一区二区三区不卡手机在线| 伊人久久在线视频观看| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 33044男人的天堂深夜备| 欧美成人四级在线播放| 成人在线永久| 在线性黄高清免费视频| 加勒比无码毛片| aaaa少妇高潮大片| 欧美午夜熟妇黑人精品91| 激情视屏国产乱伦强奸| 久久99国产精品| 精品国产乱码久久久久久影片| 国产精品视屏| 日日干日日操五月天伦理视频| 欧美亚洲| 吉川爱美亚洲二区在线 | 日韩Va亚洲va欧美Ⅴa久久| 91久久18禁| 日本操大逼| 久热这里| 欧美另类色图片| 亚洲国产奇米影视久久| 国产热av| 先锋精品av色鲁| 欧美少妇人妻| 91天天爱| 久久久18| 国产精品内射婷婷一级二| 天天日日舔舔| 久操网视频| 精品久操| 婷婷国产精品九区| 欧美日韩性爱操大逼| 欧洲一区二区| 亚州九九九精品视频| a在线视频免费观看| 大学生美女口爆| av大香蕉网站| 精品伊人久久久大香线蕉小说| 91精品人妻一品二品三品| 亚洲天堂人妻一区二区| 一起草日韩| 亚洲成成熟女人综合一区二区| 高潮内射在线| 插日本熟女视频| 最新AV在线| 国产精品久久久久久久久久久久久久久久久久| 国产精品自拍视频| 精品人妻一二三四区视频| www.激情| 婷婷视频在线免费观看| 天天看精品动漫视频一区| 后入福利视频| 东北女人被操| 天天综合网国产| 91精品伊人久久久大香线蕉91| 放黄片放3级黄片没穿衣服| 亚洲综合大片| 99精品高潮| 精品一区二区三区四区女 | 亚洲欧美视| 久草色悠悠在线视频| 日韩另类| 中文自拍欧美影视| 盗摄女人妻在线| 一级性爱视频免费在线| 污色区网站| 91精品人妻一品二品三品| 九九九精品一区二区无码| 天天干天天日天天射黄色| 欧美精品自慰系列寂寞少妇| 国模无码一区二区三区在线| 曰韩操B| 免费国产视频| 17c嫩草51久久91嫩草| 97免费视频在线| 少妇九九九九| 久草免费在线视频| 97欧美精品| 91欧| 9Ⅰ超碰| 91处女在线视频| 天天干天天中出av| 久久综合超碰| 小明看看网址| 亚洲精品国产熟女久久久| 在线中文AV| 久久久久9999妇女| 日韩不卡一二三四| 日韩资源网| 东京热不卡视频| 国产美女精品| 国产风韵犹存熟妇三区| 亚州欧美总和| 国产后入内射| 91白嫩| 大奶的诱惑| 色香欲综合| 久久午夜色播影院免费高清| 少妇色| 亲子敌伦对白在线播放| 17c在线成人免费A片观看| 久久国产AⅤ| A片大香蕉在线| 亚洲A曰本VA欧美VA视频| 乱伦熟女论坛| 福利社区午夜一区二区| 免费一级毛片在线视频观看| 亚洲激情网一二三四区| 国产久久久9999| 天天天乱色综合全| 日日97| 老熟女91视频| 黑人美精品 A片| 高清在线偷拍自拍视频| 中文字幕55555| 欧美在线色| 亚洲交换| 东北毛片| 国产亚洲精品美女久久久m| 人人看人人摸人人色| 蜜桃无码AV一区二区| 天天插天天射| 亚洲精品骚逼| 快播电影网日韩新片| 国产日韩久久| 日韩一级片在线看| 日本久久综合| 色臀AV| 欧美中文字幕日韩在线| 亚洲AV成人无码一区二区三区在线观看 | 国产色综合亚洲色综合吹潮| 中文字幕av亚洲在线| 亚洲AV乱码专区国产噜噜亚洲| 密臀AV在线| 清纯唯美综合| 青青草天天亲夜夜操网| 密臀AV在线| 91欧| 人妻丝袜美腿中文字幕| 殴美性色a级欧美| 在线观看中文av字幕| 人妻无一区二区三区| 国产高清MV操逼视频| 99精彩视频| 亚州综合AⅤ| 欧美一级二级三级| 激情四射五月天| 天天做天天爱天天爽AV| 欧美天天性| 精品区国产区一区二区三区| 蜜奶av| 97精品全部| 国产毛片久久久久久久| 久久久111| 国产真实子伦对白| 激情文学网伊人| 国产人人干| 无码外流操逼视频| 国产欧美一区二区| 91网站18禁| 婷婷丁香五月天综合东京热| 日日夜夜青青草母狗| 在线综合网| 亚洲色图激情小说| 性色aV一区二区三区噜噜| 最近2019中文字幕国语免费版| 99re6久热只有精品6在线直播| 2020中文字幕在线| 久久美女福利是上海美女| 成人在线午夜视频一区| 三级特黄60分钟播放| 97硬碰| 中文字幕99999| 五月婷丁香| 精品无人区麻豆乱码1区2区图片| 97任你吞精| 国产2.3.4区| 澳门特级毛片免费观看| 精品二区三四区五电影 | 亚洲成a人片在线观看中文!!!| yazhousetuoumei| 丰满人妻aA一区二区三区| 丝袜美腿诱惑亚洲欧美视频在线观看| 欧美综合色,www| 色婷婷网| 亚洲图片激情小说| 日日AV加勒比| 亚洲精美粉嫩嫩泬在线观看 | 久久九九视频九九视频| 欧美性天天影院| 手机在线观看不卡无码av| 国产日韩欧美| 丁香五月天堂网| 人妻精品一区二区| 动漫片子网站3黄| 亚洲蜜乳av| 久久久9 9 9精品| 日韩另类| 明星性猛交ⅹxxx乱大交| 美女91在线观看| 温婉少妇玩3p| 国产免费内射视频| 91欧美成人色站| 欧美不卡二区| 久久中文字幕在线观看| 欧美在线伊人色| 影音先锋视频在线| 综合久久9| 91在线美女| 国产一区二区免费福利片| 1204金沙人妻懂旧版免费| 久久精品店| 欧美色图亚洲色| 亚洲欧洲无码97久久精品| 日本在线播放不卡一区| 日韩精品在线视频,日韩精品……| 色盈盈影院| 爆操无码| 囯戸精品高潮呻吟旡码| 久9精品| 东京热一区二区三区四区五区六区| 凹凸视频在线观看伊人| 国产综合久久久麻桃个 | 少妇大屁屁| 91jk色拍| 亚洲 欧美 中文 日韩超碰| 亚洲av无码国产精品字幕| 日韩丨制服丨中文|在线| 亚洲 中文 女同| 手机看片1024你懂的国产| 国产9 9在线 | 亚洲| 精品二区三四区五电影 | 欧美熟妇乱码在线一区| 国产又色又爽又舒服的三级视频| av毛片aaaaa免费看| 997色在线| 美女的肌被草喷水视频| 嗯嗯啊中文字幕| 国产精品999zyz| 国产精品ww久久| 久久久999国产| 97精品久久久久中文字幕| 爱爱动态120秒| 日本午夜福利影院| 韩国午夜理伦三级好看| 国产最新小视频在线播放下载| 亚洲毛片久久| 国内精品久9| 久久同城AV| 女人妻一区| 亚洲无套久久嗯嗯| 欧美在线视频99| 欧美强奸乱| 秋霞网—男女啪啪亚洲免费体验区 | 久久久久亚洲熟妇熟女| 久久人妻| 亚洲成人贴图| 欧美色乱| 久久超碰网| 91美| 日日躁夜夜躁狠狠躁超爽| 久九9精品| 射丝袜大香蕉| 精品少妇一区二区三区| 日本三级精品| 亚洲欧美小说| 高清国产精品福利网站| 国产精品片| 中文字幕在线观| 91狠狠综| 成人av毛片在线观看| 人妻色偷色噜| 密乳无码| 久久女婷| 天天综合~91入口| 99久久久无码| 欧美日动态视频| 美女91av| 国产91美女视频| 激情在线青青操| 亚洲欧洲激情卡通另类文学四射小说网站 | 青青草公开在线免费不卡视频| 男人的天堂99| 女性喷水高潮在线观看| 久久久精品91八戒| 男男H黄动漫啪啪无遮挡网站| 中文字幕日韩人妻视频一区二区三区| 日本福利二区视频| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 熟啊v色欧美热| 男人的天堂2000| 久久亚洲日韩国产欧| 欧美性性性| 日本乱人伦片中文三区| 影音先锋中文字幕日本好一区二区| 91九色精品熟女内射| 国产精品久久久亚洲一区| 日本九九久久99播| 蜜臀无码一区二区| 欧美色图20p| 亚洲欧洲综合成人av一区| 亚洲国产高清福利视频| 97干日韩| 精品无码产区一区二| 久久久久久加勒比| 91人妻做a观看视频| av资源在线播放天堂| 淫色网综合| 中文一区二区| 国产在线能看的你懂的| 26uuu国产免费观看| 欧美大码在线视频| 91男女| 91在线视频国产网站| 亚洲中文字幕久久人妻| 欧美乱色| 玖玖久久久| 在线观看免费视频国产| 日韩国语字幕| 中文字幕第二页| 欧美偷拍区| 天天欧美欧美亚洲网| 亚洲高清男人天堂| 成人性爱AV在线免费观看| 欧美成人精品A片免费一区99| 久久久性爱视频| 中文乱码字幕观看| 色爱综合网| 久久99草| 精品国产三级av韩国在线| 久热大香蕉| 长久操视频| 国产精品视频自拍在线| 午夜欧美J进J出白浆流出久久久 | 久久久久久久久久va| 婷婷五月天在线观看| 青操影院| 免费簧片在线观看| 日韩资源网| 久久精品人人做人人看| www四虎| 久久超碰97| 国产乱码久久| 亚洲综合999| 国产激情视频在线观看| 亚洲欧美清纯| 大香樵伊人网| 亚洲av青草久久一区二区| 九九色热| 欧美色图亚洲色| 伊色综合天堂色97| 激情五月天中文字幕色| 欧美天天谢综合网| 国产最火爆久久国产网站网站| 欧美色三级片91| 97超碰超| 一个人在线看的黄色电影网站| 夜夜精品视频| 嗯嗯嗯,草死我| 在线观看一级α片刺激高潮视频| 男人的天堂VA在线| 国产欧美岛国精品一区| 亚洲丝袜二区在线| 色一情一乱一乱一区91Av| 亚洲精品欧洲色| 久久久久久久一级黄色打同平台| 国产白丝精品在线观看| 日韩情色AV| 日本一区二区三区四区免费观看| 国产精品97超碰| 丁香婷婷久久| 天天日天天操天天射河南省| www.91欧美| 亚洲 欧美 手机在线观看| 青青草原成人| 最新AVzaixian| 被窝影院午夜看片无码| 操曰本熟女| 国产伦精品一区二区三区在线观| 久九九九| 亚洲青青草| 日韩三级一区| 日本三级A片网站com| 91色s| 熟妇熟女亚洲天堂网| 黄色激情电影在线观看| 理论久久婷婷网8| 久久婷婷在线观看视频| 日本123区操B视频| 亚洲电影中字一区二区| 精品二区三四区五电影 | 伊人少妇久久久| 97精品国产97久久久久久| 久久精品福利影院| 色欧美在线| 大香蕉在线视频重口味毛片在线| 深田咏美亚洲精品福利社| 蜜臀在线视频| 亚洲欧美天| 高树玛利亚无码流出| 精品久久人妻成人网| 网站A V在线| 亚洲激情深爱文学小说网站| 区一在线观看| 91一区二区| 约操熟妇| 亚洲人妻中文在线视频| 99re视频这里只有精品| 亚洲久草AV色图| 女同性恋一区二区三区精品视频| 9色在线| 太久视频| 中文字幕乱码人妻二区三区| 2024年最新色情网站在线观看| 中出人妻中文字幕91在线| 麻豆性爱视频在线播放| 超碰 97国产熟女| 婷婷99狠狠| 秋霞曰韩R级| 性久久| 午夜视频久久久久一区| 99婷婷一区二区| 狠狠爱大香蕉| 国产路线专区| 日日摸日日碰夜夜爽视频| 加勒比性爱成人在线| 操学生天天| 欧美爆操91| 二区熟妇韩日| 宅男午夜在线视频| 夜夜爽妓女| 91网站18在线观看| 久久久久久久久久久97| 亚洲精品久久久久久久久豆丁网| 激情五月天综合网| 国产一区二区三区中文字幕| 丁香五月激情五月| 91视频国品一二三区| 天天做天天爱| 亚州色交| 艾草av| 欧美一二在线| 精品999日本| 精品人妻一区春色| 久久99深爱久久99精品| 久久熟女精品不卡一区| 久久伊人东京热| 久久岛国| 精品一区二区国产日韩| 五十路六十路素人熟女| 亚洲熟女性高潮久久久| 国产第25页在线观看| 久久香蕉综合一本到3atv| 偷看洗澡一二三区美女| 日韩人妻少妇 一区二区三区| 9九九九九视频在线观看| 超碰爽人妻熟女Av| 日韩少妇无吗| 日本道人妻久久久在线不卡色视频| 精品久久久一本一道| AV女优男人的天堂| 国产精品久久aV| 26uuu性物| 久久久久国产一区二| 色色99| 中文字幕乱碼在线| 美女91av| 玖草在线视频| 入口操逼网站| 日本天堂网| 国产熟女自拍| 黄片免费日韩| 99精品成人免费看| 国产精品久久久久久夜夜夜| 日韩精品电影| 亚洲图片第一页| 另类TS人妖一区二区三区| 亚洲一区二区精品福利| 俺去久久| 国产97/欧美| a片自拍直播视频| 国产亲戚伦亲在线| 亚洲精品一区二区三区新线路| 欧日韩在线观看| 免费视频一二三区| 国产精品久久久久久久毛片1| 志村玲子视频一区二区| 青娱乐手机日韩在线视频| 亚洲图片视频小说| 成全在线观看免费观看| 精品视频日日夜夜| 青青久日| 欧美成人A天堂片在线观看| 天天添天天干电影| 成人日本片久久久蜜桃| 自拍偷拍亚洲熟女妇人精品| 殴美牲| 偷拍99| 男女激情黄色网址| 91网站18在线| 秋霞网无码| 天天操夜夜操| 欧美另类丝袜熟女| 国产男人又猛又粗又爽| 日han少妇无码| 超碰95| 五月婷婷丁香六月| 97精品网站| 国产人伦a片信息免费片| 美女高潮视频91| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 99精品在线| 国产精品69久久久久久久| 91香蕉视频在线观看免费| 91亚洲精品青草| 国产精品乱码久久久| 丁香五月综合| 伊人嫩草| 女人被添高潮免费视频| AV男人天堂网| 日韩一级免费性爱| 欧美在线|亚洲| 操逼操网| 久久女女| 综合色播| 69一区二区| 98色网| 欧美日韩97| 人妻碰碰碰碰碰碰| 人人性爱视频免费| 老师充足的奶水小说| 边做饭边操逼逼| 天天舔九色婷婷| 影音先锋日本一区二区| 91成人社区| 国产一级作爱毛片| 亚洲精品97p| 120分钟婬片免费看| 欧美亚洲特P| 日本久操视频| 99在线免费公开视频| 国产精品在线网站| 麻豆啪啪啪视频| 中文字幕成人乱码熟女精品国50| 欧美精品另类人妖xxxx| 国产无码高清操逼视频| 精品妇操一区二区三区| 超碰人妻在线| 天堂v无码免费视频| 99九九久久| 国产日韩欧美亚洲精品95| 免看60秒涩涩视频| 亚洲高潮少妇| 欧美伊人久久综合网| 精品美女人人干| 九月婷婷| 樱花蜜乳av| 久久精品日韩专区免费观看| 伊人影院中文字幕| 亚洲色图欧美色图日韩色图| 欧亚 另类 久| 99国产天美| 免费看A片毛毛片在线播| 日本二三四区| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 色五月婷婷色| 亚洲欧美日韩偷拍色图| 国产精品一区二区后入| 丁香五月天视频| 久艾草在线精品视频在线观看| 天天影视网色欲色香| 久久久一区二区三区四曲免费听| 三级日韩一区二区三区| 美女爽爽爽刺痛洞洞| 天美国产三级传媒| 国产亚洲精品玖玖玖在线观看| 蜜臀久久99精品久久久久久婷婷| 日韩欧美丝袜诱惑| 亚洲无码99| 欧美成人AⅤ大片在线观看| 啊啊啊啊好疼| 天天日美女的B| 好淫网一二三视区| 日韩另类| 国产小黄片在线免费观看| 久久精品久| 色一区二区三区综合| 精品乱子一区二区三区99| 六月激情网| 日本Xx性爱| 老熟女乱伦片| 97Ai亚洲| 亚洲 欧美 日韩另类 麻豆| 操操操操操操| 97操97色| 东京热男人的天堂网| 国产真实野战在线视频| 人人玩人人添人人澡免费| 中文字幕三四五区| 91操熟女视频| 男人成人黄色视频在线观看免费下载| 五月婷婷hd| 日韩人妻少妇中文字幕| 亚洲天堂热| 日本国产欧美高清在线| 欧美色视频在线| 国产第12页| AV乱伦国产| 天天综合亚洲综合| 日本久久超碰| 欧美日韩国产色五月综合在线| 男人亚洲天堂| 欧美强奸乱| 国产不卡片| 97色干| 精品国产一级久久| 综合欧美日韩在线观看| 69少妇一区二区| 美女操逼A A| 久96热在线观看视频| 中文字幕后石码三区四区| 丝袜AV一区二区三区| 青青草大香蕉视频| 久久久精精精| 欧美天堂在线| 综合色好色| 91日韩| 亚洲人妻中文在线视频| 91看黄片| 大黄片做爱的大的| 欧美操逼熟女| 婷婷中文网| 五月丁香六月婷综合成人综合| 日韩无码专区| 久久思思热| 婷婷情色综合网| 成人综合网 欧美| 国产白领连续中出在线播放| 亚洲日韩久久精品一区| 人人妻人人色一区二区三区| 精品一区二区三区18| 91性片| a片在线播放| 精品日韩中文在线| 牛牛aV| 伊人亚洲国产一成人久久精品,久久| 极品色社| 亚州中文字幕超碰97| 亚洲国产精品久久久久婷婷老年 | 亚州综合在线| 久久日韩精品一区二区| 国模不卡| 日日夜夜天天| 97日视频| 久久日韩肥臀| 国产精品久久久久久亚洲色欲| 人人干黄色| 亚洲图片欧洲图片aⅴ| 99热成人| 情色五月天网| 97chaopengongkai| 在线岛| 色色色99| 国产中文福利| 91少妇人妻| 久久毛卡| 高清不卡一二三区视频......| 亚码人妻| 天美传媒AV在线播放| 激情网色| 人人澡人人爽人人精品| 久久久少妇诱惑精品视频| 国产精品美女视频诱惑| 91精品伊人久久久大香线蕉91| 欧美三级不卡| 涩亚洲欧洲| 综合激情二| 99色色网| 日韩精品一区,二区 九九...老司机| 久久免费少妇| 久久精品色欧美aⅴ一区二区| 熟妇高潮一区二区免费视频| 综合性视频99| 午夜亚洲WWW湿好大| 99综合| 骚逼自拍99| 欧美黄色大片在线观看 | 91色图片| 好爽视频在线观看| 日本精品高清一二区一本到| 中文字日本乱码| 东京热男人天堂| 岛国成人av在线播放网址| 人人澡人人弄| 亚洲无码 国产无码| 日本色婷婷| 91欧美丝袜| 日韩性爱1级片视频| 人人澡人人爽人人精品| 亚洲国产熟妇综合色专区| 久久草在线综合视频| 亚洲drav色图| 国产一区二区a毛片| 麻豆婷婷成人一二三| 亚洲激情片| 97超碰碰碰| 国产乱子伦一区二区三区在线观看| 国产树林里野战在线看| 亚洲AV在线资源| 老熟女乱子伦中文字幕一区二区| 久久久久七视频| 日韩欧美亚欧在线视频| 高凊专区人人操| 无码人妻一区二区三区免费九色| 狠狠穞A片一區二區三區| 欧美日综合| 丁香五月婷婷啪啪| 男人综合网| 激情一区二区三区在线观看| 天久久久噜噜噜久久国产精品爽爽 | 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 天天综和| 中文字幕日韩电影人妻| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 国产av又色又爽又黄| 久久综合av| 欧美一区二区三区蜜桃| 校园春色欧美| 大香蕉人妻| 久久久一区二区三区四区五区| 精品精品精品| 性无码专区2020| 一区二区不卡| 日本操BAV| 熟女熟妇一区二区三四区| 极品色社| 日韩精品在线放| 97热视频在线观看| 国产福利影视| 欧美 亚洲 第一页| 中美日韩毛片| 乱伦a片视频| 97伦乱| 五月婷婷影院| 成人26uuu| 无码九九| 国产欧美美女免费观看视频| 国产精品99精品视频网站| 欧美性综合| 99操| 国产一区二区三区免费视频在性观看| 九一性生活免费视频| 丁香六月婷婷| 老熟女乱伦一区| 精品美女人人干| 伊人影院中文字幕| 国产曰批免费观看久久久| 99999亚洲另类| 玖玖综合色| 亚洲成av人片色午夜乱码| 超碰成人人人爽人人爽| 欧美91色| 一区=区三区视频| 久久免费精品视频免一| 中文字幕av亚洲精品| 97超碰总站| 天天摸天天插天天日| 成人性爱视频在线看| 91 综合网| 91精品婷婷国产综合久久竹菊| 精品国产片亚洲一区| 亚洲A曰本VA欧美VA视频| 国产丝袜一区二区三区| 日han少妇无码| 久久综合99| 色综合天天| 搡老女人老91妇女老熟女| 蜜桃狠狠色伊人亚洲综合 | 色婷网| 91影库| 嗯嗯啊啊操我| 蜜汁欧美| 操逼短片| 亚州久久9| 久久免费中文字幕在线观看| 国产精品自产拍在线观看社区| 蜜臀AV秘一区翔田千里| 欧美色涩| 97鸡把在线视频| 国偷自 一区二区| 女生自91网站| 嗯嗯嗯啊啊啊操的我好爽| 99热综合| 欧美做爰无码A片视频| 一级黄色性爱A级片| 天堂69亚洲精品中文字| 日本一二区不卡| 又黄又硬又粗又长国产视频| 天天插天天操天天摸天天射天天看| ,国产乱人伦精品一区二区三区| 成人精品在线| 日韩性爱播放| 欧美性爱伊人| 黑人无码一区二区| 欧亚乱色熟女一区二区| 亚洲免费在线探花| 中文字幕AV乱伦| 天天干天天舔| 午夜男女爽爽大片免费观看| 看全色黄大色大片免费视频| 九九久久久| 国产97视频| 91爱| 99re在线| 国产精品com| 熟妇综合一区二区三区| 97操| 色网站导航大全| 精品亚洲成人免费在线| 欧美区亚洲区偷拍区| 精品国产三级av韩国在线| 狠狠婷婷亚洲中文综合久久| 84YTCOM性无码| 亚洲无码com| 午夜男女爽爽爽影院视频| A级片日韩欧美国产欧美视频精选观看| 91欧洲入口| 久久久久久久久女黄| 极品人妻少妇综合| 欧美不在线| 麻豆国产精品午夜视频| 老司机深夜18禁污污网站| ji熟女.com| 中文字幕一区电影在线观看| 强奸乱伦麻豆| 99热精品在线播放| 亚洲 欧美 中文 日韩超碰 | 欧美后入式| 日本加勒比无码专区| 欧美亚洲中文| 伊人久久综合影院精品久久久| 国产一区免费午夜视频| 亚洲日韩美国人妻| 五月天婷婷色色| 欧美亚洲性爱一区二区| 久久久久久久久久久久黄色| 亚洲色图伊人网| 91女色| 久久精品午夜国产亚洲AV无码| 日韩在线性爱免费视频| 欧美黄片视频在线观看免费| 精品超碰中文在线| 久草新免费| 97久久综合网| 亚州熟女乱伦| 亚洲欧洲日韩国产自在线| 99激情| 午夜啊啊啊| 91N综合网| 欧美性爱日韩高清| 桃花色涩综合影院| 一区麻豆 高清中文字幕| 日本顶级天天操狠狠操夜夜操中文字幕| 男人的天堂无码| 久久精品一区二区| 污污汅18禁网站在线永久免费观看 | 欧美黄色大香蕉一区二区| 久久久久久夜夜夜夜夜| 九草九九九| 日韩一级性爱无码| 色综合婷婷| 精品十三区| 亚洲精品国产拍免费91在线| 岛国A V在线免费看| 爽 好舒服 无码刺激久久| 亚洲成人一二三区| 理论久久婷婷网8| 九九综合久久中文字幕| 亚洲人成网www| 91欧美巨乳| 91精品人妻偷情| 久久丁香五月天| 亚洲男人综合网| 26uuu成人影片| 啊啊啊啊嗯嗯嗯用力好爽 | 亚洲一区日韩精品中文字幕| 色色综合网站| AV色图| 麻豆视频国产一区二区| 亚洲少妇色| 清纯唯美综合亚洲| 少妇高潮对白在线观看| 麻豆性爱视频在线播放| 国产久久久久久| 色婷婷综合网站| 亚洲性感丝袜诱惑在线观看| 在线视频 亚洲精品| 丁香五月天堂网| 天天日天天干天天摸天天操| 久久夜黄色无码A级大片| 嗯……啊…嗯嗯…啊…好舒服| 日韩欧视频| 自拍偷拍2025在线观看| 欧美91久久久久| 国产精品毛片?v一区二区三区| 91九久| 欧美91精品国产自产| 日韩人妻少妇 一区二区三区| 97超碰欧美手机在线| 午夜福利在线合集| 日韩欧美偷拍美女视频| 国产强奸乱伦xd| 午夜精品久久久99| 麻豆国产97在线| 久久黄色网址| av影片在线观看不卡| 97WW精品| 人人操欧美风骚| 欧洲综合视频| 黄片www视频免费| 国产精品九9| 一区二区三区美女超清| 亚91亚洲网| 1769国内精品视频| 亚洲污一污二| 性色av蜜臀av色欲aV| 久久久久921| 亚洲精品aa久久伊人| 91AV国产精品| 免费一级视频特黄色大片| 揉揉揉夜夜| 亚州情色j区| 97无码视频在线播放| 99热aaa| jizzjizz欧美| 51一区二区三区| 操久久久久久| 呦呦影院| 九九九九免费视频| 久久久激情| 秋霞怕怕片| 亚洲欧美setu| 懂色AV蜜臀无码精品APP | 翔田千里AV无码秘 三区| 欧美日韩222| 一类无码操逼视频| 深爱伊人影院| 精品久久久久9999| 日韩精品1区2区中文字幕| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 91性高朝久久久久久久久| 日本男人插女人的逼黄色| 久久一区二区三区入口| 色97干| 91中文精品日韩欧美在线| 成人性爱美曰韩| 超碰九7| 欧美后入视频| 操91| 麻豆国产视频精品观看| 精久久久| 四虎 精品 WWW| 秋霞免费AV| 久久久久久9| 97热视频在线观看| 超碰调教97| 日本天天操| 97碰| 亚洲女人毛茸茸91| 欧美熟妇视频| 午夜福利视频在线一区| 国产女大学生AV| 欧美综合色综合| 亚洲中文人妻色| 少妇滛荡视频| 自怕偷自怕亚洲精品| 久久久久久久| 曰韩少妇无码| 国产人伦精品一区二区三区| 1769精品一区二区三区| 狠狠久久手机视频精品| 加勒比aⅴ| 操淫穴亚洲五月丁香| 日本熟妇熟色97一本在线观看| 99性爱在线观看| 欧美福利视频啊啊啊啊| 国产999精品久久久| 九九国产| 国产农村妇女精品一二区| 狠狠综合| 日韩精品在线观看网站| 国产一区二区在线播放量| 国产日韩久久| 国产一区二区在线看| 天天躁狠狠躁av| 欧美成人亚洲精品| 欧美天天插| 日本色婷婷| 色婷婷九月天天综合| 国产精品久久妻无码网站| 国产久久久久久| 亚洲第一视频 欧美风情 日韩| 91N综合网| 亚洲日韩美女丝袜美腿人妻视频| 久久九精品| 久久精品老司| 男人天堂站| 美女人妻色网站| 激情五月天综合网| www色色com| 日韩欧美经典在线观看| 最新的亚洲无吗| 99国产精品视频尤物| 美女操逼A A| 1769一区| 国产在线观看一区二区三区| 亚洲色图亚洲| 欧美色狠| 99无码狠狠久久| 2020久久免费视频| 免费人成毛片乱码| 欧亚无码视频| 国产美女在线精品免费看| 91久久久亚洲| 香港澳门日本三级网站| 欧美极品美女aaaaaa级黄片| 亚洲无992tv| 99精品国产户外露出| 人人操,人人液| av一区二区三区不卡| 午夜视频黄| 成人精品一区二区91毛片不卡| 欧美黄色大片在线观看 |