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

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(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ì)話框程序棋盤(pán)畫(huà)在自繪控件上落子走消息響應(yīng)代碼量在 1000 到 3000 行之間正好卡在「能讀懂」和「能改成自己的」的分界線上。把它跑通能換到什么一份可斷點(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)比任何教程都直觀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ì)話框模板里的寬高用這個(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)??臻g完全扛得住。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è)工程里最直觀也最容易改壞的部分——用 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à)線、畫(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)線用 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)線的后果是每次 Invalidate 觸發(fā) OnPaint窗口先把客戶(hù)區(qū)擦白再逐線畫(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)線、星位、坐標(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 條線按坐標(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ì)話框按鈕上的「落子」「悔棋」「開(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ì)顯示當(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)線配合 Invalidate(TRUE) 強(qiáng)制擦除背景重繪路徑變成了「擦白 → 畫(huà)線 → 擦白 → 畫(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ī)試玩的主觀感受——讓新舊兩個(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
返回資訊列表
亚洲一区日韩精品中文字幕| 日韩三级性| 超碰在线一区二区| 精品少妇人妻一区二区三区| 91肏屄网| 国产无套粉嫩白浆在| yiqicaoav| 亚洲精品蜜桃久久久| 67194无码不卡| 久久人妻办公室视频| 乱伦a片视频| 激情欧美97| 精品999日本| 国产精品一区人妻精品阁在线| 超碰无码加勒比| 青青在线视频日韩欧美| 一区二区中文| 久久精品超碰| 91欧洲国产成人久久精品网站| 欧美精品欧美精品系列 | 一牛一区二区三区久久| JULIA人妻风俗店中出电影| 国产精品久久成人免费| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | www.色操逼| 93人人操人人| 午夜精品久久久久久久99蜜桃一| 国产日韩精品人妻久久久久色欲网站| 久久精品 六十路 熟女 欧美| 欧美性爱超碰97| 夜夜操夜夜高潮夜夜爽国产精品区| 亚洲人在线| 久久久久久中文字幕中文字幕最新| 久久久中文| 国岛片视频| 人干人人人操人人摸| 欧美自拍偷拍综合图片| 亚洲国产一区二区入口| 国产欧美精选自拍一区| 人摸人人操人| 日韩不卡毛片Av免费高清| 亚洲无码成人精品| 不卡一区二区日本视频| 91社区拍啪人妻| 亚洲小电影免费涩涩成人在线高清 | dy888午夜老子影视达达兔| 人人操人人操人妻人| 四虎免费视频| 日韩av在线精品观看| 欧美精品宗合| 美国日韩黄色片| 日韩中文字幕在线视频观看| 嗯啊不要在线观看嗯啊| 久久免费中文字幕在线观看| 激情终合网| 999 久久久| 老鸭窝日丰县女人| 91高清欧美| 玖草在线视频| 亚洲va有码在线天堂| 强奸乱伦动态污图免费| 日韩三级一区 | 久久蜜桃综合网| 精品小视频在线| 欧美综合 站| 久草成人影片| 亚洲图片激情小说| 18禁美女裸体无遮挡啪啪| 秋霞曰韩R级| 五月婷婷综合网| 日本大香蕉| 日韩精品 欧美激情| 乱伦一二三| 国产精品欧美日韩久久| 六月婷婷五月丁香| 男人的天堂久久狠| а√天堂资源官网在线资源| 成人性爱美曰韩| 色999亚洲人成色| 蜜臀av中字字幕网站| 亚洲色图综合网| 欧美一区二区| 精品九九国产无码| 久久av色| 久久一区二区三区四区五区| 天天干天天狼在线视频| 久久精品一区| 国产91美女视频| 欧美18老人禁| 色玖玖| 亚洲日韩熟女人妻高清在线| 四方色播| 天美麻花大全视频| 精国久久一区二区三区98| 欧美第一页| 免费观看啪视频| 自拍欧美| av网页一区二区三区| 青青草日本无码| 熟女露脸激情自拍视频| 大香焦A片| 台湾大香蕉99热| 清纯唯美亚洲综合| 日韩黄色成人性爱| 嗯嗯不要 视频| 日日日日做夜夜夜夜无码| 天天综合色电影| 97超色| 国产东北女人在线视频| 国产精品。| 午夜爽爽爽| 美女自卫慰黄网站免费| 婷婷精品国产欧美精品亚洲人人爽| 亚洲日韩人妻中文字幕一区| 1024亚洲中文字幕久在线看片你懂的| 鸥美中出| 激情综合五月天| 素人伊尹大香蕉免费下载视频| 日本日逼高清| 天欧美在线| 日韩人成网站在线播放| 日本免费一区二区不卡| 国产成人久久久精品免费AV| 亚洲久久久久| 国产成人资源| 乱伦a片视频| 欧美大香蕉97| 九月丁香综合网| 国产精品成人无码a v毛片| 蜜桃中文字日产乱幕4区| 日韩99999色| 亚洲玖玖爱| 精品久久久久av影院| 超碰69| 九月丁香婷婷色| 亚洲综合一| 乱伦1色页| 风骚少妇视频中文字幕| 黑丝少妇| 翔田千里无码一区| 情色五月天网| www.天天干| 五月天伊人网| 宗合情欲网| 双插性欧美一二三区| 极品色电影院| 成人 日韩欧美一区| 日本久久女同性恋视频| 国产一区二区三区,在线观看观看| 国产精品点击进入在线影院| 国产AV天美传媒一区二区三区| 国产精品亚洲免费| 78超碰| 啊啊啊不要啊啊受不了了视频在线| 国产免a费看黄片在线| 精品国产乱码久久久久久久久久毛片| 精品一区96| 韩三级a视频在线观看| 粉嫩av一区二区三区四季| 综合久久中文字幕综合日韩精品| 都市久久精品激情亚洲| 久热伊人| 亚洲骚男同com| 欧美午夜精品久久久久久3D| 亚洲欧美国产其他二区| 国产女同视频在线播放| 久久这里只有精品9| 伊人伊人LD| 激情五月天婷婷| 老熟女搡BBBB搡BBBB视频| 成人天天爽| 人妻夜夜爽天天爽麻豆三区网站 | 婷色五月天| 国产亚洲精品A在线观看下载| 欧亚揄拍偷拍精品视频| 丝袜视频一区二区在线播放国产中文| 五月天激情婷婷| 久久性生大片免费观看性| 俞拍自拍| 亚洲综合99999| 97啪啪| 国产精品嫩草影院免费| 欧美日韩色综合网| 亚洲一区日韩精品中文字幕 | 亚洲无套久久嗯嗯| 开心五月深爱五月| 亚洲国产一级精品毛一级精品看免费视频| 日本一级特级毛片视频| 台湾佬大香蕉| 99色网| 香蕉精品二区二区| 亚洲伊人久久精品影院| 日1区2区3区2020| 9999亚洲精品| 绑缚麻绳人妻寝取完整版| 玖玖综合.com| 亚州国产精品乱| 无码天天操| 91成人高清在线观看| 九久精品| 91综合在线| 南澳成人一级片在线播放| 2019午夜福利视频| 色天堂在线观看| 日韩精品人妻系列无码天堂| 啊a一区在线| 欧美激情综合色综合啪啪五月| 日韩欧美字幕亚洲一区二区| 97啪啪| 凹凸视频特色日本特黄| 大香蕉手机在线视频| 性站| 午夜天堂网| 九九久久久久久爱| 狠肏骚人妻| 人妻精品综合中文字幕在线 | baisiav| 伊人综合色网| 国产有码一区| 久草在| 亚洲丝袜制服国产91_国语字幕免费观看完整版下载第5集_ | 欧美夜夜骑视频| 亚洲欧洲日产国产综合网| 97玖玖超碰| 欧美日韩国产男人| 欧美另类丝袜熟女| 思思热一热婷婷热一热| 亚洲中文国际强奸字幕| 男人的天堂亚洲| 嗯嗯啊中文字幕| 亚洲国产一区二区三区在线| 秋霞福利网| 久久有码视频| 亚洲天堂男人的天堂| 久久97| 樱花蜜乳av| 黄色一级视| 婷色五月| m欧洲一级午老| 长久操视频| 婷婷爽人人婷婷爽视频| 免费观看性欧美一级| 黄片色区软件| 亚洲日本成人动漫| 亚洲在线A| 天天看夜夜看日日干| 99精品欧美一区二区三区桃色| 午夜男女爽爽爽在线视频| 精品国产一区二区三区av在线资源| 动漫片子网站3黄| 日韩综合色网| 操www| 午夜免费视频1000| 日韩色图 一区二区| 99rre在线精品99re8| 2018天天日天天日| 色噜噜婷婷| 中文字幕丝袜美腿| 美女诱惑一区| 国产精品岛国片在线观看| 日本久久久久久久久| 好屌色综合| 91精品国产综合久久久蜜臀酒店| 亚洲日韩国产欧美综合v| 厕所偷拍在线| 日本色日夜干| 欧美日韩99| 91激情网| 亚洲春色欧美激情自拍| 北京专精特新企业招聘信息| AV天堂因数| 夜夜影视四色| 天天内射| 欧美一区二区三区互相| 日本久操视频| 青青草这里只有精品| 午夜福利免费福利视频| 99re95| 成人毛片免费| 91在线|亚| 久久婷婷一区| 九九九九久久久| 国产一区二区在线看| 欧美色视频在线| 精品无码一二三四区| 精品视频一区二区| 美女在线H91| 91精品国产一区三一| 五月天久久久| 欧美同性恋 的搜索结果 - 91n| 91碰超| 都市激情人妻一区二区青青操视频 | 亚洲国产一级黄色视频| 97 超碰 人人做 人人爱| 97干97色| 怡红院怡春院| 日韩在线欧美精品一区二区| 人妻天天爽夜夜爽精品2| 91精品老女人| 好吊色一区| a男人的天堂久久一级A毛片| 绑缚麻绳人妻寝取完整版| 国产精品白丝在线播放| 四虎视频在线观看| 99久久久久| 91A欧美电影网站| 亚洲无套久久嗯嗯| 人人搞人人插人人操| 午夜福利久久久噜久噜久久综合| 国产成人一级av88| 狠狠操狠狠燥| 激情丁香五月婷婷| 日韩一级性爱无码| 久久久久久久久久久久久久久久9| 奇米四色影视777久久久| 99爱爱| www狠狠| 亚洲色图综合| 国产情色在线| 99精彩视频| 亚洲一区二区三区在线激情| 狠狠爱AV| 天天日日舔舔| 黄片在线免费在线观看| 亚州综合色| 美女91在线观看| 人妻日日干| 热热色中文无码| 曰本精品久久久| 免费一级特黄特色大片在线观看看| 插B在线观看| 色狠狠综合噜一二三区| 日本3级一区二区免费| 欧美中出| 婷婷丁香人妻 | 亚洲性网| 婷婷九月丁香| 欧美色66| 99热这里是精品| 97色伦97色伦国产欧美| 91精品在线播放| 9热9热综合网| JULIA一区二区三区在线播放| 好属操| 亚洲素人综合| 欧洲精品久久| 中文字幕 一区二区 亚洲无码| 精品一区二区综合熟妇| 午夜福利国产欧美日韩夜夜| 东北老熟女| 欧美日韩一干二干| 狠肏骚人妻| 日本三级黄页| 综合激情婷婷| 91丨熟女丨丰满熟女| 色婷婷六月丁香七月婷婷| 超碰在线1234区| 美女淫穴| 久久做97| 亚洲精品欧洲精品| 任我爽视频在线观看| av一区二区三区 中文| 日韩在线欧美精品一区二区| 亚洲中字幕日本一区二区三区| 99热国产| 亚洲欧美天| 东北操逼| 99热大香蕉伊在线| 不卡一区视频| 久久久国产精品亚洲精品| 91偷拍欧美亚洲| 人妻啊啊人妻啊啊| 大香蕉伊人一区在线观看| 99久久九九| 牛黄色久午久| 午夜精品探花| 亚洲免费人妻在| 亚州操逼图| 91人妻精华帖| 久久性爱大全| 婷婷五月天av| 日韩人妻精品久久久久| 久久精品国产精品亚洲艾通辽熟妇 | 日韩伦理视频| 日韩AV一区二区三区三州三州| 97国产超湿| 久久久蜜桃一区二区三区| 99婷婷| 日韩啪啪啪啪啪| 欧美日不卡| 91oumei| 青青草在线视频人人想人人上| 婷婷日韩一区二区三区中文字幕在线| 偷窥自拍亚洲色图| 性爱欧美五月| 久久亚洲日韩国产欧| 天天干夜夜操一区二区| 欧美激情精品久久久久久| 午夜在线播放| 无码外流操逼视频| 亚洲成?V人片在线观看福利| 婷婷伊人| 国产精品肉丝自拍| 性性欧美| 99热精品在线观看| 人人操人人摸人人骑| 最近2018中文字幕在线高清第一页| 天天射天天| 天天干夜夜一操| 大香蕉婷婷| 四月丁香婷婷| 人妻激情在线视频| 久久国产乱子伦精品免费女,网站| 国产操逼网站亚洲一级黄色| 日韩亚洲精品一区二区| 98色网| 91真人天天在线| 97久操| 黄色免费一级在线毛片| 嫖老熟女A片一二三区| 狠狠中文字幕| 97欧美色综合| 内射老妇BBWX0C0CK| 午夜黄色免费在线观看| 手机不卡视频不卡在线一二三区| 国产吹潮女在线观看| 午夜在线播放| 日韩国产成人自拍视频| 富二代亚洲精品99| 日韩大香蕉AV影片| 粉嫩粉嫩一区性色AV片| 天天综和| 青青青青青手机视频| 中文字幕人成乱码熟女香港| 日韩啪啪网| 欧洲与亚洲欧美精品中文字幕| 欧美啪啪啪91| 在线观看色视频| 色噜噜人妻av 中文字幕| 啊嗯嗯啊好大好爽| 免费看黄片现成| 深夜啪啪啪视频免费| 小草av不卡亚洲二区 | 99爱久久视频频| 91n处女在线观看| 一起草日韩| 97亚洲一区| 亚洲做性| 操一区| 日韩精品国模| 欧美黄色片在线播放| 久悠悠av| 操b在线观看| 98一区二区精品| 婷婷人妻激情| 激情五月天视频| 深夜激情| 婷婷五月天久久久| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 欧美综合狠| 999亚洲国产视频| 天堂国产AV| 日本成人免费一区二区三区| 搡老女人老妇女老妇老熟女怎么读| 日日不卡av| 国产激情av女片自拍| 亚洲999综合| 久操网无码在线| 亚洲97p| 伦伦成年午夜免费视频| 人人九九精| 亚洲精品亚洲人成在线麻豆| 国产风韵犹存熟妇三区| 国产亚洲精品第一最新| 九九九只有精品| 999国产精品999| 日日玩天天干| 91五月天| 成人av毛片在线观看| 99青草| 黑人美精品 A片| 国产1727欧美| 欧美综合区| 蜜臀久久99精品久久久久久酒店 | 亚洲图片欧美偷拍| 国产精品天美传媒| 99亚洲精品| 色婷婷久久综合超碰| 日本一区二区三区四区免费观看| 情色图区| 午夜福利久久久噜久噜久久综合 | 一区二区三区成人 | 精品无人区麻豆乱码1区2区图片| 狠狠色综合网| A级国产欧美激情在线| 91欧美美女日韩国产婷婷| 国产日韩精品人妻久久久久色欲网站| 婷婷久久久精品| 欧美性爱97超碰| 99re国产精品视频| 欧美色九九| 九九九九九九九九九九九免费国产| 国产丝袜美女在线一区| 国产熟女自拍| 99热色这里只有精品| 尤物网址| 婷婷午夜清品久久久久久久性色视频观| 综合网,亚洲,欧美| 亚洲AV成人无码一区二区三区在线观看| 国产农村妇女毛片精品久久| 老师充足的奶水小说| 亚洲国产一级精品毛一级精品看免费视频| 久久午夜神马| 偷拍在线观看视频| 亚洲天堂,男人| xxx0国产在线播放| 精品无码欧美三级| 亚洲深夜福利| 国产免费一区| 懂色AV中文| 五月丁香色色网| 日本精品网站在线中文| 91人人操| 新怡红院| aaaa少妇高潮大片| 青娱乐福利99| 91无遮挡| 精品一区二区三区蜜桃| 91N综合网在线| 国产有码一区| 熟妇熟女视频一区二区三区| HEYZO高无码国产精品227| 乱伦一二三区| 人妻丝袜美腿中文字幕| 天天综合~91| 欧美大色交| 亚洲中文字幕日产无码久久| 亚洲熟妇乱女区二区三区| 亚洲激情久久久伊人综合| 午夜天天碰综合视频| 超碰在线人人射| 日韩ab网 | 很黄很污的免费网站| 亚洲天堂 视频你懂的| 国产黄片精品在线| 欧州一区二区三区四区| 诱惑网综合| 啊啊在线| 精品国产乱码久久久久久久久久毛片| 天天干1区2区在线| 久热99999| 亚州欧美综合| 呦女网站| 蜜桃狠狠色伊人亚洲综合| 亚洲国产精品久久久男人的天堂| 亚洲最大的黄色电影网站。| 人人爱夜夜爱| 国产福利夜| 蜜奶av| 综合激情97| 日日日啊啊啊| 久久精品视频在线观看| 97精品国产精品免费观看| 神马久久中文字幕| 成人久久精品| 97操综合| 欧色网址| 好色综合| 黄色片一区二区三区四区五区| www.99色| 色成人Www精品永久观看| 中国女人内射6XXXXX| 51一区二区三区| 久久久精品成人国产| 天美麻花大全视频| 欧美日韩性感| 日韩激情视频| 台湾佬中文娱乐网久久久久久久久久com| 久久偷偷色综合蜜桃| 亚洲做性| 日韩福利电影网| 在线无码视频| 伊人99热| 九九热五区| 四虎在线免费视频| 91狠狠综合久久| 久久的免费性爱视频| 亚欧成人综合影院| 99九九久久| 曰本精品久久久| 超碰视97中文| 日本不卡二区| 精品久久久久久中文| 色色五月天激情| 国内黄色精品| 色天天野狼综合社区| 日韩欧美加勒比| 无码av永久免费专区网站| 国产成人网址| 色天堂综合| 9久久久久久| 亚洲黄色视频在线观看视频| 操逼日韩无码 | 加勒比综合a∨| 国产精品诱惑| 黄色视频特级毛片| 国产夜夜操| 色偷偷2020免费视频播放| 1769一区| 婷婷五月天_亚洲小说欧美激情另类_精品久久国产字幕 | 一起草日韩| AV中文在线可看| 日本中文字幕一区| 亚洲一区二区三区春色| 99ri视频| AV久日| 黄色大片免费在线| 人妻夜夜爽天天爽麻豆三区网站| 亚欧操逼片在线观看 | 2024人人操人人摸| 精品国产久久乱码| 99亚洲精品| 爽爽歪在线视频| 风间由美日韩欧美久久| 91爆操视频| 97日视频| 亚欧免费| 国产超碰在线一区| 亚洲?V高清一区二区三区尤物| 亚洲乱熟女一区二区三区大香蕉| 狠色婷婷久久一区二区三区_| 日韩性爱一级片| 吻戏激情性巴克| 男人的天堂VA| 亚洲欧美国产日本一区二区三区| 天天操天天日天天干| 久久性爱精品一区| 老师充足的奶水小说| 日日夜夜精品视频| 日韩人体偷拍| 91无遮挡| 亚洲情色婷婷五月天| 欧美加勒比| 95人妻爽爽人人做人人澡| 老鸭窝在线视频播放| 中国亚洲呦女专区| 玖玖无码超碰| 色色色综合网| 青青草好吊色| 精品久久久久,69国产成人精| 欧美翘臀视频网站一区二区三区| 五月天开心网| 少妇综合| 2019天天操天天爽天天拍| 欧美特大AA级黄片| 香港日本韩国人妇99www.wccm20| 高清无码一区二区三区| 好舒服视频| 国产亚洲色婷婷久久99精品91葵花宝典| 天天综合麻豆视频| 人人扣人人操| 国产精品剧情| 欧美色图亚州激情| 午夜男人av| 国产精品禁久久久精品| 六月婷婷综合| 人人搞人人插人人操| 动漫区日韩区欧美区| 国产欧美岛国精品一区| 9久9久9久9久视频网站| 日韩三四五区| 操逼免费视频无码国产| 欧美精品不卡一二三四在线91| 欧美久热| 五月婷婷丁香六月丁香| 丝袜色综合| 92福利社视频| 亚洲精品国产熟女| 超碰色美女| 色婷婷aV一区二区三区麻豆综合| 亚洲制服aⅴ中文字幕| 大白逼三四级| 三级片大波波| 手机看片1024你懂的国产| 麻豆成人影音在线| 亚洲精品一区二区免费在线观看| 国产亚洲综合欧美一区| 强奸抽插av| 亚洲AV色图一区| 日韩精彩免费| 成人国产精品三级A片| 欧美亚洲中文| 日本亚欧爱爱| 亚州乱码中文字幕综合久久久| 久久久久久久国产a∨| 丰满人妻区一区二区三| 天天影视之亚洲综合网| 不卡九肏| 激情六月婷婷| 无码聚合| 91香蕉视频在线观看免费| 蜜臀久久99精品久久久久久成人小说 | 激情看片网站| 性久久| 97久久久| 亚洲 欧美 第一页 | 国产精品午夜AV完会免费| 丝袜色综合| 欧美性区| 98一区二区精品| 国产 丝袜 欧美中文 另类| 综合av社区| 午夜精品久久久久久久久久久久久 | 色香综合天天影视综合| 区一二区日韩亚洲乱码av电影| 婷婷伊人| 丁香五月自拍| 竹菊影视国产一区二区| 伊人久久综合影院| 成人一道本免费视频| 97色在线视频| 精品国产乱码久久久| 中文字幕精品专区搜索结果91| 97久久久精品| 蜜臀久久99精品久久久久免费观| 麻豆人妻精品一区二区| 五月丁香成人网| 欧美顶级黄片AAAAA在线免费看| 岛国毛片手机在线观看| 久热在线精品免费观看| 日本高清免费一本视频在线观看| 国产免费一区2区3区| 亚洲在线91| 美女91AV| 亚洲国产精品无石码久久 | 欧亚在线视频| 91一起操| 丁香六月天| 精品 码产区一区二-1080P高清在线www-B029AV| 自慰白浆在线观看| 九九色婷婷| 日日夜夜天天| 久久精品亚洲婷婷| 久久这里精品国产99丫e6| 神马久久久久眼| 久久不卡一区二区| 综合 青草 伊久久 影院 综合| 97亚洲资源| 精品人妻一区二区三区夜夜| 欧美在线 亚洲| 久久久久人| 91美女精品| 亚洲丝袜诱惑| www.色吧5.com| 国产成人无码a| 国产欧美一级在线观看| 日韩av在线播放不卡| 婷婷色中文字幕| 天天综合,91综合永久| 欧美亚洲性爱一区二区| 青青草日本中文字幕| 久久九操在线观看| 久久久极品| 最新亚洲黄色免费电影| 黄视频免费| 亚洲天堂人妻熟妇视频| 亚洲精品亚洲人成人网| 欧美中文字幕男人天堂久久精品 | 中文字幕色AV| 亚欧美色| 日日噜噜夜夜狠狠视频无| 久草免费在线一区二区| 激情自拍 校园春色| 亚洲永久AV无码精品秋霞| 99热国产| 天天上日日上日韩精品| 精品亚洲国产成人精品| 欧美在线干| 超碰 av 女人天堂| 色69大色97香蕉| 99婷婷一区二区| 国产真实野战在线视频| 天美传媒国产原创中文字幕亚洲欧美另类 | 夜夜骑日日| 中日韩一区二区三区欧美| h无码动漫在线观看| 亚洲春色激情小说| 久久骚| 97综合网| 久久一区二区三区入口| 久久久久9久久久久| 啊灬啊灬啊灬啊灬高潮奶出了免费视 | 欧美亚洲色图另类国产| 天天拍天天操| 欧美国产操逼| 大香蕉乱级| 91狠狠综合久久| 中出789在线视频| 啊v在线观看视频| 男女激情黄色网址| 欧美老妇女内射网址| 色噜噜人妻av中文字幕| 欧美日产国产在线成人第一区| 日本超碰在线国产一区| 97视频在线观看网站| 国产精品国产亚洲区艳妇糸列| 大香蕉丝袜一级片| 欧亚揄拍偷拍精品视频| 爱妃国产亚洲视频中文字幕| 午夜婷婷| 亚洲丝袜二区在线| 精品国产丝袜一区二区三区乱码| 爱干爱射网啊啊啊| 成人性交免费视频| 欧美日韩性爱精品| 人妻激情在线视频| 岛国激情视频在线观看| 9999伦理视频| 性天堂| 综合网欧美在线| 噜噜噜噜久久久精品免费| 久久国内| 欧美黑人91| 国产女乱淫真高清免费视频| 97视频在线观看高清资源| 亚洲国产综合视频| 亚洲欧洲偷拍一区| 日本天天干天天操一区| 丁香五月成人| 91熟女丨91老女人| 婷婷色综合| 男人的天堂一区| 婷婷导航| 屁股久久久久久久久久| 丰满人妻一区二区三区| 九九九九AV| 久久久爆乳翘臀一线天伦理视频| 亚洲区 欧美区| 色综合99| 三久久久四久久久久| 人妻天天夜夜爽一区二区| 啊啊啊爽爽| 爱射综合| se吧提供91精品国产91久久久久久| 嗯嗯啊啊操死我| 日产欧美电影一区二区三区| 97亚洲资源| 中文字幕乱在线伦视频中文字幕乱码在线 | 伊人991| 口爆吞精在线观看| 97网站在线观看| 五月丁香成人网| 亚洲色欧美| 久久久国产精品人妻丝袜| 欧美激情性久久久久久| 大香蕉青青9| 婷婷亚洲五月***久久| 久久线上视频免费看| 91欧美高清| 一级AV性爱| 亚洲综合 欧美| 五月婷婷六月丁香| 日韩成人性日韩成人性爱视频在线免费观看 | 黄色污污污污污污网站| 98人妻精品一区二区色欲| 日韩电影天堂视频一区二区| 欧美性爱视频免费一区一A| 97操B| 红桃视频高潮| 1禁看欧美黄片免费看| 欧美性色欧美| 97一区二区蜜臀| 国语av最新自产拍在线观看| 亚洲人综合19| 91高跟美女在线播放| 黄色高清无码无码破解免费暗网| 国产精品久久久久久久久久久久| 伊人国产视频| 欧美性爱五月天| 国产黄色小视频网站| 天天操熟妇| 亚洲中文字幕乱码无码一区二区| www黄片免费看com| 懂色Av| 久久精品中文字幕女同| 青青草九九九九九| 熟女人妇一区二区三区| 久草午夜| 人乳av| 超碰97色色| 欧美性爱五月天| 亚洲第一黄色av网站| 黄骗免费网站| 熟女久久| 成人一区二区三区四区| 日本熟妇一区二区三区| 一区二区三区 日韩欧美| 亚洲精品久久久久毛片A片拉屎 | 精品丝袜无码一区二区三APP| 日本不卡中文| 久草综合视频| 偷窥自拍亚洲色图| 色婷婷网| 久久久免费的精品| 欧美传媒| 亚洲欧美综合| 欧美日韩色| 国产精品69久久久久久久| 成人热久久精品| 九九九久千久久激情蜜桃在线看| 五月婷在线| 国产精品熟女乱伦| 国产综合网站在线播放 | 精产国品一区二三产品| 久久精品欧美一区蜜桃| 日韩婷婷| 日韩av影片在线观看| 精品成人亚洲午夜电影| 成人av性爱电影在线观看| 性色aV一区二区三区噜噜| 四虎免费在线播放| 久久久少妇诱惑精品视频| 九九九影院| 久久久久久中文版| 亚洲狼狼干综合1| 四月丁香婷婷| 天天看少妇| 野狼激情网| 91色艳| 亚洲日本韩国极品一区二区| 一区二区日韩欧美久久| 婷婷色婷婷| 九色PORNY9l原创自拍| 精品国产一级久久| 亚洲性爱无码乱伦av| 国产女人操逼视频| 亚洲精品第一| 国产成人无码高清| 国产自偷自拍一区| 久久99精品视频| 亚洲黄色影视| 五月激情综合网| 欧美黄页在线| 91丝袜在线观看视频在线观看| 久久久影院| 亚洲精品丝袜| 嗯嗯啊啊视频一区二区三区| 使劲用力艹少妇视频一区二区| 亚洲激情天堂网| 99精品人人爽| 青青草导航在线视频| 狠狠97| 大香蕉99999| 久久精品国产Aⅴ| 国产三级在线现体验区| 久久亚洲AV无码专区首页| 玖玖玖玖精品国产剧情| 日韩中文字幕二区| 黑操B| 物尤视频一区二区| 操91| 夜夜爽夜夜操| 日韩在线地址一| 一本一道vs波多野结衣| 日本色色色| 夜夜高潮夜夜爽| 亚洲欧美日韩国产丝袜自拍中文| 综合网亚洲1| 夜色91| 欧美日韩日产免费网站看| 高跟丝袜AV专区国产| 丁香五月激情啪啪| 91九色丨国产丨爆乳| 嗯嗯啊啊啊啊轻点视频| 99re欧美| 日本十八禁免费看污网站| 国产三级电影免费观看| caopeng97| 国产诱惑| 国产精品视频内谢女人| 亚洲精品无码久久AV| 99色视频| 加勒比AV天堂| 97精| 青娱乐久久艹| 91 国产丝袜在线放观看| 智利AV在线网| 国产自制av蜜乳| 熟女六十路| 99久久综合| 天天久久| 国产 亚洲 丝袜 制服| 国产超碰国产97| 亚洲系列欧美| 亚洲本色精品一区二区久久| 91精品无码人妻系列| 亚洲一二三精品久久网| 九九九偷拍| 国产欧美精选自拍一区| 国产成人资源| 91M一社| 一区二区三区黄色片a| 欧美日韩性感| 自拍啪啪视频| 97精品熟女少妇一区| 天天干天天日天天射黄色| 玖玖大干人妻| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 丰满熟女一区二区三区在线播放| 欧美系列在线一区二区| 色爱欲亚洲| 操东北女人| 狠狠综合| 亚洲人精品久久久| 欧美老妇曰批的视频| 中文字幕在线观看网页| 后入国产| 日韩一级片| 久久精品一区二区三区蜜桃臀| 中文字幕日韩电影人妻| 亚洲中文字幕有码视频一区二区三区| 99久在线精品99re8蜜桃| 深夜激情无码| 国产女主播视频在线观看| 久久久亚洲高清不打码| 啊啊啊啊啊在线视频| 国产免费一区2区3区| 亚洲夜色在线| 97天天综合| 97天天爽| 亚洲学生妹高清av| 欧日韩不卡视.频| 免费在线视频97| 五月丁香综合网| juliaann丝袜| 大奶啊啊好爽| 91美女视频| 欧美色图亚洲色图成人在在线| 久热一区二区| 少妇免费视频| 天天干天天操天天操夜夜操天天操 | 劲爆欧美人妖三区91| 国产理论视频在线播放| 精品人妻一区春色| 亚洲蜜乳av| 99re6国产精品99re| 免费作爱一级视频| 久久久成人免费av电影| 静品嫩模一区二区| 99re视频在线播放青草| 国产亚洲一黄| 免费在线看黄片av| 欧洲射精91| 国产人妖的免费的视频| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊 | av天堂天堂av日韩| 久久精品高清无码一区| 丰满的三级少妇欧美久久久| 无套后入双马尾| 天天色悠悠激情| 一本色道综合久久欧美| 六月婷婷一区二区三区| 白嫩国模丰满一二三区| 欧美性性性| 中文字幕55555| 丰满高潮18xxxx| 啊v在线观看视频| 97色诱| 欧美一级A片在线看视频性色| 一区二区三区高清| 超碰在线974| 亚洲一卡2卡3卡4卡乱码网站 | 亚洲一区二区三区在线激情| 丝袜美腿校园春色| 26uuu国产免费观看| 91bbb| 亚州色图片在线色| 91一区二区| 性爱视频无打码在线观看| 色婷婷日韩精品一区二区三区| 国产欧美精品日韩区二区麻豆天美| 欧美日韩黄片精品在线| 91在线国产后入风骚翘臀美女素人| 欧美另类色图片| 日本不卡高清视频| 黄页av| 亚洲男人的天堂网| 亚洲天堂男人在线| 老熟妇一区二区三区…| 男人天堂2030| 免费超碰97久久| 亚洲AV免费在线观看| 亚洲砖码砖专无区2023| 日本久久女同性恋视频| 精品一区99999| 蜜桃臀 后入 一区 二区 三区 在线| 国产午夜激片Av毛片不卡| 国产捆绑一区| 亚洲玖玖爱| 日韩人妻无码精品系列| 99精品久久| 亚欧成人综合影院| 久久人妻| 97精品一区二区视频在线观看| 99抽插| 欧美78p| 五月丁香六月婷| 亚洲天堂中文字| 日韩免费a级毛片无码a∨| 国产一区二区在线看| 91爱看| 中文字幕av久久爽Av| 嗯啊不要啊在线 | 久久久三区二区一区| 天天日天天射天天干| 啊啊啊不要好疼视频| 天天看高清麻豆| 艹精品| 日韩熟女操逼| 熟妇一区二区| 久久久久久无码人妻中文字幕| 久久综合女优| 九久9热| 国产av高清版| 防屏蔽在线视频| 亚洲日本韩国在线| 午夜福利免费福利视频| 日韩性爱毛片操骚逼| 26uuu成人影片| 放黄片放3级黄片没穿衣服| 国产欧美另类久久久精品课程| 久久久精品九| 四虎影视永久在线观看精品免费网站| 亚爽爽爽爽爽爽爽爽| 欧美性暴力猛交XXXX| 亚洲人在线成线成人| 精品久久在线区一区| 欧美在线官网| 国产精品91一样| 99re这里只有精品中心播放| 啊啊啊啊一区| 国产欧美第五页| 青青国产精品在线| 极品色社| 99青草| 成年男人的天堂| 91jk色拍| 国模不卡一本二本三电影| 久草婷婷| 操逼999| 尤物视频偷拍免费| 少妇熟女视频一二三区| 九九五月天| 精品久久久久综合无码| 亚洲欧美999| 欧美不卡五十路| 日韩激情毛片一级久久久| 26uuu偷拍亚洲欧洲综合| 97人人操人人摸| 搡老熟女老女人老熟妇免费视频|