欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,av无码精品一区二区久久,欧美性爱视频不卡一区三区,欧美乱人伦视频在线观看,国产一级牲交高潮

ARTICLE DETAIL

資訊詳情

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

VS2010 VC++圍棋游戲開(kāi)發(fā):MFC實(shí)現(xiàn)與規(guī)則解析

VS2010 VC++圍棋游戲開(kāi)發(fā):MFC實(shí)現(xiàn)與規(guī)則解析 簡(jiǎn)介一套在VS2010環(huán)境下使用VCMFC編寫(xiě)的圍棋游戲完整工程面向C入門(mén)者和棋類(lèi)游戲開(kāi)發(fā)愛(ài)好者幫助理解從窗口界面到棋盤(pán)數(shù)據(jù)結(jié)構(gòu)、玩家交互與對(duì)弈規(guī)則的落地過(guò)程。壓縮包共33個(gè)文件主體為10個(gè).h頭文件和8個(gè).cpp源文件此外還有bmp/ico界面資源、rc資源描述、sln/proj工程文件及說(shuō)明文檔整體僅164KB適合快速下載并直接打開(kāi)工程研讀。代碼將棋盤(pán)、棋子、玩家等拆分為獨(dú)立模塊棋盤(pán)類(lèi)負(fù)責(zé)狀態(tài)管理棋子類(lèi)處理落點(diǎn)與顏色玩家類(lèi)接收行列輸入實(shí)現(xiàn)落子合法性判斷與五子連珠勝負(fù)檢測(cè)并給出基于深度優(yōu)先搜索的簡(jiǎn)易AI構(gòu)想壓縮包內(nèi)還附有待解決問(wèn)題清單便于學(xué)習(xí)者沿著作者的思考脈絡(luò)進(jìn)行二次開(kāi)發(fā)或排錯(cuò)。已有98人學(xué)習(xí)特別適合想在VS2010/MFC環(huán)境中快速上手圍棋或同類(lèi)棋類(lèi)項(xiàng)目的人群。1. 拿到「VS2010環(huán)境編寫(xiě)的VC圍棋游戲.rar」先判斷這份代碼值不值得花時(shí)間VS2010環(huán)境編寫(xiě)的VC圍棋游戲這個(gè)壓縮包打開(kāi)后最怕兩種結(jié)局雙擊 .sln 報(bào)版本不兼容或編譯通過(guò)卻一啟動(dòng)就閃退。這類(lèi)項(xiàng)目十有八九是 VC 寫(xiě)的 MFC 對(duì)話(huà)框程序棋盤(pán)畫(huà)在自繪控件上落子走消息響應(yīng)代碼量在 1000 到 3000 行之間正好卡在「能讀懂」和「能改成自己的」的分界線(xiàn)上。把它跑通能換到什么一份可斷點(diǎn)調(diào)試的圍棋規(guī)則實(shí)現(xiàn)——?dú)狻⑻嶙?、劫、禁著點(diǎn)都是獨(dú)立函數(shù)一個(gè)用 GDI 做 2D 繪圖的現(xiàn)成范本——畫(huà) 19 路棋盤(pán)、把鼠標(biāo)點(diǎn)擊換算成格點(diǎn)還有一個(gè)能直接替換評(píng)分函數(shù)的 AI 殼。這篇文章寫(xiě)給三類(lèi)人學(xué) VC/MFC 但缺項(xiàng)目練手的學(xué)生有圍棋算法卻卡在繪圖環(huán)節(jié)的開(kāi)發(fā)者以及打開(kāi)別人工程卻編譯不過(guò)、需要快速定位問(wèn)題的從業(yè)者。下面按「認(rèn)骨架 → 寫(xiě)規(guī)則 → 畫(huà)界面 → 排坑 → 加 AI」的路徑拆開(kāi)重建每步都給能直接復(fù)制的代碼和參數(shù)。2. 從 rar 到可編譯工程認(rèn)文件、定數(shù)據(jù)結(jié)構(gòu)、理清消息路由2.1 先認(rèn)文件從 .sln、.vcxproj 和 .rc 判斷項(xiàng)目類(lèi)型解壓后不要急著雙擊任何文件先在命令行里掃一眼頂層結(jié)構(gòu)比任何教程都直觀(guān)find . -maxdepth 2 -type f | sort # 或直接列出 rar 內(nèi)的文件清單 unrar l VS2010環(huán)境編寫(xiě)的VC圍棋游戲.rar | head -30看到 .sln 和 .vcxproj 同時(shí)存在說(shuō)明這是 VS2010 原生的解決方案結(jié)構(gòu)。如果只看到 .dsw / .dsp那是更老的 VC6 工程VS2010 也能打開(kāi)但會(huì)做一次格式轉(zhuǎn)換。接著看有沒(méi)有 .rc 資源文件和 resource.h——有這兩樣基本可以鎖定它是 MFC 工程而不是純 Win32 或控制臺(tái)程序。MFC 工程的入口是一個(gè)繼承 CWinApp 的 App 類(lèi)主界面繼承 CDialogEx后面所有消息處理和繪圖邏輯都繞著這兩個(gè)類(lèi)轉(zhuǎn)。如果你還在找 vs2010 的下載安裝教程裝完務(wù)必先打 VS2010 SP1 補(bǔ)丁再開(kāi)工程。SP1 修掉的編譯器 bug 里有幾條正卡在這種老項(xiàng)目編譯路徑上裸裝 VS2010 經(jīng)常會(huì)碰到標(biāo)準(zhǔn)庫(kù)頭文件報(bào)錯(cuò)。打開(kāi)工程后注意左側(cè)的類(lèi)視圖——老資料里常把它叫 VC 管理器——幾個(gè)核心類(lèi)一眼就能看到繼承關(guān)系比逐個(gè)翻文件快得多。2.2 棋盤(pán)數(shù)據(jù)結(jié)構(gòu)帶 padding 的二維數(shù)組是默認(rèn)答案圍棋棋盤(pán) 19×19最省事的表示就是二維數(shù)組。常見(jiàn)做法是開(kāi) 21×21外圈留一圈 padding這是這類(lèi) VC 項(xiàng)目事實(shí)上的標(biāo)準(zhǔn)寫(xiě)法// GameDef.h —— 棋盤(pán)數(shù)據(jù)結(jié)構(gòu)的統(tǒng)一約定 #define BOARD_LEN 19 // 19 路棋盤(pán) #define PAD 1 // 外圈 padding #define MAX_BOARD (BOARD_LEN 2 * PAD) // 21 enum Stone { EMPTY 0, BLACK 1, WHITE 2 }; // 有效格點(diǎn)范圍是 [1][1] ~ [19][19] // board[0][*]、board[20][*]、board[*][0]、board[*][20] 恒為邊界 int board[MAX_BOARD][MAX_BOARD];邏輯說(shuō)明padding 里的值永遠(yuǎn)不是 EMPTY數(shù)氣、提子時(shí)掃描到 padding 就自然停止代碼里一個(gè)越界判斷都不用寫(xiě)。這是把 19 改成 21 的唯一理由一定要在注釋里寫(xiě)清楚否則后來(lái)的人會(huì)把循環(huán)寫(xiě)成從 0 到 18一個(gè)經(jīng)典翻車(chē)點(diǎn)。選型上也可以用一維數(shù)組 int board[361]下標(biāo)按 row * 19 col 換算提子和坐標(biāo)換算會(huì)啰嗦一點(diǎn)用 std::vector 嵌套也常見(jiàn)但 memset 歸零、memcmp 比對(duì)快照都不如 C 數(shù)組干凈。VS2010 對(duì) C0x 支持不全但 STL 老容器完全可用我一般棋盤(pán)用 C 數(shù)組悔棋棧和歷史記錄用 vector各取所長(zhǎng)。2.3 消息路由WM_LBUTTONDOWN 到落子、WM_PAINT 到重繪MFC 程序的消息分發(fā)靠消息映射表我們這個(gè)圍棋游戲只關(guān)心兩條鼠標(biāo)按下負(fù)責(zé)落子WM_PAINT 負(fù)責(zé)畫(huà)棋盤(pán)。映射表的寫(xiě)法如下// GoDlg.cpp —— 消息映射與兩個(gè)核心響應(yīng) BEGIN_MESSAGE_MAP(CGoDlg, CDialogEx) ON_WM_LBUTTONDOWN() ON_WM_PAINT() ON_COMMAND(IDC_BTN_UNDO, CGoDlg::OnBtnUndo) // 悔棋按鈕 END_MESSAGE_MAP() void CGoDlg::OnLButtonDown(UINT nFlags, CPoint point) { // 像素坐標(biāo) - 格點(diǎn)坐標(biāo)MARGIN 是棋盤(pán)邊距CELL_SIZE 是格距 int gx (point.x - MARGIN) / CELL_SIZE 1; int gy (point.y - MARGIN) / CELL_SIZE 1; if (gx 1 gx BOARD_LEN gy 1 gy BOARD_LEN) { if (TryPlaceStone(gy, gx, m_curColor)) // 規(guī)則入口 SwitchTurn(); // 換手 } Invalidate(FALSE); // 只標(biāo)記客戶(hù)區(qū)失效不擦背景 }邏輯說(shuō)明ON_WM_LBUTTONDOWN 宏把鼠標(biāo)消息路由到 OnLButtonDown函數(shù)里先做坐標(biāo)換算再調(diào)規(guī)則入口合法性由 TryPlaceStone 決定合法才換手。Invalidate(FALSE) 觸發(fā)一次異步重繪FALSE 表示不擦背景配合雙緩沖后拉伸窗口也不閃。這里坐標(biāo)參數(shù)順序行、列全工程必須一致混用是后期規(guī)則出現(xiàn)魔幻行為的頭號(hào)嫌疑。參數(shù)說(shuō)明MARGIN 和 CELL_SIZE 是坐標(biāo)換算的兩個(gè)基準(zhǔn)值。按 19 路棋盤(pán)、28 像素格距估算客戶(hù)區(qū)寬度至少 24×2 18×28 552 像素對(duì)話(huà)框模板里的寬高用這個(gè)公式算別隨手拉一個(gè) 300 寬的窗口讓棋盤(pán)被裁掉。3. 落子、提子與劫把圍棋規(guī)則完整寫(xiě)進(jìn) 200 行 VC 代碼3.1 數(shù)氣Flood Fill 收集連通塊再掃四鄰空點(diǎn)氣是圍棋規(guī)則的地基。落子合法性、提子、終局判斷全依賴(lài)數(shù)氣函數(shù)這個(gè)函數(shù)寫(xiě)錯(cuò)后面全是空中樓閣。標(biāo)準(zhǔn)做法是 Flood Fill——從目標(biāo)棋子出發(fā)向上下左右遞歸擴(kuò)散收集所有同色連通的棋子再統(tǒng)計(jì)這些棋子相鄰的獨(dú)立空點(diǎn)數(shù)量// Rule.cpp —— 數(shù)氣先收集同色連通塊再統(tǒng)計(jì)獨(dú)立氣口 static bool visited[MAX_BOARD][MAX_BOARD]; static int group[MAX_BOARD * MAX_BOARD][2]; // 連通塊內(nèi)棋子坐標(biāo) static void CollectGroup(int r, int c, int color, int cnt) { if (board[r][c] ! color || visited[r][c]) return; visited[r][c] true; group[cnt][0] r; group[cnt][1] c; cnt; CollectGroup(r - 1, c, color, cnt); CollectGroup(r 1, c, color, cnt); CollectGroup(r, c - 1, color, cnt); CollectGroup(r, c 1, color, cnt); } int CountLiberties(int r, int c) { int color board[r][c]; if (color EMPTY) return 0; int cnt 0; memset(visited, 0, sizeof(visited)); // 每次調(diào)用必須歸零 CollectGroup(r, c, color, cnt); bool seen[MAX_BOARD][MAX_BOARD] {false}; int dirs[4][2] {{1,0},{-1,0},{0,1},{0,-1}}; int libs 0; for (int i 0; i cnt; i) { for (int d 0; d 4; d) { int nr group[i][0] dirs[d][0]; int nc group[i][1] dirs[d][1]; if (board[nr][nc] EMPTY !seen[nr][nc]) { seen[nr][nc] true; libs; } } } return libs; }邏輯說(shuō)明遞歸深度最多 361 層MFC 默認(rèn)棧空間完全扛得住。seen 數(shù)組保證同一塊棋周?chē)粋€(gè)空點(diǎn)只算一口氣——兩顆相鄰棋子共享同一個(gè)氣口漏掉去重提子判斷會(huì)提前誤觸發(fā)表現(xiàn)為「對(duì)方明明還有氣卻被提子」的怪象。參數(shù)說(shuō)明visited 和 group 聲明成 static 是為了減少遞歸傳參開(kāi)銷(xiāo)但 CountLiberties 每次進(jìn)入必須 memset。seen 是函數(shù)局部變量用 {false}初始化即可每次調(diào)用自動(dòng)重建。dirs 方向數(shù)組順序無(wú)所謂但四個(gè)方向不能漏——漏一個(gè)角部的棋子永遠(yuǎn)數(shù)不對(duì)氣。3.2 提子與禁著點(diǎn)先提對(duì)方再查己方死活落子的完整流程是先把棋子臨時(shí)放上棋盤(pán)提走四周所有氣盡的對(duì)方棋子然后檢查己方這顆棋有沒(méi)有氣。己方?jīng)]氣且剛才沒(méi)提成任何子就是禁著點(diǎn)必須整盤(pán)回卷inline int Opponent(int c) { return (c BLACK) ? WHITE : BLACK; } bool TryPlaceStone(int r, int c, int color) { if (board[r][c] ! EMPTY) return false; int saved[MAX_BOARD][MAX_BOARD]; memcpy(saved, board, sizeof(board)); // 整盤(pán)快照失敗可回卷 board[r][c] color; // 先落子 int dirs[4][2] {{1,0},{-1,0},{0,1},{0,-1}}; int captured 0; for (int d 0; d 4; d) { int nr r dirs[d][0], nc c dirs[d][1]; if (board[nr][nc] Opponent(color) CountLiberties(nr, nc) 0) { captured RemoveGroup(nr, nc); // 提掉整塊 } } // 禁著點(diǎn)自己沒(méi)氣且沒(méi)提到子 if (CountLiberties(r, c) 0 captured 0) { memcpy(board, saved, sizeof(board)); // 回卷 return false; } return true; }邏輯說(shuō)明順序不能反。先查己方氣再提對(duì)方會(huì)出現(xiàn)「提完對(duì)方我自己明明活了卻被判成禁著點(diǎn)」的烏龍。圍棋規(guī)則里提子的優(yōu)先級(jí)高于自殺判斷代碼順序必須和規(guī)則順序一致。整體快照回卷比逐顆撤銷(xiāo)更穩(wěn)多花 441 個(gè) int 的內(nèi)存換來(lái)的是永遠(yuǎn)一致的狀態(tài)這筆賬劃算??狱c(diǎn)captured 記錄的是被提棋子數(shù)量而不是塊數(shù)。只要提走一顆以上這手棋就是合法的哪怕己方落子后暫時(shí)沒(méi)氣——這叫「吃子成活」是新手最容易寫(xiě)成自殺禁手的場(chǎng)景。RemoveGroup 內(nèi)部除了清空棋盤(pán)還要把被提每顆棋子的坐標(biāo)記進(jìn)當(dāng)手 Move 結(jié)構(gòu)供悔棋恢復(fù)使用。3.3 劫比兩步前的局面快照或換 Zobrist 哈希簡(jiǎn)單劫的判定有個(gè)討巧做法把每手落子后的完整局面存進(jìn)歷史棧當(dāng)前這手棋如果導(dǎo)致棋盤(pán)和兩步前完全一致說(shuō)明發(fā)生了「提回來(lái)又提回去」的循環(huán)直接判劫。為什么只看兩步前因?yàn)楹?jiǎn)單劫的循環(huán)周期正好是兩手// Rule.cpp —— TryPlaceStone 內(nèi)部的劫校驗(yàn)接 3.2 的代碼 struct BoardSnapshot { int board[MAX_BOARD][MAX_BOARD]; }; std::vectorBoardSnapshot g_history; // 每手棋后 push 一份 // 在禁著點(diǎn)判斷之后、返回 true 之前加入 BoardSnapshot snap; memcpy(snap.board, board, sizeof(board)); if (g_history.size() 2) { BoardSnapshot prev g_history[g_history.size() - 2]; if (memcmp(snap.board, prev.board, sizeof(board)) 0) { memcpy(board, saved, sizeof(board)); // 回卷禁止打劫 return false; } } return true; // 調(diào)用方落子成功后g_history.push_back(snap);邏輯說(shuō)明memcmp 一次對(duì)比 441 個(gè) int納秒級(jí)完成每手棋調(diào)一次完全不是性能瓶頸。g_history 用 std::vector 實(shí)現(xiàn)——VC 項(xiàng)目里最常用的 STL 容器push_back 和 pop_back 都是 O(1)配合悔棋棧天然兼容。調(diào)用方在落子合法并記錄完提子信息后把 snap push 進(jìn)歷史悔棋時(shí)同步 pop兩者的長(zhǎng)度必須嚴(yán)格一致。如果要嚴(yán)格實(shí)現(xiàn)全局同形superko用 Zobrist 哈希給每個(gè)位置三種狀態(tài)各分配一個(gè) 64 位隨機(jī)數(shù)局面哈希等于所有非空點(diǎn)隨機(jī)數(shù)的異或。落子、提子各做兩次異或就是 O(1) 增量更新把整盤(pán) memcmp 換成哈希比對(duì)代碼量增加約 30 行。普通人對(duì)戰(zhàn)程序用不到寫(xiě)清楚注釋留給后人即可。4. 棋盤(pán)繪制與鼠標(biāo)交互用 GDI 畫(huà) 19 路棋盤(pán)落子不漂移4.1 坐標(biāo)換算半格偏移決定你有沒(méi)有「點(diǎn)偏一格」這一章處理整個(gè)工程里最直觀(guān)也最容易改壞的部分——用 GDI 做的 2D 繪圖層。棋盤(pán)繪制的核心是兩套坐標(biāo)互轉(zhuǎn)格點(diǎn)坐標(biāo)1 到 19和像素坐標(biāo)。MARGIN 是棋盤(pán)外沿到窗口邊緣的距離CELL_SIZE 是相鄰交叉點(diǎn)間距// BoardView.cpp —— 坐標(biāo)互轉(zhuǎn) // 格點(diǎn) - 像素畫(huà)線(xiàn)、畫(huà)棋子時(shí)用 int GridToPixel(int g) { return MARGIN (g - 1) * CELL_SIZE; } // 像素 - 格點(diǎn)鼠標(biāo)點(diǎn)擊時(shí)用CELL_SIZE/2 是關(guān)鍵四舍五入 int PixelToGrid(int px) { return (px - MARGIN CELL_SIZE / 2) / CELL_SIZE 1; }邏輯說(shuō)明整數(shù)除法向下取整直接拿 (px - MARGIN) / CELL_SIZE鼠標(biāo)落在兩個(gè)交叉點(diǎn)正中間時(shí)會(huì)偏到左邊一格這就是「點(diǎn)偏一格」的玄學(xué)來(lái)源。加上 CELL_SIZE/2 把除法變成四舍五入每個(gè)交叉點(diǎn)周?chē)霃?14 像素半個(gè)格距都是有效命中區(qū)點(diǎn)歪一點(diǎn)也不會(huì)落錯(cuò)格。參數(shù)說(shuō)明MARGIN、CELL_SIZE 在工程里必須全局統(tǒng)一不能一處用宏一處用字面量。棋子直徑取 CELL_SIZE - 4留出相鄰棋子的縫隙棋盤(pán)線(xiàn)用 1 像素默認(rèn)畫(huà)筆星位畫(huà)小實(shí)心圓坐標(biāo)文字用 TextOut 標(biāo)注在格點(diǎn)外側(cè)。這些值都集中在 GameDef.h 里定義調(diào)完 UI 不需要?jiǎng)右?guī)則代碼。4.2 雙緩沖MFC 重繪不閃的標(biāo)配寫(xiě)法直接用 CPaintDC 畫(huà)棋盤(pán)線(xiàn)的后果是每次 Invalidate 觸發(fā) OnPaint窗口先把客戶(hù)區(qū)擦白再逐線(xiàn)畫(huà)落子、拉伸都閃成一片。雙緩沖的本質(zhì)是先在內(nèi)存位圖上畫(huà)完所有內(nèi)容再一次 BitBlt 上屏// GoDlg.cpp —— OnPaint 雙緩沖 void CGoDlg::OnPaint() { CPaintDC dc(this); CDC memDC; memDC.CreateCompatibleDC(dc); CBitmap bmp; bmp.CreateCompatibleBitmap(dc, m_clientW, m_clientH); CBitmap* pOld memDC.SelectObject(bmp); DrawBoard(memDC); // 畫(huà)棋盤(pán)線(xiàn)、星位、坐標(biāo) DrawStones(memDC); // 畫(huà)黑白棋子 dc.BitBlt(0, 0, m_clientW, m_clientH, memDC, 0, 0, SRCCOPY); memDC.SelectObject(pOld); // 收尾換回原對(duì)象再刪資源 bmp.DeleteObject(); memDC.DeleteDC(); }邏輯說(shuō)明m_clientW / m_clientH 是客戶(hù)區(qū)當(dāng)前尺寸在 OnSize 里用 GetClientRect 取值。DrawBoard 內(nèi)部用 MoveTo / LineTo 畫(huà)橫豎各 19 條線(xiàn)按坐標(biāo)標(biāo)注 A-S 和 1-19DrawStones 遍歷棋盤(pán)數(shù)組非空格點(diǎn)用 Ellipse 畫(huà)實(shí)心圓。所有繪制全在內(nèi)存 DC 完成屏幕只做一次 BitBlt 合并輸出。參數(shù)說(shuō)明畫(huà)棋子注意 Ellipse 的矩形邊界——中心是 GridToPixel 的返回值左上角是中心減半徑右下角是中心加半徑。黑棋用黑色實(shí)心畫(huà)筆加淺灰窄邊框提亮白棋用白色實(shí)心加灰色描邊不然白棋在淺色棋盤(pán)上會(huì)隱身。注意OnPaint 里創(chuàng)建的 GDI 對(duì)象必須成對(duì)釋放先 SelectObject 換回舊對(duì)象再 DeleteObject。GDI 泄漏的典型癥狀是程序運(yùn)行半小時(shí)后棋子畫(huà)不出來(lái)重啟又恢復(fù)正常排查起來(lái)非常痛苦。4.3 悔棋與局面棧vector 做歷史記錄的完整閉環(huán)圍棋的悔棋不只是拿掉最后一顆子——還得把提掉的對(duì)方棋子按原坐標(biāo)放回去所以落子時(shí)必須把提子信息記錄下來(lái)// GameDef.h —— 一手棋的完整記錄 struct Move { int row, col; // 落子位置 int color; // BLACK / WHITE std::vectorstd::pairint,int captured; // 被提的對(duì)方棋子 }; std::vectorMove g_moveStack; // 全局歷史棧// Rule.cpp —— 悔棋實(shí)現(xiàn) void UndoLastMove() { if (g_moveStack.empty()) return; Move mv g_moveStack.back(); g_moveStack.pop_back(); board[mv.row][mv.col] EMPTY; // 摘掉這手棋 for (size_t i 0; i mv.captured.size(); i) { int rr mv.captured[i].first; int cc mv.captured[i].second; board[rr][cc] Opponent(mv.color); // 被提的放回去 } g_history.pop_back(); // 局面快照同步回退劫判斷才不亂 }邏輯說(shuō)明captured 里棋子的顏色恒為對(duì)手色不用單獨(dú)記錄?;谄鍟r(shí)按對(duì)方顏色放回原位再順手把局面快照 pop 掉——這條最容易漏漏掉之后劫判斷會(huì)拿舊局面對(duì)比當(dāng)前棋局直接翻車(chē)。vector 的 back() 返回末尾引用pop_back() O(1) 刪除作為棧用非常順手。參數(shù)說(shuō)明pairint,int 存坐標(biāo)足夠追求可讀性可以換成小結(jié)構(gòu)體。整份歷史棧在「新開(kāi)局」時(shí)用 clear() 一次性清空同時(shí)清掉 g_history兩棧同生共死?;谄灏粹o的消息響應(yīng)里調(diào) UndoLastMove 后記得 Invalidate(FALSE)讓棋盤(pán)立刻刷新。5. 避坑記錄VS2010 編譯運(yùn)行圍棋源碼的 5 個(gè)高頻翻車(chē)點(diǎn)編譯老工程和寫(xiě)新工程完全是兩碼事。v100 工具集、MBCS/Unicode 字符集、GDI 重繪、MFC 運(yùn)行庫(kù)這四個(gè)關(guān)鍵詞湊在一個(gè)圍棋項(xiàng)目里就是新手最常見(jiàn)的勸退現(xiàn)場(chǎng)。下面 5 條按出現(xiàn)概率排序每條都是「現(xiàn)象、原因、解決」三段式照著定位能省出大半天。先說(shuō)兩個(gè)通用習(xí)慣看編譯輸出窗口的第一條錯(cuò)誤而不是最后一條以及把錯(cuò)誤全部清完再按 F5別讓第一次報(bào)錯(cuò)淹沒(méi)在后續(xù)的級(jí)聯(lián)錯(cuò)誤里。5.1 .sln 雙擊打不開(kāi)提示版本不兼容現(xiàn)象用高版本 VS 打開(kāi) VS2010 的 .sln彈窗提示需要進(jìn)行一次單向升級(jí)點(diǎn)確認(rèn)后代碼能看F5 報(bào)錯(cuò) C1083 找不到 stdafx.h 或一堆 MFC 頭文件。原因VS2010 的平臺(tái)工具集是 v100高版本 VS 默認(rèn)把工程換成自己的工具集但老工程里的附加包含目錄沒(méi)有跟著遷移裸裝 VS2010 不帶 SP1 時(shí)部分 MFC 頭文件本身就缺內(nèi)容換誰(shuí)打開(kāi)都編不過(guò)。解決堅(jiān)持用 VS2010 就先裝 VS2010 SP1 再開(kāi)工程換高版本就在項(xiàng)目屬性 → 配置屬性 → 常規(guī) → 平臺(tái)工具集里顯式改成 v140 / v142改完重新生成解決方案。如果 C1083 還指向某個(gè)盤(pán)符下的絕對(duì)路徑頭文件把附加包含目錄改成相對(duì)路徑工程挪了位置才不會(huì)再次崩塌。提示改工具集前先復(fù)制一份 .vcxproj 備份升級(jí)過(guò)程會(huì)改寫(xiě)項(xiàng)目 GUID 和若干屬性不備份就沒(méi)有后悔藥。5.2 界面中文全部亂碼現(xiàn)象編譯鏈接全部通過(guò)運(yùn)行后對(duì)話(huà)框按鈕上的「落子」「悔棋」「開(kāi)始」全顯示成問(wèn)號(hào)或菱形豆腐塊英文正常。原因源碼 .cpp/.h 和 .rc 資源文件的保存編碼與項(xiàng)目「字符集」設(shè)置不一致。VS2010 默認(rèn) Unicode 但編輯器可能按系統(tǒng) ANSI 代碼頁(yè)存盤(pán)或者反過(guò)來(lái)工程用多字節(jié)字符集而文件是 UTF-8——編譯器按錯(cuò)誤的編碼讀中文字面量出來(lái)的就是亂碼。解決先統(tǒng)一字符集項(xiàng)目屬性 → 配置屬性 → 常規(guī) → 字符集選「使用 Unicode 字符集」再把所有 .cpp/.h/.rc 用 VS 菜單「文件 → 高級(jí)保存選項(xiàng)」轉(zhuǎn)成 UTF-8 with BOM。注意 .rc 資源文件的亂碼必須單獨(dú)看——資源編譯器按文件內(nèi)聲明的代碼頁(yè)解析正文轉(zhuǎn)了 .rc 沒(méi)轉(zhuǎn)界面上照樣是豆腐塊。判斷文件編碼有個(gè)土辦法記事本打開(kāi)另存為對(duì)話(huà)框的編碼下拉框會(huì)顯示當(dāng)前檢測(cè)到的編碼UTF-8 會(huì)明確寫(xiě)出來(lái)ANSI 則對(duì)應(yīng) GBK。5.3 落子瞬間棋盤(pán)閃白現(xiàn)象每點(diǎn)一下鼠標(biāo)棋盤(pán)先整個(gè)白屏再重新畫(huà)出來(lái)連續(xù)落子閃爍肉眼可見(jiàn)拉伸窗口時(shí)更嚴(yán)重。原因OnPaint 里直接用 CPaintDC 一塊塊畫(huà)棋盤(pán)線(xiàn)配合 Invalidate(TRUE) 強(qiáng)制擦除背景重繪路徑變成了「擦白 → 畫(huà)線(xiàn) → 擦白 → 畫(huà)子」的循環(huán)閃爍是必然結(jié)果。解決照第 4 章的內(nèi)存 DC 雙緩沖先在內(nèi)存位圖畫(huà)完再 BitBlt 上屏Invalidate 參數(shù)從 TRUE 改成 FALSE。改完做一個(gè)回歸測(cè)試按住窗口右下角連續(xù)拖動(dòng)縮放棋盤(pán)應(yīng)該平滑跟手全程看不到白閃。如果雙緩沖后還閃重寫(xiě) OnEraseBkgnd 直接 return TRUE告訴系統(tǒng)背景永遠(yuǎn)不需要擦。5.4 明明圍住了對(duì)方棋卻提不掉現(xiàn)象單測(cè)數(shù)氣函數(shù)結(jié)果正確但實(shí)戰(zhàn)里白棋被黑棋圍死界面上的白子卻始終不消失或者一整塊被提了一半。原因visited 靜態(tài)數(shù)組在上一次調(diào)用后沒(méi)歸零CollectGroup 第二次運(yùn)行時(shí)帶著殘留的 true 標(biāo)記跳過(guò)大量棋子連通塊收集不全氣數(shù)虛高。另一個(gè)隱蔽情況是 TryPlaceStone 的失敗分支先 return 再恢復(fù)棋盤(pán)順序反了棋盤(pán)上留下一顆刪不掉的幽靈棋。解決在 CountLiberties 入口強(qiáng)制 memset(visited, 0, sizeof(visited))并把 TryPlaceStone 每個(gè) return false 分支都改成先恢復(fù)棋盤(pán)再返回。驗(yàn)證用一個(gè)固定棋譜白棋先放 (1,1) 角黑棋連下 (1,2)、(2,1)此刻白棋四鄰全是黑棋或邊界應(yīng)被提掉 1 顆打印白棋總數(shù)從 1 變 0 才算通過(guò)再點(diǎn)悔棋白棋總數(shù)應(yīng)恢復(fù)為 1。這套三步棋能同時(shí)驗(yàn)證提子和悔棋兩條邏輯。5.5 生成的 exe 拷到別的機(jī)器啟動(dòng)閃退現(xiàn)象本機(jī) F5 跑得歡把 Release 目錄下的 exe 單獨(dú)拷到另一臺(tái) Windows 機(jī)器雙擊報(bào) 0xc000007b 或者干脆沒(méi)反應(yīng)。原因工程默認(rèn)動(dòng)態(tài)鏈接 MFC 運(yùn)行庫(kù)VS2010 對(duì)應(yīng) mfc100u.dll 和 msvcr100.dll目標(biāo)機(jī)器沒(méi)裝對(duì)應(yīng)版本運(yùn)行庫(kù)就啟動(dòng)失敗。0xc000007b 還經(jīng)常和 32/64 位不匹配摻在一起工程編的是 x86目標(biāo)機(jī)器沒(méi)裝 x86 運(yùn)行庫(kù)只有 x64 的也會(huì)報(bào)這個(gè)碼。解決不想在目標(biāo)機(jī)器裝運(yùn)行庫(kù)就在項(xiàng)目屬性 → 常規(guī) → MFC 的使用里改成「在靜態(tài)庫(kù)中使用 MFC」exe 體積增大約 1 到 2 MB但完全自包含。同時(shí)檢查配置管理器里的活動(dòng)解決方案平臺(tái)是 Win32 還是 x64與運(yùn)行環(huán)境對(duì)齊。改完重新編譯用 dumpbin /dependents 查看 exe 依賴(lài)列表確認(rèn)沒(méi)有 mfc100u.dll 就說(shuō)明靜態(tài)鏈接成功。6. 給 AI 對(duì)手加一檔「棋感」評(píng)分函數(shù)與自對(duì)弈驗(yàn)證6.1 靜態(tài)評(píng)分落子30 行讓 AI 從隨機(jī)棋手升級(jí)成入門(mén)棋手規(guī)則和界面跑通之后最有成就感的收尾是把只會(huì)隨機(jī)落子的 AI 換成一個(gè)有基本棋感的對(duì)手。最輕量的改進(jìn)是給每個(gè)空點(diǎn)打靜態(tài)評(píng)分——角、星位給加成隨機(jī)擾動(dòng)控制在 10% 以?xún)?nèi)保證同一局面不是每次都下同一個(gè)點(diǎn)// Ai.cpp —— 極簡(jiǎn)靜態(tài)評(píng)分落子 int EvalGrid(int r, int c) { if (board[r][c] ! EMPTY) return -99999; int score rand() % 10; if ((r 1 || r 19) (c 1 || c 19)) score 50; // 角 if (r 1 || r 19 || c 1 || c 19) score 15; // 邊 return score; }實(shí)現(xiàn)注意評(píng)分只在空點(diǎn)上調(diào)用有子的位置直接給極負(fù)分隨機(jī)擾動(dòng)最后加別讓隨機(jī)數(shù)蓋過(guò)棋型分。調(diào)參驗(yàn)證別靠人機(jī)試玩的主觀(guān)感受——讓新舊兩個(gè)版本各執(zhí)黑白自對(duì)弈 30 局統(tǒng)計(jì)勝率和平均手?jǐn)?shù)手?jǐn)?shù)明顯變長(zhǎng)說(shuō)明策略變保守了勝率穩(wěn)定過(guò)半說(shuō)明改動(dòng)真實(shí)有效。我個(gè)人的習(xí)慣是每改一個(gè)參數(shù)就往歷史棧里留一條記錄跑完自對(duì)弈回看上一版棋譜而不是靠一局勝負(fù)下結(jié)論。圍棋程序的黑匣子不淺但每一層都有具體驗(yàn)證方法局面快照驗(yàn)證規(guī)則自對(duì)弈統(tǒng)計(jì)驗(yàn)證策略最后才輪到人機(jī)試玩。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
97碰久久| 色婷綜合网| 五月丁香婷婷色| 五月天婷婷网站888| 啪啪 综合网| 91九色精品熟女内射| 色五月在线观看| WWW丁香五月| 色五月丁香五| 日日干天天| 日本va网站| 99免费超碰在线| 六月久久狠狠| 激情久久 婷婷| 色五月婷婷在线| 天天做天天爰天天爽天天无遮挡| 激情综合99| 色婷婷五月综合| 超碰狠狠色| 五月狠狠| 最新婷婷五月丁香| 天天日天天色| 丁香五月婷婷啪啪啪| 五月婷婷久久开心网| 激情婷婷黄色五月| www,婷婷,com| 777精品久无码人妻蜜桃| 五月开心深深爱激情综合| 婷婷五月天久久综合88| 亚洲成人av在线观看 | 综合色播| 超碰人人操| 亚洲中文字幕网| 亚洲情a| 色婷婷狠狠| 成人国产网| 色婷婷丁香| 久狠日av| 狠狠插狠狠| 丁香综合婷婷开心激情网| 九热视频在线伦| 九九这里都是精品| 九九热99热| 色五月婷婷在线观看| 热的五码久久精品| 五月婷婷色色| 色婷婷五月天中文字幕| 丁香色色网| 奇米色大香蕉| 五月丁香A片| 久热免费视频| 少妇性BBB搡BBB爽爽爽视頻| 青草青草视频2免费观看| 中文字幕在线资源| 五月丁香| 色五月亚洲| 婷婷伊人网| 婷婷婷婷色| 九九婷婷五月天影视| 超碰av在线| 热99免费在线| 九九黄色网| 久久大香蕉同僚| 直接看的AV| 天天综合五月| 丁香六月天色婷婷| 九一99| 久久婷婷五月激情网站| 久久婷婷91| 激情国产五月| 婷婷色五月天色| 色婷婷激情Av久久久| 日韩中文字幕| www.com在线操视频免费观看| 婷婷狠狠干| 久久99国产综合精品免费| 色五月激情婷婷| 五月综合丁香婷婷| 午夜大香蕉| www.9操| 97婷婷五月丁香| 中文字幕第四色.999| 丁香五月天激情四射网络不好| 婷婷五月天最新网址| 大香蕉丁香婷婷| 黄色视频网站在线播放| 色久99| 九九综合88| 九九色逼| 婷婷伊人綜合中文| 日日噜人人人做人| 人人爱人人摸人人澡| 婷婷五月色網站| 婷婷色激情五月天| 狠狠做婷婷| 婷婷五月天激情网| 丁香五月婷婷综合激情啪啪啪啪啪啪啪 | 99热10在线高清播放| 最新高清无码专区| 九色无码| 六月五月久久丁香| 思思热在线视频精品| 九九热在线观看视频| 九色啦蜜臀| 九九99九九99九九99视频网| 亚洲精品一区中文字幕乱码| 伊人色综合久久久| 人妻肉射免费观看| 99热这里都是精品| 91a片爽| 99精品女人天堂| 伊人网大香| 一操久久| 视频这里只有精品16| 婷婷五月天激情在线| 大香蕉久久婷婷| 亚洲色综合| 91操黄| ww久久| 五五月五月| 五月丁香啪啪综合| 少妇高潮呻吟A片免费看软件| 无码字幕中文| 99热精在线九九久久保| 狠狠色综合网| 91九色无码日韩| 亚洲丁香五月综合| 91天天操天天干天天射| 丁香花操逼| 91蜜桃婷婷狠狠久久综合9色| 亚洲五月婷天天操| 日本三级大片| 亚洲AV无码影院| 色9色| www.99热这里只有精品| 久久五月天激情| 色婷婷综合成人| 色五月久久成人婷婷| 国产五月天欧美色| 欧美日韩一区二区三区四区| 亚洲激情视频网| 99热精品在线观看| 大香蕉75线| 天天爱天天做天天舔| 人人草人人看| 狠狠久久婷| 五月婷婷色丁香| 狠狠干综合网| 久久9RE热视频精品98| 丁香六月婷婷激情综合| 操操啪| 久久嘟嘟丁香| 狠狠狠色激情综合适合| 四射综合网| 思思热在线视频99| 曰韩五月丁香色婷婷无码| 婷婷在线免费| 九九激情| 国庆精品久久| 欧美性猛交AAAA片黑人 | 成人片在线播放| 五月天婷婷在线视频| 国产黄色在线观看| 天天天天天久久久久久| 99re在线免费视频| 人人草人人爱| 99色综合网| 久久久无码精品成人A片小说 | 五月天婷婷伊人| 久操婷婷| 99在线观看这里都是精品| 天天肏夜夜肏| 成人色色综合| 九九热狼人| 色婷婷色情| 国产精品久久久久久久久久| 五月丁香激情婷婷综合| 久9草在线观看视频| 久久思思热视频| 夫妇交换刺激做爰| 综合婷婷五月丁香在线观看| 欧美三级级99久久| 婷婷五月六月丁香综合| 久婷首页| 青青草成人网| 亚洲精品久久久久久久久久吃药| 日韩AV免费| 色播五月| 婷婷色五月激情| 天天干天天干天天| 亚洲九九99精品视频在线播放| 日本强伦片中文字幕免费看| 色情五月综合婷婷| 婷婷丁香五月天婷婷| 五月色网| 中文字幕簧片| 91九色精品| 另类A片| 成片免费播放| 日B日潘金莲BB| 精品五月天| 婷婷色五月天色色| 激情开心五月天婷婷基地丁香社区| 五月婷在线观看| 久热只有这里有精品| 久久久久久人妻| 五月综合激情图片| 婷婷五月天情色| 91一起操| 色婷婷色五月天| 99热草草| 深爱婷婷网| 色五月激情五月丁香五月婷婷啪啪综合| 欧美成人一区二区三区在线视频 | 99久久九九| 五月欧美色播| 亚洲另类AV| 超碰人人射| 色五月天.con| 欧美日韩中国| www五月| 婷婷久久综合久色| 五月天另类综合网| 色婷婷免费观看| 成熟妇人A片免费看网站| 色久激情在线| 日本精品。999| 五月婷综合| 色五月婷婷中文字幕| 九九久久五月天综合伊人| 任你搞在线观看视频| 激情五月六月婷婷| 五月婷婷丁香六月| 伊人久久大香线蕉av一区| 五月丁香色婷婷| 五月婷婷色五月| www色婷婷久久综合久色 | 久久五月激情| 九九九九中文字幕| 在线18av | 在线中文亚洲| 玖玖精品视频| 色五月成人在线| 色五月综合| www.婷婷五月.com| 综合色色五月| 亚洲亚洲人成综合网络| 99精品免费| 日本色五月| 六月婷五月丁香| 国产精品人妻欲求不满| 久久婷婷人人| 色狠狠综合入口| 99九九这里有免费视频| 日本eVa一区=区视频| 丁香五月六月综合激情| 婷婷六月综合激情| 日日综合网| 欧美五月婷婷| 亚洲va欧美va天堂v国产综合| 激情5月婷婷狠狠干| 在线中文字幕av| 美国不卡视频| 九九九九九九九九九九九九九国产精品| 五月激情小说| 亚洲热综合| 4399人妻无码久久久| 五月婷婷激情综合网 | 国产美女视频久| 婷婷五月天第四色| 久久这里有精品在线观看| 日本色噜| 在线色五月婷婷| 操操操av| 激情婷婷狠狠干| 精品色情一区二区三区四区| 亚洲色欲欧美一区二区三区| 五月天婷婷开心| 五月婷丁香| 丁香六月啪| 激情婷婷久久| 伍月婷婷免费视频| 五月丁香六月激情网| 婷婷基地成人五月天| 99er这里只有精品视频| 色色综合日韩| 开心五月深爱激情| 激情深爱五月天| 91碰碰| 久久婷婷综| 九色PORNY自拍成人精彩视频| AV伊人青草丁香六月| 成人在线日韩| 婷婷丁香五月激情图片| 天天天天爽爽天干| 欧美天天干天天草| 五月激情小说| 精品色| AA片在线观看视频在线播放| 亚洲成人av在线观看| 97丁香视频| 国产精品汇聚精彩第二页 - 高清完整版在线 - 青蛙AV | 我要色综合五月婷婷| 丁香婷婷免费| 日日操日日爽| 日韩成人AV在线播放| 激情婷婷五月| 欧美性猛交99久久久久99按摩| 日韩性爱AV| 伊人超碰在线| 五月天五月色婷婷综合| 亚洲中文字幕在线观看| 婷婷99视频全集高清| 婷婷免费视频| 夜夜骑日日操| 色五月婷婷老师| 9久热| 国产精品a无线| 久热99久热| 色琪琪一综合久久激情五月视频| 色情五月天首页| 丁香五月天天高清在线| 色综合久久888| 三年高清大片免费观看国语| 国产激情在线| 久热视频这里只有精品68| 色在线视频网2025| 人人干人人看| 高清国产一级婬片a免费| 啪啪夜久久| 再次出发二| 99爱视频免费| 少妇AB又爽又紧无码网站| 狠狠色噜噜色狠狠狠综合色| 丁香婷婷少妇| 色色色图| 婷婷五月天网址| jiujiu无码五区| 国产美女视频久| 亚洲精品V天堂中文字幕| 51XX嘿嘿午夜无码| 久久婷婷在线| 五月丁香啪啪网| 亚洲欧美国产A片免费观看| 99综合色色色| 亚洲激情综合网| 亚洲成人无码专区| 五月天开心激情网色欲无码| 丁香五月色网| 日本一级大片| 99青青草| 成人草榴视频| 五月激情综合婷婷| 高清无码入口| 五月六月播婷婷| 婷婷爱五月天| 丰满少妇猛烈A片免费看观看| 91精品人妻少妇无码影院| www.minyis.com【JT】币址百万U预算可预付QQ2101460746 | 五月婷婷丁香大陆免费| 97色视频网| 六月丁香婷婷天堂| 开心激情站| 婷婷无码视频| 国产99久久久| 婷婷色中文字幕| 五月丁香六月婷婷网| 偷拍丁香九月激情| 亚洲综合视频一下| 成人AV在线中文版| 婷婷综合激情五月综合| 成人精品视频99在线观看免费| 人妻人人操| 五月天成人在线播放| 九九艹女| 99这里有精品视频视频| 色五月综合网站| 精久久色| 色综合9| 久久思思热视频| 无码人妻精品一区二区蜜桃色欲| 99高级会所久久| 欧美婷婷综合| 都市激情五月婷婷综合| 99原创自拍视频在线观看| 五月丁香六月婷婷不卡免费无码| 免费看欧美成人A片无码| 色婷婷基地在线| 九月婷婷久久| 欧美婷婷六月丁香综合色连续高潮抽搐| 色欲丁香| 国产精品在线视频| 丁香婷婷狠狠97| www.狠狠干com| 色婷青青| 视频一二区| 99综合自拍| 色色五月天丁香| 91精品婷婷国产综合久久| 色综合久久天天综合网| 亚洲中文无码成人| 波多婷婷久久| 国产激情av| 99久久综合网| 国产精品激情AV久久久青桔| 婷婷色激情五月天| 9久国产精品| 六九色综合婷婷五月天| 九九色99| 七月丁香五月婷婷在线| 五月婷婷丁香六月| 91精品电影18T| 在线看的免费网站| 久久怡红院| 色五月综合在线| 婷婷六月天| 第一区久久网站| 色色五月激情| 九九在线视频| 丁香五月色| 久久久.COM| 五月丁香在线| 五月六月婷| 热九九精品| 少妇真实被内射视频三四区| 婷婷五月天激情网| 日 日干 日日做| 日本在线wwww| 丁香五月六月综合激情| 综合五月天天天天天五月| 国产探花一片区| 9l视频自拍9l九色9l成人| 亚州精品色情无码A片| 婷婷色情 | 久久视频婷婷| 色五月五月丁香| 一二区成人电影| 色色色综合| 综合激情视频| 激情丁香网| 色偷偷色婷婷| 色五月天 丁香| 四色永久成人网站| 日本九婷婷| http://www.lingjunshare.com/| 91人人爽狠狠狠| 中文字幕欧美日韩VA免费视频| 夜夜干天天干| 69婷婷丁香午夜| 另类激情码| 亚洲午夜在线视频| 九色婷婷| 色婷婷av在线观看| 久久婷婷五月综合激情国产| 噜噜色噜噜网| 热99这里只有精品视频| 99热成人精品| www99热| 野外99热| 婷婷94s| 国产激情综合| 人妻久久久久久| 深爱激情69热| 偷拍视频五月天| 免费国产VA国产免费| 色婷婷91| 久久久99日本大片| 亚洲区在线| 欧美在线| 中文字幕在线播放视频| 超碰日日操| 久草热视频在线观看| 五月天另类综合网| 欧美日韩大黄| 狠狠久久婷五月综合色| 亚洲激情网站无码| 99热在线99| 婷婷久久五月天| 丁香五月人妻| 91九色在线视频| 墨西哥毛片内射精| 9精品一区| 免费日本aⅴ中文字幕 | 六月丁香综合| 激情久久久久久| 91在线视频综合| 日韩成人综合| www91在线| 五月婷婷六月综合| 五月丁香六月激情综合| 在线另类视频| 久久草人妻| 五月五婷婷网| 丁香五月另类色婷婷麻豆| 日91高清无玛| 99热最新| 婷婷五月天国产手机在线视频观看| 五月丁香美女| 欧美性丁香色色五月天| 看黄的网站18禁| 秋霞免费三级片| 久久久思思热| 亚洲一区先锋影音| 天天天摸夜夜夜玩| 亚洲综合五月天婷婷| 五月婷在线观看| 91大神操美女| 天天综合色| 最近韩国日本免费高清观看| 超碰日韩成人| 国产永久一黄| 婷婷五月丁香综合激情| 天天爱天天做天天舔| 26UUU在线观看| 日日夜夜爽| 99在线观看视频| 播五月,色五月,开心五月播放器| 91中文在线| 无码AV免费精品一区二区三区| 五月婷婷啪啪啪啪| 9久热免费视频99| 去干网av| 色五月六月| 97碰久久| 亚洲综合五月天婷婷| 日本久久极品| 狠狠色丁香五月婷巨| 亭亭色天香| 久久激情五月婷婷| 91久操| 97久久精品视频| 六月婷婷激情图片| 久久人妻高清中文| 色综合久久888| 性按摩玩人妻HD中文字幕| 99青青草99| 99婷婷综合| 9 1超碰九色| 99九九视屏| 色婷婷先锋| 国产成人精品一区二三区熟女在线 | 激情纯色婷婷五月天在线不卡视频| 2025年最新亚洲在线欧美| 欧美成人精品一区二区 | 久久综合婷婷五月| 99 这里只有精品| 热久久这里只有精品| 久久婷婷五月综合| 啪啪六月婷婷| 五月婷婷五月天亚洲无码| 九色视频91疯狂| 久草婷婷在线| 包操45分钟网站| 五月丁香色综合| 国产伦亲子伦亲子视频观看| 成人电影AV在线观看| 99久久综合精品五月天| 99热只有| 99在线视频色版| 激情婷婷五月天日本系列| 日本五月婷婷| 欧美色宗和激情| 日韩十国产极品久久| 久久婷婷六月综合| 婷婷月综合| 丁香五月婷婷色| 婷婷五月天影院| 婷婷5月久久综合网站| 狠狠做五月| 婷婷五月色惰| 中文成人在线| 激情综合五月天| 成人免费在线电影| 91ncom.色| 婷婷丁香在线| 日韩啪啪网| 五月色亭丁香| 中文字幕黄色片| 99碰超| 人妻久久久久久久| 激情九九九九| 无码人妻一区| 婷婷五月丁香综合桃花色网| 五月婷婷说| 免费观看全黄做爰的视频| 亚洲无码成人网| 99熟女| 久久精品视频99| 操操自拍| 欧美丁香五月97色| 超碰免费99| 草榴视频黄色网| 丁香五月天色| 九九青草热| 色色色色色色色色色色色色色97| 影音先锋91资源站| 婷婷WWW久久| 激情五月丁香六月| 91呦呦呦| 天天做天天爱| 色五月天丁香婷婷色| 激情纯色婷婷五月天在线不卡视频| 国产亚洲色婷婷久久99精品91| jiujiu热在线视频| 中文字幕无码人妻少妇免费视频| 婷婷综合网在线| 亚洲日韩一页精品发布| 99热12| 97五月婷婷| 婷婷五月乱交换| 99re热视频这里只精品| 97人妻碰碰碰碰碰久久久久久| 丁香色五月婷婷| 色综合香蕉| 婷婷综合五月天| 任你日视频| 99re这里只有| 99视频久久| 日本99视频| 天天色色婷婷| 99re免费视频| 九九激情网| 综合久久婷婷五月丁香| 欧美人人超级碰| 天天爽天天爽| 色天堂A| 欧美色骚婷婷五月天| 日韩美女在线视频19| 香蕉久久国产AV一区二区| 色色亚洲五月天| 五月婷婷综合色啪| 91超级碰在线视频| 影音先锋五月天婷婷丁香在线观看| 综合网色| 天天拍天天操| 丁香五月亚洲婷婷| 九九家庭影院| 丁香五月婷婷AV| 91狼友视频在线观看| 激情图片五月天| 狠狠搞狠狠操| 人人摸人人干人人做| 欧美噜噜免费观看| 成人亚洲精品| 91凹凸在线| 91免费试看| 在线看的免费网站| 香蕉综合网| 色九区| 五月丁香婷婷网在线在线| 操一操| 精品综合久久久久久五月天| 天天色天天搡| 国产67194| 婷婷激情人妻| 丁乡久久| 7777精品伊人久久久大香线蕉最新版| 色五月美女| 春色激情| 成人草榴视频| 无码视频国内精品久久久| 激情婷婷| 亚洲V国产V欧美V久久久久久| 六月丁香啪啪| 婷婷五月六月丁香| 岛国av网站| 99re这里| 99视频自拍| 五月婷婷激情网| 99精品综合| www夜夜| 日韩九区| 99热这里只有精品在线观看| 亚洲综合五月天| 99热激情| 大地9中文在线观看免费高清| 天天综合精品| 日韩精品视频中文字幕| 99久久超级| 99ri6在线视频| 9在线9在线婷婷在线国产| 超级碰碰一区| 狠狠情色| 日韩啪啪视频| www.91.com处女在线直播| 思思网站| 五月丁香激情婷婷综合| 色色色色色色色色网站| 免费AV在线| 欧美六月| 中文字幕日产A片在线看| 色视频色综合91| 色在线免费观看| 综合网狠狠| 国产欧美第五十五页| 俺也去在线久久精品23欧美综合视频网站,丰满人妻一区二区三区在线视频53,丰满 | 色欲香综合网| 久久黄色片| 99久精品视频| 91丨九色丨东北熟女| 激情婷婷丁香| 伊人网啪啪| 六月色婷婷色| 亚洲激情精品| 亚洲不卡| 婷婷五月丁香第四色超碰在线 | 超碰在线成人| 婷婷五月天日日日干干干| 激情五月,激情综合网| 久99久在线观看| 99这里都是精品| 激情五月天。| 91成人品| 九九热这里只有精品31| 99在线免费视频| 婷婷久久网| 色五月色五天色情网址| 玖玖在线视频福利| 99re视频精品| 人人操av| 婷婷五月丁香香蕉| 婷婷五月免费观看| 五月天 婷 欧美亚洲| 天天干,夜夜爽| 色综合av超碰| 日操五月婷| 九色七七| 北条麻妃伊人| 五月丁香美女| 97欧美在线| 日韩无码AV电影网站| 99欧州偷拍视频| 五月天激情久色| 婷婷五月天色色| 日韩啪啪自拍| 天天婷婷天天| 日本超碰在线| 色色丁香五月天社区| 国产阿姨日皮艹逼内射视频| 久草视频一,二三四| 亚洲六月色| 五月丁香综合啪啪| 午夜丁香综合婷婷| 99久久天堂婷婷| 久久亚洲网| 久久9精品| 五月天色站| 色婷婷五月网| 午夜不卡久久精品无码免费 | 色偷偷人人| 熟女乱论网| 99久久婷婷五月综合| 熟妇天天综合| 天天综合永久| 天天搞天天爽| 色色色婷婷五月天| 五月天停婷基地| 日韩无码亚欧无码| 伊人久久五月天| 乱岳熟女50岁| 梁铮版蜘蛛女在线观看| 久久只有18视频| 色色色婷婷五月| 激情五月婷婷五月| www久久久久久久| 色情一区二区播放| 久久A极片| 丁香五月综合福利视频导航| 99在线观看| 丁香色六月| 超碰狠狠操| 成人综合AV| 色女人久久| 五月婷婷色啪| 99精品无码| 五月天婷婷激情在线色图| 五月婷六月婷婷| 五月天婷婷无码| 婷婷五月天成人综合网| 综合久久婷婷99| 天天看夜夜看| 九九色黄色| 最新丁香六月婷婷| 九九99在线视频| 国产精品色色| 成人一级片| 操人无码| 色色网站观看| 亚洲A片成人无码久久精品青桔| 一个色的综合| 日日干四虎| www五月天激情com| 婷婷五月丁香四射| 色99网站| 成人电影在线免费试看| 六月久久婷婷| 久久亚洲婷婷| 国产亚洲精品久久久久久郑州 | 狠狠精品干练久久久无码中文字幕| 欧美成人网婷婷综合在线| 99亚洲精品综合在线| 国产午夜一区二区三区| 丁香 久久| 日日色综合| 狠狠搞综合色| 一区二区aV电影免费看| 91碰视频| 色天天综合色| 黄色毛片精品| 色婷婷www| 九九在线免费观看| 人妻中文av| 91久久久久久| Jh7Uf088VHafNm| 大香久久伊人网| 9色在线| 丁香五月天欧美| 人人干人人操外国| 九九热免费| 爱婷婷久久视频| 都市激情亚洲| 婷婷五月综合激情| 九九热在线视频观看| 色婷婷丁香五月天| 久久R激情| 91狠狠综合网| 色婷五月天网站| 91九色 婷婷| 成人做爰A片免费看视频| 日欧大屏操| 五月婷婷 欧美| 丁香花五月天社区| 囯产精品久久欠久久久久久九大| www,五月天激情| 在线色色| 久9热插入| 六月婷婷开心| 五月丁香婷婷六月| 久久6这里只有精品| 色综合香蕉视频| 精品一二三区久久AAA片| 九色啦蜜臀| 婷婷激情六月中文| 99久久99九九九99九他书对| 亚洲欧美成人在线观看| 99视频| 婷婷五月天成人| 日在线V视频在线播放| 99精品热视频| 丁香花五月天社区| 亚洲乱码日产精品BD| 久久婷婷激情| 亚洲激情五月天| 五月丁香网中文字幕| 婷婷五月丁香久久| 国产操逼网站| 天天日天天肏天天奸| 综合网天天| 97人妻碰碰碰久久香蕉| 俺也去在线视频| 婷婷丁香五月激情图片| 91九色网| 久久婷狠狠色| 色五月大| 99ri国产精品| 97日本在线播放| 中文字幕按摩做爰| 综合网天天| 激情婷婷色色| 国产无人区大片| 色亚洲欧洲| 91人妻视频| 国产寻花在线| 99热九九这里只有精品10| 天天摸天天肏| 91无码视频| 激情啪啪五月| 99热丁香五月| 日本 色综合| 九九精品re免费视频| 665566 无码| 五月综合激情啪啪啪啪啪| 国产又粗又大又爽又黄| 亚洲色久| 伊人综合网站| 狠狠爱综合网| 久热这里| 五月天激情综合网| 99在线免费视频| 九九综合| 欧美成人一区二区三区在线视频| 激情六月天| 曰韩少妇内射免费播放| 少妇人妻丰满做爰XXX| WWW.国产| 婷婷综合婷婷| wwww.9免费视频| 色五月色五天色情网址| 1024你懂的欧美曰韩| 丁香婷婷老司机久操| 久久国产高潮白浆免费观看99| 日本英国美国欧美亚洲国产精亚洲日韩精品在线观看 | 五月开心婷婷网| 天天操夜夜啊| 婷婷综合成人五月天| 色综合久久天天综合网 | 日本狠狠色| WWW99热| jiZZdr| 思思久久99热只有频精品66| 亚洲精品国产熟女久久久| 欧美黑人巨大性生话| 国产看真人毛片爱做A片| 操日本99| 亚洲操B视频| 91九色熟女| 66精品国产成人| 五月丁香六月婷婷在线小说视频| 亚洲精品性色| 天天插天天爽| 狠狠干婷婷| 国产真实乱了老女人视频| 性爱技巧五月| 久久色五月| 久久老码第一| 九九热这里只有精品在线观看| 这里只有精品视频在线| 亚洲色视频| 婷婷五月激情黄色| 五月丁香五月丁香五月丁香五月丁香91| 精品牛仔裤超碰| 七七九九色色| 亚洲操b| 激情色色| 五月天丁香啪啪网| 色综合中文色综合网| 婷婷色色狠狠| 色婷婷精品| 99热只有这里有精品| 婷婷婷婷午夜| 欧美97色| 亚洲丁香网| 性爱网五月天| 国产亚洲精品久久久久久久久动漫| 97香蕉人人在线观看| 99这里是99在线视频| 五月丁香婷婷俺| 99热综合| 伊人大香久久| 色五月激情问网站| 色噜噜狠噜噜视频| 亚洲精品V天堂中文字幕| www色婷婷com| 五月色无码| 大香蕉99| 五月丁香激情综合网官网| 99热超碰在线| 久久精品视频在这里有| 丁香六月天| 狠狠爱婷婷爱| 五月婷婷久草在线视频综合| 丁香五月婷婷基地| 99热高清在线| 只有久久精品免费| 丁香五月天啪啪| 人妻中文av| 色婷綜合网| 中文激情网| 超色欲天天| 婷婷五月中文字幕国产| 色婷婷六月| 97色在线观看视频| 深爱五月日韩| 最近中文字幕2019视频1| 亚洲小电影在线观看黄999| 婷婷五月婷婷五月| 久99| 五月丁香色色网| 狠狠操狠狠| 久久天堂女人| VA婷婷亚洲| 国产精品国产成人国产三级| 婷婷激情综合网| 婷婷五月天在线视频网站| 国内熟女黄色系列| 婷婷丁香五月激情图片| 五月色网| 亚洲色色色色色色色色色| 狠狠五月激情丁香六月| 天天操精品| 色综合天天天天做夜夜| 色色欧美。| 99精品这里只有免费视频| 综合婷婷| 丁香六月婷婷综合| 色婷婷19| 国产老熟妇亲子乱对白| 五月天另类激情在线| 婷婷丁香黄色| 99热这里只有精品国产首页| 久久91久久精品久久| 婷婷五月开心中文字幕在线| 成人精品视频99在线观看免费| 综合激情开心五月| 午夜色婷婷| 99噜噜噜在线播放| 婷婷成人视频| 天天综合网、天天综合色| 丁香五月天堂网| 五月丁香综合啪啪| 九九免费视频| 五月婷婷丁香成人网| 无码色| 99热 免费| 乱精品一区字幕二区| 五月婷丁香久久久| 日韩乱轮AV| 99热这里只有精品一区| 草榴视频黄色网| 日韩爱操视频| 色99视| 色色色五月婷| 日韩ac不卡无码| 丁香六月婷婷| 狠狠色情婷婷| 99婷五月| 26uuu在线观看| 大香蕉99| 婷婷五月天激情网| 婷婷性爱无码视频| Av免费网站在线| 天天拍天天操| 丁香婷婷大香蕉| 五月综合激情| 天天舔天天摸视频| www.com.色色| 婷婷导航| 开心五激情网| 日韩激情网站| 婷色五月| 色丁香久综合在线久综合在线观看| 九久久婷婷| 激情网婷婷五月天| 婷婷色色五月| 日本一级淫| 久草热在线视频| 久久久精品视频79| 国产午夜精品一区二区三区四区| 久久性爰视频这里只有精品| 1024操逼视频| 天天弄天天操| 色99欧洲色19| 秋霞A V毛片| 香蕉AV777XXX色综合一区| 噜噜网免费视频| 五月香婷婷| 婷婷操无码| 26UUU欧美激情一区二区| 婷婷97狠狠干| 夫妻超碰在线| 免费AV播放| 99亚洲无码| 99综合视频| 丁香五月伊人| 日本色婷婷| 99热这里只有精品一区| 97狠狠色| 丁香婷婷五月色综合| 超碰人人艹| 婷婷五月丁香久久| 激情九月综合| 成人国产网| 丁香五月成人网| 色五月天成人| 天天做天天双| 色婷婷激情| 五月停视频天堂| 婷婷激情六月| 中文av网| 五月天伊人日日噜影片AV| 色婷婷狠| 亚洲国产黄色电影| 日本狠狠干| 亚洲午夜视频| 婷婷色激情五月天| 综合在线网| 97热精品| 操逼综合激情网| 丁香五月影院| 久99久在线观看| 亚洲成人噜噜| 狠狠干在线视频| 久久久18| 成人免费网站免费看| 欧美性色A片免费免费观看的 | 中文av网| 色五月五月婷婷| 视频色色色色色色| 天天草天天爱| 日韩操人| 五月丁香六月婷婷成人| 婷婷94s| 天堂伊人干| 激情第四色| 九九99久久| 99色| 色婷狠狠| 色色网五月激情| 五月激情另类| 青青草性爱视频| 超碰人人射| 青996青| 五月丁香偷拍| 一本到不卡高清DVD| 欧美日本韩国亚洲| 少妇大叫太大太粗太爽了A片 | 99热这里只有精品在线观看| 五月婷婷色吧!| 激情五月婷婷在线区| 26uuu四色| 五月天丁香六月综合| 日韩欧洲亚洲| 国产99久久久| 久久久久久久97| 99精品热视频| 久婷| 久久99综合| 婷婷五月香蕉| 综合色99| 色色五月天婷婷| 亚洲小视频免费播放| 婷色五月| a色色片| 777久久综合视频| 激情99热| 婷婷五月激情片| 丁香五月天av| 丁香五月激情性色郤| 国精产品一区二区三区| 淫荡综合网| 5月婷婷五月天| 激情综合网五月激情| 五月丁香五月婷婷| 色色色com| 91丁香五月| 中文激情网| 色激情五月天| 亚洲亚洲人成综合网络| 丁香婷婷老熟女综合网| 婷婷综合久久综合| 狠狠色丁香婷婷五月| 超碰免费大香蕉| 99re66热这里只有精品| 狠狠 婷婷| 大陆肏屄视频| 五月天丁香| 激情欧美五月丁香| 日本不卡高字幕在线2019| 婷婷五月天97干| 超碰在线中文字幕| 色狠狠综合| 成人做爰A片免费看视频| 国产无遮挡又黄又爽免费网站| 婷婷色色网站| 五月激情综合性爱| 超碰成人免费| 男人综合网| 最新丁香六月婷婷| 91美女被操| 五月天激情综合网| 大香蕉伊人99| 五月丁香色婷婷伊人| 五月丁香激情婷婷综合| 婷婷丁香六月天| 久久精品人妻| 成人性生活免费观看。| 综合久久五月天| 激情精品久久| 天天婷婷| www五月| 亚洲av电影网站| 97操碰视频| 最新五月天婷婷影| 狠狠操天天干| 99精品在线观看| 91精品国产色猫| 免费AAAAA网| 97婷婷五月天| 五月婷av| 91seAV| 五月婷俺去也| 天天干狠狠| 婷婷99狠狠| 任你日热视频| 婷婷亚洲丁香五月| 丁香九月综合| 五婷婷综合网| 操人91| 婷婷丁香五月在线播放| 五月激情站| 9热在线视频| 99热久久最新地址| 玖玖在线视| 万月丁香狠狠爱| 丁香婷婷六月激情文学| 色色射| 专区无日本视频高清8| 欧美性猛交99久久久99| 婷婷五月天激情小说网站| 久久色婷婷| 六月丁香开心婷婷欧美| 视频免费精品免费精品免费精品免费精品免费精品免费精品免费99 | 人妻丰满精品一区二区A片| 91精品国产日韩91久久久久久国模| 激情丰满熟妇五月| 99久热| 天天操五月天| 日本AAAAAAAAAAAAAA片| 日韩999| 色综合久久44| 97 A I色色| 美女久久婷婷| 狠狠做六月爱婷婷综合aⅴ| 99精品视频网| 成人性生活免费观看。| 婷婷成人综合免费视频| 久久丁香五月婷婷| 五月丁香婷婷婷激情爱爱| 综合五月天婷婷色| BBWCUCKOLD精品熟妇| 99re热视频这里只有综合亚洲| 婷婷五月天六月丁香| www.婷婷com| 伊人五月久久| 丁香五月天啪啪| 大香蕉久久伊人婷婷五月丁香| 婷婷五月丁香综合激情| 五月天色色色色色| 丁香六月亭亭久久综合| 亚洲视频一区| 丁香婷婷丁香五月欧美人| 色色色热热热| 久热99| www色色com| 亚洲精品国产成人AV在线| 五月丁香自拍| 97人人爱人人操| 激情六月婷婷| 影音先锋91资源站| www激情| 人妖色AV色综合| 亚洲激情五月| 高清国产一级婬片a免费| jizzdr| 99资源在线| 久久久潮喷-久久久九九-成人AV| 婷婷色系婷色| 精品国产一区二区三区四区阿崩| 99热国产在| 国产暴力强伦轩1区二区小说| 久久九九免费大视频| 婷婷五月天成人| 亚洲欧洲自拍图片专区五月天| 亚洲精品又粗又大又爽A片| 森林影视大全,最好看的2019年视频 | 九九热只有精品|