国产成人欧美一区二区三区vr_久久国产精品人人爽人人爽_国产精品永久免费播放_肉欲啪啪a∨无码精品一区二区_国产超短裙jk丝袜在线_亚洲AV片高清资源在线观看_国模无码一区二区三区久久_国产成年人未进视频_中文字幕无码精品夜_一区二区三区在线视频免费看_亚洲成AV人片在线观看网址_日本激情视频高清综合久久_亚洲午夜视频福利_国内大量揄拍人妻精品視_久久国产精品福利二区三区

ARTICLE DETAIL

資訊詳情

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

用Python打造國(guó)際數(shù)棋:GUI、網(wǎng)絡(luò)對(duì)戰(zhàn)與AI實(shí)戰(zhàn)

用Python打造國(guó)際數(shù)棋:GUI、網(wǎng)絡(luò)對(duì)戰(zhàn)與AI實(shí)戰(zhàn) 簡(jiǎn)介本資源是基于Python實(shí)現(xiàn)的國(guó)際數(shù)棋3×3井字棋綜合項(xiàng)目面向Python初學(xué)者與游戲開發(fā)入門者覆蓋圖形界面、網(wǎng)絡(luò)對(duì)戰(zhàn)及AI博弈三大核心能力訓(xùn)練。項(xiàng)目采用Pygame構(gòu)建可視化交互界面結(jié)合多線程實(shí)現(xiàn)雙人實(shí)時(shí)聯(lián)網(wǎng)對(duì)戰(zhàn)并通過α-β剪枝算法優(yōu)化AI決策效率完整呈現(xiàn)從UI渲染、邏輯分離前后端解耦、網(wǎng)絡(luò)通信到智能策略的全棧開發(fā)流程。壓縮包共44個(gè)文件含12個(gè)核心Python源碼如solo.py、AI.py、Web.py、houduan.py等、20個(gè)編譯后pyc文件、7個(gè)音效wav文件、1個(gè)背景jpg圖、1份PPT算法講解文檔及配置說明txt等總大小6.71MB結(jié)構(gòu)清晰模塊職責(zé)明確。目前已有844人學(xué)習(xí)下載提供可直接運(yùn)行的完整工程、帶注釋的AI估值函數(shù)estimate.py、前后端分離設(shè)計(jì)范例及配套音效資源是掌握Pygame游戲開發(fā)、基礎(chǔ)網(wǎng)絡(luò)編程與博弈算法實(shí)踐的理想學(xué)習(xí)樣本。 我最初做國(guó)際數(shù)棋的Python版本純粹是因?yàn)樵诩夹g(shù)社區(qū)看到一個(gè)討論帖——有位老師想找一款帶圖形界面的數(shù)棋軟件給學(xué)生上課用結(jié)果翻遍全網(wǎng)都沒找到合適的。我當(dāng)時(shí)正好在折騰Python游戲開發(fā)順手就把這個(gè)項(xiàng)目接了下來。后來一步步從單機(jī)版做到局域網(wǎng)對(duì)戰(zhàn)版又加了AI對(duì)戰(zhàn)打包成zip分發(fā)給了不少人。這個(gè)項(xiàng)目雖然不算大但麻雀雖小五臟俱全圖形界面、網(wǎng)絡(luò)通信、博弈AI三塊硬骨頭都啃了一遍過程中踩的坑和總結(jié)的經(jīng)驗(yàn)我覺得值得單獨(dú)寫一篇文章分享出來。如果你正打算用Python做一個(gè)帶界面的小游戲或者對(duì)棋類AI的實(shí)現(xiàn)思路感興趣又或者想了解一個(gè)完整的Python項(xiàng)目從單機(jī)到聯(lián)機(jī)再到AI的演進(jìn)路徑這篇文章應(yīng)該能給你一些實(shí)打?qū)嵉膮⒖肌?. 國(guó)際數(shù)棋的規(guī)則與項(xiàng)目定位為什么這個(gè)游戲適合拿來練手國(guó)際數(shù)棋可能很多人沒聽過它和象棋圍棋不一樣是一種結(jié)合了數(shù)學(xué)運(yùn)算和策略規(guī)劃的棋類游戲。棋盤一共15個(gè)格位分四個(gè)區(qū)兩端各有7個(gè)棋子分別標(biāo)有0到6的數(shù)字。開局時(shí)雙方棋子按固定順序排列在各自陣營(yíng)走棋靠骰子決定步數(shù)棋子可以平移也可以跳躍跳躍時(shí)路徑上經(jīng)過的棋子數(shù)字可以做加減乘除運(yùn)算結(jié)果等于跳躍距離就能落子。這個(gè)規(guī)則聽起來簡(jiǎn)單但實(shí)際玩起來非常考驗(yàn)數(shù)值運(yùn)算能力和路徑規(guī)劃能力。為什么我推薦拿它來做Python項(xiàng)目練手因?yàn)樗銐蛐”姷?guī)則完整實(shí)現(xiàn)難度適中。對(duì)比五子棋——規(guī)則太簡(jiǎn)單AI邏輯容易圖形界面也沒啥挑戰(zhàn)對(duì)比象棋圍棋——規(guī)則復(fù)雜AI實(shí)現(xiàn)難度極高新手根本啃不動(dòng)。國(guó)際數(shù)棋的復(fù)雜度恰好卡在中間圖形界面需要一個(gè)像樣的棋盤和一個(gè)可交互的棋子移動(dòng)機(jī)制網(wǎng)絡(luò)版需要處理回合同步和狀態(tài)一致性AI版需要設(shè)計(jì)評(píng)估函數(shù)和搜索算法每個(gè)模塊都有真實(shí)的技術(shù)含量但又不會(huì)難到讓人放棄。再說技術(shù)選型。圖形界面我用的是Python自帶的tkinter沒有上PyQt或者Pygame原因有三點(diǎn)第一項(xiàng)目目標(biāo)用戶是普通玩家和老師他們不一定有精力裝PyQt這類大型依賴庫內(nèi)置的tkinter打開即用第二數(shù)棋的交互不算復(fù)雜不涉及流暢的場(chǎng)景切換和粒子特效tkinter的Canvas足夠勝任第三打包分發(fā)時(shí)tkinter的兼容性最好不會(huì)因?yàn)榈讓訋彀姹静灰恢鲁鰡栴}。網(wǎng)絡(luò)版用的是Python的socket套接字加JSON協(xié)議沒有引入twisted或asyncio這類異步框架理由和上面一樣——局域網(wǎng)對(duì)戰(zhàn)場(chǎng)景下客戶端就兩三個(gè)同步阻塞式的socket反而更直觀邏輯清晰容易調(diào)試。AI版采用了經(jīng)典的minimax加alpha-beta剪枝評(píng)估函數(shù)自己做了一套位置價(jià)值表這塊后面我會(huì)詳細(xì)展開。2. 圖形界面版的設(shè)計(jì)拆解從棋盤繪制到棋子交互界面部分看起來只是把棋盤畫出來、讓棋子能點(diǎn)能拖但如果一開始不把邏輯和顯示分離后面加網(wǎng)絡(luò)版和AI版時(shí)絕對(duì)會(huì)想哭。我第一版確實(shí)把規(guī)則判斷直接寫在Canvas的回調(diào)函數(shù)里結(jié)果一個(gè)函數(shù)動(dòng)不動(dòng)就上百行改一個(gè)bug牽連三個(gè)功能。后來痛定思痛整個(gè)重構(gòu)成了三層架構(gòu)規(guī)則層、狀態(tài)層、表現(xiàn)層這個(gè)思路在后續(xù)擴(kuò)展時(shí)幫了大忙。2.1 棋盤的三層架構(gòu)規(guī)則、狀態(tài)與表現(xiàn)分離規(guī)則層負(fù)責(zé)所有游戲邏輯的判定包括擲骰子的步數(shù)生成、當(dāng)前玩家可以走哪些格子、棋子移動(dòng)是否合法、跳躍路徑上的數(shù)字運(yùn)算是否成立。這一層不關(guān)心棋子在屏幕上長(zhǎng)什么樣也不關(guān)心走棋的消息是從鼠標(biāo)點(diǎn)擊來的還是從網(wǎng)絡(luò)來的它只接收標(biāo)準(zhǔn)化的動(dòng)作指令并返回結(jié)果。狀態(tài)層保存的是當(dāng)前對(duì)局的完整快照黑白雙方的棋子排列、當(dāng)前輪到誰、當(dāng)前骰子點(diǎn)數(shù)、游戲是否結(jié)束。網(wǎng)絡(luò)同步時(shí)傳輸?shù)木褪沁@份狀態(tài)數(shù)據(jù)AI計(jì)算時(shí)讀取的也是這份狀態(tài)數(shù)據(jù)。表現(xiàn)層就是用戶直接看到的界面棋盤繪制、棋子渲染、動(dòng)畫效果、鼠標(biāo)事件。它的職責(zé)是解析用戶操作并轉(zhuǎn)換成標(biāo)準(zhǔn)的動(dòng)作指令交給規(guī)則層處理然后根據(jù)狀態(tài)層的變化刷新界面。這三層之間用簡(jiǎn)單的觀察者模式解耦狀態(tài)層發(fā)生變化時(shí)自動(dòng)通知表現(xiàn)層更新。剛開始會(huì)覺得多寫了很多代碼但當(dāng)我把網(wǎng)絡(luò)版接入時(shí)只需要在狀態(tài)層變化后增加一步——把新狀態(tài)廣播給對(duì)手整個(gè)網(wǎng)絡(luò)同步就完成了。AI接入時(shí)只需要讓AI模塊讀取當(dāng)前狀態(tài)、計(jì)算出動(dòng)作指令并推入輸入隊(duì)列界面根本不需要感知AI的存在。2.2 tkinter畫布的坐標(biāo)計(jì)算與棋子動(dòng)畫棋盤的15個(gè)格位我畫在一個(gè)Canvas組件上Canvas寬度設(shè)置為300像素每個(gè)格位是一個(gè)半徑22像素的圓形。格位的坐標(biāo)我是寫死的列表常量每個(gè)元素是一個(gè)二元組表示圓心的x和y坐標(biāo)。這樣反而最簡(jiǎn)單可靠因?yàn)閿?shù)棋的棋盤布局是固定的不像某些游戲需要?jiǎng)討B(tài)生成寫死坐標(biāo)表比任何動(dòng)態(tài)計(jì)算都高效。棋子是Canvas上創(chuàng)建的oval圖形對(duì)象每個(gè)棋子對(duì)象用tag屬性標(biāo)識(shí)歸屬和數(shù)字比如black_3表示黑方的3號(hào)棋子。移動(dòng)棋子時(shí)我用了最簡(jiǎn)單的線性插值動(dòng)畫——把移動(dòng)過程拆成20幀每幀更新一次圓心坐標(biāo)間隔10毫秒。這里有一個(gè)細(xì)節(jié)值得注意tkinter的update和update_idletasks方法要慎用直接在主循環(huán)里調(diào)用update會(huì)卡界面正確做法是使用after方法調(diào)度動(dòng)畫幀把控制權(quán)交還給事件循環(huán)。def animate_move(self, item, start_pos, end_pos, steps20): dx (end_pos[0] - start_pos[0]) / steps dy (end_pos[1] - start_pos[1]) / steps current list(start_pos) def frame(i): if i steps: current[0] dx current[1] dy self.canvas.coords(item, current[0] - 20, current[1] - 20, current[0] 20, current[1] 20) self.canvas.after(10, frame, i 1) frame(1)骰子的交互設(shè)計(jì)做了個(gè)小創(chuàng)新玩家點(diǎn)擊擲骰按鈕后骰子數(shù)字會(huì)快速變化0.5秒再定格這個(gè)效果其實(shí)是用after每50毫秒隨機(jī)刷新一次骰子顯示文字實(shí)現(xiàn)的代碼只有五行但視覺反饋特別好玩家能明顯感受到“擲”的過程而不是干巴巴地跳出一個(gè)數(shù)字。2.3 合法性判斷的前置提示減少誤操作的交互優(yōu)化數(shù)棋有個(gè)容易讓人困惑的點(diǎn)骰子擲出后當(dāng)前玩家往往有多個(gè)子可以走但具體能走到哪個(gè)格位需要經(jīng)過計(jì)算。如果玩家點(diǎn)了不能走的棋子新手往往會(huì)以為游戲卡了。我在界面加了一個(gè)“可走棋提示”功能骰子點(diǎn)數(shù)確定后規(guī)則層會(huì)計(jì)算出所有合法的走法并把對(duì)應(yīng)棋子的輪廓描成高亮顏色。這個(gè)功能的實(shí)現(xiàn)難點(diǎn)在于規(guī)則層要導(dǎo)出一個(gè)“指示”接口——不實(shí)際移動(dòng)棋子只返回所有合法目標(biāo)位置列表。有了這個(gè)接口AI模塊后續(xù)也能復(fù)用它需要知道當(dāng)前有哪些走法可選。def get_legal_moves(self, dice_value, player): moves [] for piece in self.board.pieces[player]: for target in self.get_move_targets(piece.position, dice_value): if self.is_move_valid(player, piece.position, target): moves.append((piece.position, target)) return moves交互細(xì)節(jié)上還有一個(gè)經(jīng)驗(yàn)棋子移動(dòng)后如果目標(biāo)格位上已經(jīng)有對(duì)方的棋子規(guī)則允許吃掉對(duì)方棋子并將它移回對(duì)方陣營(yíng)的起始位置。這個(gè)“吃子遣返”的動(dòng)畫我特意做成了兩步——先移動(dòng)進(jìn)攻棋子再將被吃棋子飛回起始點(diǎn)中間間隔250毫秒比同時(shí)移動(dòng)看起來清楚得多。3. 從單機(jī)到聯(lián)機(jī)網(wǎng)絡(luò)版的同步機(jī)制與狀態(tài)一致性方案本地版跑通之后很多朋友問我能不能兩個(gè)人遠(yuǎn)程對(duì)戰(zhàn)于是網(wǎng)絡(luò)版就提上了日程。做網(wǎng)絡(luò)版最難的不是傳輸數(shù)據(jù)而是保證兩臺(tái)電腦上的游戲狀態(tài)始終一致。棋類游戲不像動(dòng)作游戲需要每幀同步它屬于狀態(tài)同步里的回合制場(chǎng)景只需要在每次狀態(tài)變化后把完整快照發(fā)給對(duì)手即可。3.1 主機(jī)-客戶端架構(gòu)與socket通信協(xié)議設(shè)計(jì)我采用的是經(jīng)典的主機(jī)-客戶端模式。主機(jī)負(fù)責(zé)權(quán)威判定客戶端發(fā)來動(dòng)作指令后主機(jī)運(yùn)行規(guī)則層邏輯確認(rèn)這個(gè)動(dòng)作合法然后更新全局狀態(tài)再把新狀態(tài)廣播給所有客戶端。這個(gè)設(shè)計(jì)的好處是避免了兩個(gè)人同時(shí)操作導(dǎo)致的沖突——主機(jī)就是唯一的真相來源。通信協(xié)議我定義了五種消息類型JOIN請(qǐng)求加入、MOVE走棋操作、DICE擲骰子結(jié)果、STATE同步狀態(tài)快照、GAME_OVER游戲結(jié)束。所有消息都用JSON序列化格式統(tǒng)一如下{ type: MOVE, player: black, piece_id: 3, from: 2, to: 7, timestamp: 1691234567 }JSON雖然沒有二進(jìn)制協(xié)議高效但勝在可讀性強(qiáng)調(diào)試時(shí)可以直接打印消息內(nèi)容定位問題。局域網(wǎng)內(nèi)一次序列化和反序列化不過一兩毫秒對(duì)回合制棋類游戲來說完全夠用。3.2 關(guān)鍵問題如何避免狀態(tài)不同步導(dǎo)致的“你走的棋我看不到”狀態(tài)同步最容易出幺蛾子的是時(shí)序問題。比如玩家A在主機(jī)上走了一步棋主機(jī)把新狀態(tài)廣播給玩家B但網(wǎng)絡(luò)有延遲廣播還沒到玩家B本地又顯示了一次骰子動(dòng)畫。如果處理不當(dāng)兩臺(tái)電腦的界面就會(huì)逐漸分叉。我的策略是引入“版本號(hào)”機(jī)制。每份狀態(tài)快照都帶有一個(gè)遞增的版本號(hào)客戶端收到的狀態(tài)版本號(hào)必須比本地當(dāng)前版本號(hào)大才接受否則直接丟棄。走棋操作發(fā)出后客戶端本地不立即更新狀態(tài)而是等主機(jī)廣播回新狀態(tài)再刷新界面。這種做法的代價(jià)是操作反饋有一點(diǎn)延遲但對(duì)局域網(wǎng)游戲來說幾十毫秒的延遲玩家基本感知不到。斷線重連是這個(gè)模塊里最頭疼的部分。我最初沒做這個(gè)功能結(jié)果一臺(tái)電腦網(wǎng)絡(luò)波動(dòng)斷線后只能重開一局。后來設(shè)計(jì)了一個(gè)簡(jiǎn)單的恢復(fù)流程客戶端重連后發(fā)送JOIN消息攜帶自己斷線前的狀態(tài)版本號(hào)主機(jī)收到后從歷史緩沖區(qū)里找到對(duì)應(yīng)版本的快照補(bǔ)發(fā)所有后續(xù)狀態(tài)。歷史緩沖區(qū)只存最近50個(gè)版本超過的舊版本就丟棄避免內(nèi)存無限增長(zhǎng)。關(guān)于主機(jī)和客戶端的判定我還加了一個(gè)防作弊思路所有走棋動(dòng)作的合法性判定都放在主機(jī)端客戶端只是發(fā)指令。這樣想修改代碼來作弊的人只能改自己本地的顯示真正決定游戲進(jìn)程的還是主機(jī)。4. AI版的核心評(píng)估函數(shù)設(shè)計(jì)與搜索算法調(diào)優(yōu)AI模塊是最后才做的也是技術(shù)含量最高的部分。國(guó)際數(shù)棋的AI思路本質(zhì)上和其他棋類AI一樣——搜索所有可能走法用評(píng)估函數(shù)衡量局面優(yōu)劣選出評(píng)分最高的走法。區(qū)別在于評(píng)估函數(shù)怎么定義搜索深度怎么控制。4.1 為什么不直接用深度學(xué)習(xí)而選擇minimax加alpha-beta剪枝我明確沒有考慮深度學(xué)習(xí)方案。原因很實(shí)際第一國(guó)際數(shù)棋沒有現(xiàn)成的棋譜數(shù)據(jù)集想訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò)得先自己造數(shù)據(jù)成本太高第二棋類AI用蒙特卡洛樹搜索或minimax在中小規(guī)模博弈中效果已經(jīng)很好不需要上重型武器第三目標(biāo)用戶是在普通電腦上運(yùn)行深度學(xué)習(xí)推理有GPU依賴不符合場(chǎng)景。最終采用minimax加alpha-beta剪枝搭配自定義評(píng)估函數(shù)。minimax的思路是假設(shè)雙方都足夠聰明我方尋找評(píng)分最高的走法對(duì)方會(huì)選擇讓我方評(píng)分最低的應(yīng)對(duì)由此反向推導(dǎo)當(dāng)前最優(yōu)走法。alpha-beta剪枝在這個(gè)基礎(chǔ)上砍掉大量不可能被選中的分支將搜索效率提升數(shù)倍。4.2 評(píng)估函數(shù)的權(quán)重設(shè)計(jì)從棋子價(jià)值到位置潛力評(píng)估函數(shù)是決定AI強(qiáng)弱的核心。我設(shè)計(jì)了四個(gè)維度的加權(quán)評(píng)分每個(gè)維度權(quán)重通過實(shí)際對(duì)局測(cè)試調(diào)整評(píng)估維度權(quán)重說明棋子數(shù)量?jī)?yōu)勢(shì)10存活棋子越多控盤能力越強(qiáng)位置前進(jìn)度8棋子越接近對(duì)方陣營(yíng)威脅越大可移動(dòng)性5當(dāng)前位置可走的合法走法數(shù)量運(yùn)算潛力3附近格位上存在可做運(yùn)算的棋子組合位置前進(jìn)度這張表我手工調(diào)了很久。數(shù)棋的棋盤是左右對(duì)稱的黑棋從左側(cè)往右進(jìn)攻白棋從右側(cè)往左進(jìn)攻。每個(gè)格位對(duì)進(jìn)攻方和防守方有不同的戰(zhàn)略價(jià)值。舉例來說靠近中場(chǎng)的格位前進(jìn)度評(píng)分高因?yàn)橄喈?dāng)于過了河但也不是越靠前越好太靠前的格位容易被對(duì)方吃子遣返所以我在評(píng)分函數(shù)里對(duì)這一層做了折減處理。接下來還要處理一個(gè)特殊情況——必勝局和必?cái)【值呐袛?。如果一方棋子?shù)為0直接返回極大和極小值不進(jìn)入常規(guī)評(píng)分函數(shù)。這一步必須在搜索入口處理否則評(píng)估函數(shù)在終局狀態(tài)下會(huì)給出誤導(dǎo)性評(píng)分。def evaluate(self, board, player): if board.piece_count(player) 0: return -10000 if board.piece_count(opponent(player)) 0: return 10000 score 0 score 10 * (board.piece_count(player) - board.piece_count(opponent(player))) score 8 * (self.position_score(board, player) - self.position_score(board, opponent(player))) score 5 * (self.mobility_score(board, player) - self.mobility_score(board, opponent(player))) score 3 * (self.operation_score(board, player) - self.operation_score(board, opponent(player))) return score4.3 搜索深度、時(shí)間控制與難度分級(jí)搜索深度對(duì)棋力的影響非常直接。我實(shí)測(cè)過不同深度下的表現(xiàn)深度1就是貪心算法只會(huì)走當(dāng)前局面對(duì)自己最有利的一步很容易被對(duì)手計(jì)算深度3能考慮到兩步之后的變化已經(jīng)能打敗不少普通玩家深度5對(duì)戰(zhàn)局的理解明顯上了一個(gè)臺(tái)階但搜索時(shí)間也變得不可控。國(guó)際數(shù)棋的分支因子比象棋小得多每步合法走法平均在5到10個(gè)之間所以深度5在大多數(shù)情況下可以秒出結(jié)果。但某些局面分支特別多時(shí)深度5的搜索時(shí)間可能飆到3秒以上這在回合制游戲里雖然能接受但體驗(yàn)不好。我加了一個(gè)時(shí)間控件預(yù)設(shè)每步最多思考2秒2秒內(nèi)如果深度5還沒搜完就截?cái)喾祷禺?dāng)前最優(yōu)解。實(shí)際測(cè)試下來這個(gè)策略在99%的情況下都能跑完完整深度5搜索只有極少數(shù)復(fù)雜局面會(huì)觸發(fā)截?cái)?。難度分級(jí)也是通過搜索深度實(shí)現(xiàn)的簡(jiǎn)單難度搜索深度1相當(dāng)于閉眼下棋新手拿來練手剛好中等難度深度3適合有基礎(chǔ)的玩家困難難度深度5加上完整評(píng)估函數(shù)電腦明顯比大多數(shù)玩家強(qiáng)。4.4 實(shí)戰(zhàn)效果AI對(duì)弈中的策略特征分析深度5的AI在實(shí)際對(duì)弈中展現(xiàn)出了幾個(gè)有趣的特征。第一它非常會(huì)用跳躍運(yùn)算來推進(jìn)棋子——有時(shí)候明明可以平移到更靠前的位置但它會(huì)選擇走出一個(gè)復(fù)雜的跳躍路徑利用沿途的數(shù)字做乘除運(yùn)算因?yàn)樵u(píng)估函數(shù)里運(yùn)算潛力維度的加權(quán)讓它覺得這種走法整體收益更高。第二它明顯懂得保護(hù)后方陣營(yíng)的棋子不會(huì)輕易把所有棋子都推上前線因?yàn)榭梢苿?dòng)性維度的評(píng)分讓孤立無援的棋子分?jǐn)?shù)偏低。第三面對(duì)吃子威脅時(shí)它會(huì)優(yōu)先移動(dòng)被威脅的棋子而不是繼續(xù)進(jìn)攻這個(gè)策略在深度3以下很難穩(wěn)定出現(xiàn)。當(dāng)然深度5的AI也有明顯的盲區(qū)。如果連續(xù)多個(gè)回合擲出小點(diǎn)數(shù)骰子1或2它的優(yōu)勢(shì)會(huì)慢慢被消耗另外它的評(píng)估函數(shù)對(duì)終局前的“致命一擊”計(jì)算不夠精確有時(shí)候會(huì)因?yàn)檫^于追求局部?jī)?yōu)勢(shì)而錯(cuò)失直接獲勝的機(jī)會(huì)。這些坑在后續(xù)版本里可以通過優(yōu)化評(píng)估函數(shù)部分解決但考慮到項(xiàng)目定位是教學(xué)和娛樂目前的強(qiáng)度已經(jīng)夠用了。5. 實(shí)測(cè)中的高頻坑位編碼、卡頓、粘包與線程講完三個(gè)版本的核心實(shí)現(xiàn)我必須把開發(fā)過程中遇到的坑集中列出來——這些坑基本是Python做帶界面項(xiàng)目時(shí)的通病很多沒有提前接觸過的人大概率會(huì)再踩一遍。5.1 中文顯示亂碼問題tkinter在Windows上默認(rèn)編碼是gbk如果代碼文件保存為UTF-8字符串里包含中文時(shí)某些系統(tǒng)環(huán)境下會(huì)顯示成方塊或亂碼。我的解決方案是所有源碼文件開頭明確聲明編碼格式并在界面初始化時(shí)設(shè)置字體為微軟雅黑或宋體這兩個(gè)字體在Windows下對(duì)中文支持最好。另外打包成exe時(shí)也要注意在spec文件里處理好編碼資源。# -*- coding: utf-8 -*- root tk.Tk() root.option_add(*Font, (Microsoft YaHei, 12))5.2 動(dòng)畫卡頓問題tkinter的動(dòng)畫性能確實(shí)一般但如果操作得當(dāng)20幀的棋子移動(dòng)動(dòng)畫完全流暢??D的主要原因是有人直接在動(dòng)畫循環(huán)里調(diào)用time.sleep這個(gè)操作會(huì)把整個(gè)tkinter事件循環(huán)堵住表現(xiàn)就是動(dòng)畫一卡一卡拖動(dòng)窗口都沒反應(yīng)。正確的做法是堅(jiān)持用after方法調(diào)度動(dòng)畫幀這是tkinter推薦的異步定時(shí)方式。5.3 socket粘包與分包局域網(wǎng)通信中用TCP時(shí)最常見的就是粘包和分包問題。粘包指多個(gè)消息黏在一起到達(dá)分包指一個(gè)消息被拆成多段到達(dá)。簡(jiǎn)單地在接收端做recv(1024)解析JSON很快就會(huì)出bug。我的解決方案是在每個(gè)JSON消息前加4字節(jié)的消息長(zhǎng)度前綴接收端先讀取長(zhǎng)度字段再按長(zhǎng)度精確接收完整消息。def send_msg(self, sock, msg): data json.dumps(msg).encode(utf-8) sock.sendall(len(data).to_bytes(4, big) data) def recv_msg(self, sock): length int.from_bytes(sock.recv(4), big) chunks [] received 0 while received length: chunk sock.recv(length - received) chunks.append(chunk) received len(chunk) return json.loads(b.join(chunks).decode(utf-8))5.4 AI搜索導(dǎo)致界面假死深度5的AI搜索雖然不是每秒都耗時(shí)但在某些復(fù)雜局面下需要計(jì)算兩三秒這段時(shí)間如果放在主線程里執(zhí)行整個(gè)界面會(huì)凍住玩家會(huì)以為程序崩潰了。解決辦法是引入threading模塊把AI計(jì)算放到后臺(tái)線程執(zhí)行啟動(dòng)線程時(shí)將界面上的按鈕禁用防止玩家重復(fù)點(diǎn)擊計(jì)算結(jié)束后線程回調(diào)主線程更新界面。但要注意tkinter的組件不能在子線程里直接操作必須通過隊(duì)列或者after調(diào)度回到主線程執(zhí)行。我用了queue.Queue存放AI計(jì)算結(jié)果然后主線程每隔100毫秒輪詢隊(duì)列一次有結(jié)果就刷新界面。這套方案實(shí)現(xiàn)簡(jiǎn)單也不會(huì)引入復(fù)雜的線程通信問題。5.5 打包分發(fā)時(shí)的環(huán)境差異打包成zip分發(fā)后有用戶反饋打開界面顯示不出棋盤排查后發(fā)現(xiàn)是屏幕分辨率縮放比例的問題。Windows系統(tǒng)如果設(shè)置了125%或150%的縮放tkinter默認(rèn)不會(huì)自動(dòng)適配導(dǎo)致部分界面元素超出屏幕。解決方案是顯式設(shè)置tkinter的縮放屬性或者用tkinter的tk scaling方法根據(jù)系統(tǒng)DPI動(dòng)態(tài)調(diào)整。這個(gè)坑沒有統(tǒng)一的解決方案因?yàn)椴煌娔X的DPI設(shè)置不一樣比較穩(wěn)妥的做法是在程序啟動(dòng)時(shí)讀取系統(tǒng)縮放比例并調(diào)整默認(rèn)字體和組件尺寸。6. 代碼結(jié)構(gòu)復(fù)盤如何讓一個(gè)Python項(xiàng)目易于擴(kuò)展維護(hù)項(xiàng)目做完整理了一份最終版的代碼結(jié)構(gòu)每次回過頭看都覺得當(dāng)初的重構(gòu)決策是關(guān)鍵轉(zhuǎn)折點(diǎn)。如果沒有一開始就把邏輯和顯示分離后面加網(wǎng)絡(luò)模塊時(shí)大概率會(huì)推翻重來。number-chess/ ├── main.py # 入口文件負(fù)責(zé)選擇單機(jī)/聯(lián)機(jī)/AI模式 ├── game/ │ ├── __init__.py │ ├── board.py # 棋盤狀態(tài)與棋子操作 │ ├── rules.py # 走棋規(guī)則合法性判定 │ └── evaluator.py # 局面評(píng)估函數(shù) ├── gui/ │ ├── __init__.py │ ├── window.py # 主窗口框架 │ ├── canvas_widget.py # 棋盤畫布組件 │ └── dialogs.py # 模式選擇、設(shè)置等對(duì)話框 ├── network/ │ ├── __init__.py │ ├── server.py # 主機(jī)端網(wǎng)絡(luò)線程 │ ├── client.py # 客戶端網(wǎng)絡(luò)處理 │ └── protocol.py # 消息封包與解析 ├── ai/ │ ├── __init__.py │ ├── minimax.py # 搜索算法核心 │ └── search.py # 走法生成與剪枝優(yōu)化 └── assets/ ├── config.json # 游戲配置如搜索深度、棋盤主題色 └── positions.json # 棋盤格位坐標(biāo)表接口設(shè)計(jì)上有一個(gè)原則貫穿始終每個(gè)模塊盡量只通過公開方法暴露必要的功能內(nèi)部細(xì)節(jié)不對(duì)外暴露。例如棋盤類只提供get_piece_at、move_piece、is_game_over等方法底層棋子的存儲(chǔ)結(jié)構(gòu)是列表還是字典調(diào)用方完全不用關(guān)心。配置項(xiàng)集中放在config.json的好處是玩家想改AI難度、棋盤配色、動(dòng)畫速度直接編輯配置文件就行不需要改代碼重新打包。這個(gè)細(xì)節(jié)很多業(yè)余項(xiàng)目都會(huì)忽略但實(shí)際使用中反饋率極高——不少用戶都在問怎么調(diào)速度、怎么換顏色。7. 實(shí)測(cè)數(shù)據(jù)與調(diào)優(yōu)記錄搜索深度、勝率與響應(yīng)時(shí)間最后展示一組我實(shí)測(cè)的調(diào)優(yōu)數(shù)據(jù)供做棋類AI的朋友參考。測(cè)試環(huán)境是i5-8250U處理器8GB內(nèi)存Windows 10系統(tǒng)。搜索深度平均響應(yīng)時(shí)間與深度1對(duì)戰(zhàn)勝率觀感評(píng)價(jià)110ms基線顯得很蠢容易送子250ms約60%有基本防守意識(shí)3450ms約80%能打出基礎(chǔ)配合41600ms約90%大部分局面表現(xiàn)穩(wěn)健52800ms約97%有明顯進(jìn)攻套路從數(shù)據(jù)能看出深度從3提升到4時(shí)勝率有較大躍升而深度4到5的提升幅度開始放緩但響應(yīng)時(shí)間幾乎翻倍。這個(gè)趨勢(shì)符合棋類AI的一般規(guī)律隨著深度增加邊際收益遞減時(shí)間成本遞增。所以我把默認(rèn)難度設(shè)為深度4這個(gè)檔位在體驗(yàn)和棋力之間最平衡。評(píng)估函數(shù)的權(quán)重也做過一組對(duì)比實(shí)驗(yàn)。初始版本四個(gè)維度的權(quán)重是10-5-3-1AI棋風(fēng)偏向猛沖猛打經(jīng)常把棋子全部押上前線。后來調(diào)整為10-8-5-3之后AI開始注重棋子的活性和配合整體棋力上升了約15%。這個(gè)調(diào)整給我最大的啟發(fā)是在棋類AI中一味追求棋子數(shù)量?jī)?yōu)勢(shì)往往不如位置優(yōu)勢(shì)和機(jī)動(dòng)性重要這個(gè)經(jīng)驗(yàn)在其他的策略類游戲AI設(shè)計(jì)里也有參考價(jià)值。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
日韩啪啪视频| 手机在线A片| 日本天天吊| 国产一区二区免费福利片| 97亚洲国产| 台湾大香蕉99热| 人人色人人操在线| AV网站高清无码在线观看| 一起草视频在线| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 成人小说另类在线| 97视频免费在线| 91久久午夜无码鲁丝片久久人妻| 99热9| 久久99午夜精品一区人妻| 超碰精品日韩欧美国产| 啊啊啊久久| 久久久久幕乱码| 久久99草| 在线黄色污污网站| 综合网欧| 色诱中文字幕| 精爱久久| 熟妇人妻一区二区三区| av天堂影视中文在字幕在线中文| 日韩免费看黄片| 亚欧成人综合影院| 欧美日日操| 丁香六月激情| 蜜臀AV网站| 久操网无码在线| 美女视频尤物网在线看| 精品丝袜无码一区二区三APP| 婷婷丁香人妻| 亚洲图片小说欧洲| 性猛交| 狠狠色五月亚洲91| 欧美成人精品一区| 蜜臀视频网站| 91东京热男人的天堂| 丁香五月影院| 97操碰| 欧美 亚洲 偷拍自拍| 热99这里只有精品| 日本少妇va7777| 九九热五区| 欧美精品第四五页中文字幕在线观看| 有码色中文字幕在线观看| 午夜呻吟欧美| 亚洲日韩熟女人妻高清在线| 91精品久久久久久久久久| 日本九九久久99| 搞中出视频在线观看| 国产精品suv一区| 偷拍超碰| 国产嫩草精品A88AV| 97在线视频观看免费| www.成人无码| 久久透逼视频| 91国产精品在线看| 很狠操| 久久精品电影在线| 久久激情视频| 东京热双插| 久久精品国产99精品亚洲蜜...| 大香蕉综合网| 开心五月婷婷激情| 亚洲drav色图| 99亚洲天堂| 试看日韩黄片| 激情专区综合| 色欲人妻一区二区在线| 91人妻最真实刺激绿帽| 九九热精品视频六| 无码丰满熟妇一区二区浪潮AV| 人妻中文字幕日韩电影| 另类图片五月| 热热色国产一二区AV| 九九热精品视频六| 美国人人操人人操| 91天美传媒在线| 岛国免费黄色网址| 欧美色图综合| 久久久久9| 日本最新免费韩国1区2区视频播放| 蜜桃狠狠色伊人亚洲综合 | 暖暖精品二区三区观看| 九九九九免费视频| 欧美亚洲日本激情在线| 久久神马影院| 大学生美女口爆| 色狠狠综合| 久久亚洲熟妇在线视频| 亚洲精品久久久久毛片A片拉屎 | 精品日日人妻| 亚洲福利中文字幕在线| 亚洲天天做日日做天天谢日日| 操91| 久久精品国产Aⅴ| 久久久91| 东亚亚洲无码高清| 中文字幕人乱码中文字的预防方法 | 农村女一级毛卡片| 久热九九| 欧美性91| 美女啊啊啊啊啊啊啊| 超碰精品97| 日韩无码黄色片| 久久久精| 超碰在97| 久久久96| 东京热毛片177b2viP| 欧美成人黄网色网站| 97天天摸天天爽| 国产精品免费视频人成| 美骚妇av高清在线| 国产一区二区三区免费视频在性观看 | 欧美伦乱爱| 91国模| 伊人一区二区在线播放| 东京热,男人的天堂| 亚洲成人美女无吗| 亚洲AV在线资源| 在线观看AV片| 久久久久久久9最新免费视频观看| 亚洲āv网址在线观看| 在现视频女上位好爽| 久久久啊啊啊| 国产日本熟女顶级一区二区三区视频| 欧美天天综合网| 91原创在线观看| 日韩一级欧美一级国产一级台湾| 欧美日韩222| 久操操AV电影| 综合视频91| 亚洲精品天堂久久A∨51成人漫 | 日亚韩精品视频二区三| av九九| 女优大全 - 91n| 嗯嗯嗯啊啊啊在线免费观看| 天堂69亚洲精品中文字| 亚州熟妇精品| 中文字幕在线播放2中文字幕在线观看2| 国产精品久久久久无码Av网曝门| 久久久久久精品免费看A级| 日日日日做夜夜夜夜做无码97| 破苞ⅩXXX性无码动漫无码| 91九色精品熟女内射| 九九九九久久久| 91精品国产91综合久久蜜臀| 国产女人9999| 日韩99999色| 欧美精品日韩久久久九| 欧姜老司机| 色婷婷国产精品一区在线观看| 欧美内射少妇| 无码日韩网站| 淫荡熟女乱伦网| 日本一二三免费久久| 色999人与兽| 岛国毛片手机在线观看| 91岛国动作片| 99国内熟女露脸视频| 丁香五月激情综合| 一区二区三区机械有限公司| 国内毛片欧美香蕉精品| 色妇综合网| 色香在线| 亚洲情色婷婷五月天| 午夜男人av| 少妇一级婬片免费放一级a性色.| 欧美成人四级在线播放| 亚洲男人综合| 超碰久超碰久| 任我爽在线视频免费观看| 欧美图片偷拍| 日韩中文字幕在线视频观看| 免费中文综合精品| 男人综合网| 夜夜嗨老熟女AV一区二区三区| 另类综合另类| 91色爽欧美| 五月丁香啪| 嗯啊视频免费在线观看| 成人五月天丁香激情综合| 偷拍片久久| 日韩欧美亚洲自拍偷拍| 亚91网| 国产精品久久久久久久久久久久久久久久 | 国产人妻精品一区二区三区秋霞| 日韩中字av一区| 99色在线视频| 亚洲日韩成人性爱视频| 亚洲成熟国产精品美女| 午夜亚洲国产理论秋霞| 国产丝袜欧美在线视频| 亚洲性爱乱操x| 人妻天天爽天天爽三区| 国产精品4p在线观看| 91老熟妇| 人人人干干人人干| 亚洲精品免费中文字幕| 亚洲无992tv| 国产精品熟女一区二区三区| 亚洲资源站| 97中文字幕九区| 超碰97久| 久久久久99999| 欧亚三区动漫| 老熟女网站| 国产精品肉丝自拍| 久偷拍| 超碰av人人人| 深爱伊人影院| 国产精品熟女乱伦| 久区视频| 欧美天天综合网版| av一区二区三区 中文| av情色影音| 亚洲精品丝袜| 天综合网欧美| 亚洲视频精选| 啪啪啪东京| 午夜福利av电影在线| 三级特黄60分钟播放| 国产精品久久久久无码A√| 国产日韩欧美亚洲精品95| 日韩精品碰碰| 亚洲综合色网| 香蕉久久精品| 超碰97极品9| 一本久道久久综合狠狠爱一密臀精 | 欧美专区17页| 熟女乱3伦999| 国模精品娜娜一二三区| 欧美亚洲国内自拍| 日韩不卡网操逼中文字幕日韩| 久久精品成人一区二区三区蜜臀 | 国产999精品久久久久久| 婷婷五月天补不补| 亚洲色图欧美色图制服诱惑| 欧美天天影院| 可以免费看黄片的视频| 日本一区二区不卡精品| 舔人妻中文免费视频| 男女无套 免费网站| 中文字幕日韩人妻视频| 99久在线精品99re8热| 青青草日本无码| 麻豆伊人网| 综合少妇网| 久久久无码国精品无码三区三区| PMv在线观看| 免费的很黄很污的全部视频| 丁香五月综合| 欧美一二级| 成人线上超碰| 色综合久久久久| 欧美大香蕉97| 91天美| 可以在线观看AV的网站| 国产婷婷一区| 熟女熟妇一区二区三四区| 国产无马在线| 人妻少妇蜜桃视频欧美一区| AV中文在线| 国产乱伦搜索结果91P| 久久亚洲影院一区二区| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 蜜乳性色无码专日粉嫩骚逼AV| 亚洲97久久精品亚洲| 亚洲。日韩。欧美| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 人人操人人摸avav| 欧美第38页| 啊啊啊啊嗯嗯在线久久久| 久久111| 九色视频91| 国产黄色av大片网站| 俺去久久| 天天操夜夜操| AV天天综合| 久九九九九九九九热| 欧美经典一区二区三区 | 亚州欧美在线| 五月婷婷爱六月丁香色| 久久这里只精品| 一区二区三区 日韩欧美| 日韩av三四区| 色综合V| 男人的天堂.com| 亚洲色图欧洲| 人人喜人人妻| jizz啪啪| 尤物视频偷拍免费| 国产激情久久| 成人怡红院| 九九成人| 美国日韩黄片| 97视频620| 色狠狠 - 百度| 青青草乱入乱欲视频在线观看| 人妻偷拍一区二区三区| 欧美在线55555| 变态乱伦伪娘灌肠一区二区| 中文字幕女同在线| 五月天黄色激情视频| 精品女同一区| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 狠狠操狠狠爱| 亚洲毛片基地专区| 熟女AV一区| 嫩草一区二区在线观看| 四虎884| 能看的av| 成人免费看吃奶视频网站| 欧美少妇性乱| 激情久久av一区av二区av| 天堂性色| 国产乱弄免费在线视频。| 国产精品久久久久亚洲av| 中出人妻中文字幕91在线| 亚洲熟女中文字幕在线| 成人小电影网站tex| 97AV爱| 老司机天天操| 国语精品av| 亚洲男人天堂网久久| 国产精品久久久久亚洲av| 不卡六六在线91| 久久久人体| 色婷婷六月丁香七月婷婷| 操逼短片| 嗯嗯嗯不要不要免费视频| 久久无码成人| 香港澳门日本三级网站| 成人情色综合网| 97久久精品亚洲| 日本成人电影资源网| 中欧人妻丝袜中文字幕| 国产丸一视频| 国产乱码精品久久久久久| 五月天综合网| 国内三级自拍小视频在线观看 | 久久欧洲| 久久久人妻| 看一级特黄a大一片| 91亚洲黑人| 美女极品一区二区三区| 国产深夜福利| 男人的天堂久久| 久久av网| 中文字幕啊啊啊在线观看视频| 99色视频| 91春色| 色官网在线| 高清有码一区二区| 亚洲色图A| 亚欧美综合| 区二区亚洲婷| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 一本久久精品中文字| 伊人AAA| 亚洲制服欧美另类内射| 成人乱人伦一区二区| 草草草视频| 国产午夜福利合集| 啊啊啊啊啊在线视频| 941超碰| 久久亚码| 天天舔天天日天天射| 大稥蕉免费视频这里只有精品| 性色av大全| 午夜性生活av免费在线看| 大香蕉中文201| 亚洲一二三四区在线免费看视频| 欧美天天综合站| 中文字幕片| 18精品一区| 69人妻精品一区二区绯色| 久久久久九九九| 天天色天天干天天爱| 久久久久亚洲Av无码专区老牛影视 | 丝袜狠狠草尤物人妻av91| 夜夜肏2021| 青青草原狼av| 91在线免费观看处女| 人妻夜夜爽天天爽麻豆三区网站 | 好舒服视频| 日日夜夜噜| 四季AV一区二区凹凸精品小说| 9 7超碰在线免费观看| 大学生口爆吞精| 色网站导航大全| 亚洲第一色页夜| 国产一区二区av综合| 97精品视频在线| 99精品欧美一区二区三区桃色| av网站免费看| av网站在线观看了| 成人午夜小视频手机在线看| 日韩人妻大香蕉| 少妇被玩视频二三区| 久操 高清| 加勒比伊人综合| 国产美女91| 亚洲男人天堂AV| 久久超碰国产一区二区三区| 在线观看亚洲专区| 韩日精品四区| 很很很很操| 黑丝制服中文字幕| 一区二区三区免费视频入口 | 黄色十八禁网站| 免费观看的av| 91新在线欧美| 在线视频资源| 日韩av电影成人在线| 免费作爱一级视频| 人妻少妇蜜桃视频欧美一区| 熟女一区二区三区| 精品人妻av区天天看片| 一级黄色性爱A级片| 国产精品一二三免费网站| 亚洲色图欧美色图制服丝袜| 亚洲 另类 丝袜 自拍 动漫| 亚洲色图 图片| h色99999| 熟妇乱伦一区二区| 免费一级毛片在线视频观看| 日日天天久久啊啊aaa| 亚洲偷91色| 毛片一区二区| 可以免费观看的av| 死我十八禁| 中文字幕在线免费观看2| 殴美大黄片| 日日AV加勒比| 小说区 图片区色 综合区| 操逼视频免费日韩无码| 91在线限制级| 91成人无码| 青娱乐久久艹| 国产人妻精品一区二区三区秋霞| 久久午夜鲁丝片| 91久久精品蜜臀| 欧美洲精品一级| 国产精品成人久久一区二区三区 | 天天综合网视频91| 天天综合网日韩7799| 蜜桃久久久久久| 嗯嗯不要视频| 色99视频| 91成人无码| 欧美性爱另类综合| 亚洲 中文 欧美 日韩 在线| 老熟妇一区二区三区…| 青草香蕉网| 亚洲精品国语在线播放| 久久久久骚| 美女诱惑久久| 国产女人高潮视频| 日日操夜夜操天天操免费观看麻豆| 日本视频一区二区三区| 东北女人| 亚洲av综合色区无码一| 午夜综合在线| 亚欧Av| 日本一区二区中文字幕久久| 黄呦呦在线| 人妻熟女一区二区三区视频| 国产精品色片一区二区| 97久操| 小草三级久久观看| 亚洲美女av无码| 久久麻豆一区二区| 国产精品香蕉| 97色欧州| 一类av片在线看| 91欧美综合在线| 日本成人电影资源网| 欧美 综合 亚洲| 看一级特黄a大一片| 粉嫩av一区二区三区四季| 粉嫩不卡一区二区性爱| 超碰诱惑| 中文字幕在在线观看网站| 被窝影院午夜看片无码| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 日本三级韩三级99久久| WWW.操逼.COM| 欧美72网页| 国模不卡| 天天操天天舔| 久久中文色图| 曰韩av中文字幕专区| 天天舔日美女视频| av橘色网站| 亚州色图第三区| 天天看夜夜看日日干| 亚洲色图超碰在线| 一区二区三区在线资源| 天海翼久久| 九九激情网| 国产精品懂色tv影视免费观看 | 快播久久人人aV| 中文字幕人乱码中文字的预防方法 | 久久成人午夜精品影院| 北京专精特新企业招聘信息| 97一本大道亚洲一区| 日本在线视频导航| 精品久久久av无码免费| 色色福利| 丁香五月婷婷色| 1区2区3区中文字幕日韩| 亚洲国产欧美另类自拍| 99re视频在线播放青草| 伊人丝袜美腿高跟在线观看高清 | 尻女朋友一夜| 国产免费久久久久| 欧洲综合无码| 天天噜| 国产精品在线一区二区| 久久啊哟| 成人片在线播放| 为用户提供免费看黄网址在线观看| 蜜臀网址在线| 中文一区在线日| 久久9 9 9精品| 蜜乳av首页| 乱伦1色页| 国产精品爆乳懂色蜜乳| 欧美性高潮在线| 色综合超碰超| 大香网伊人久久综合网eew| 亚洲熟妇自偷自拍另欧美| 日本Xx性爱| A 在线网址| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 在线视频免费播放一区| 74成人在线| 激情色图| 日韩少妇无码| 一起草视频在线| 国产农村妇女毛片精品久久| 欧美综合网站999| 试看60秒| 亚洲诱惑天堂 | 男人的天堂va| 97免费视频在线| 老熟妇一区二区三区| 后入式视频国产自| 色综合20p| 欧亚日韩三区| 99在线视频播放| 中 文字幕一区二区三四 五 区日 日 骚| 98一区二区精品| 久久午夜伦| 丰满人妻-区二区三区免费| 色婷婷综合视频| 国产亚洲在线| 麻豆精品久久久久久久| 亚洲欧美激情另类色图| 欧美三级不卡| 日韩精品高清资源在线 | 国产AAAAAABBBBB| 91成人高清在线观看| 成人无码在线超碰网| 国产传媒午夜理伦精品| 99re免费| 欧美激情久操网| 国产无码三级视频在线观看| 热无码中文亚洲H一道本一区二区| 立川理惠被中出无码| 亚洲97| 精品欧美不卡在线播放| 飘花国产午夜精品不卡| 日本人人操人人操| 亚洲色吧网| 91N五十路| 北条麻妃性愛视频| 9 1超碰九色| 四虎在线观看视频| 99久久精品国产高潮| 国产后入式在线观看| 97在线免费看| 久久人人爽人人爽人人片Ⅴ| 日本网色| 欧洲色综合| 色97干| 人人操人人狠狠操| 亚洲日本激情| 亚洲天天在线| 国产自偷| 国产成人精品网站| 丝袜综合色图| 色97综合中文字幕| 亚洲国产综合图区中文字幕| 国内精品a| 美女自卫慰黄网站免费| 日日夜夜骚| 综合色久欲| 精品三级在线专区| 粉嫩绯色AV一区二区在线| 大香蕉色十月| 激情四射婷婷六月天| 91一区二匹| 操逼操逼视频操逼| 艳美熟妇先锋一二三区| 久久久天美| 五月天婷婷在线看| 色情综合网| 精品一二三区女同| 婷婷伊人五月| 日日夜夜狠狠| 五月天亚洲网| 一级岛国大片| 国产欧美精品日韩区二区麻豆天美| 校园春色宗合网| 中文操逼字幕| 日本中文字幕在线电影| 东京太热久久久| 日韩精品大香蕉伊人在线| 亚洲丝袜少妇在线| 久久久久久网址| 国产51色综合久久免费| 日韩熟女精品无码专区一区二区| 亚洲交性| 综合网色| 日日骚网站| 女人双腿搬开让男人桶| 日本中文字幕一区| 国产日逼视频| 久久久久久波多野吉衣高潮| 亚洲第一页第二页激情| 久久这里都是精品| 人妻铁牛TV| 亚洲 日韩 欧美 国产综合体| 欧美在线第五页| 国产一区二区三区导航| 屁股久久久久久久久| 男女性感激情网站| 亚洲黄a三级三级三级看三级| 亚洲精品一区二区精华| 青青草视频久久久久| av毛片aaaaa免费看| 久久久啊啊| 2021国产成人精品久久| 动漫片子网站3黄| 国产日韩精品suv| 欧美一级欧美三级在线观看| 国内亚洲高清无码| 国产盗摄美女如厕大神作品在线观看| 亚洲精品一区二区精华| 亚洲综合图文| 性影在线视频| 亚洲色综网| 欧美亚洲色图另类国产| 欧洲Au麻豆| 天天干人人看综合| 久久午夜伦| 啊啊啊轻点在线观看| 操迟操逼在巾线Fre看| 精品国产久久乱码| 性做久久久久久免费观看软件| 九七人妻在线| 超碰av在线| 韩国三级色呦呦| 亚洲五区熟女| 欧美人妻精品一区二区| 国产乱码久久久| 在线观看十八禁| www亚洲免费| 天天综合站| 最新欧美色网| 国产一级特黄大片处女| 超碰97综合网| 一牛影视久久久一区二区三区| 中文字幕日韩专区精品系列| 碰超人人在线一区二区三区| 91超碰人人操| 国产家庭乱伦表演| 精品久操| 亚洲狼狼干综合1| 黄片无码在线制服| 97视频免费在线观看| 欧美78| 天天做天天爱| 18禁免费视频| 一区二区三区四区理论片| 老熟妇综合| 色综合久| 青青操综合网| av激情亚洲五月天| 亚洲欧美天| 熟女天天干| 99性爱| 激情小说成人日本无码一| suv精产一二三区| 欧美综合网1| 97色冈| 97综合在线| 国产性爱在线视频一区二区| 91国模| 日韩中文字幕精品一二三事国产精品 | 日本精品不卡一二三区| 欧美传媒| 美女诱惑久久| 综合熟妇一区二区三区| 国产十八禁视频| 人妻天天操天天爽视频免费| 日韩久久激情精品| 可能人人看人人摸| 天天看精品动漫视频一区| 96超碰网| 日韩欧美麻豆| 啊啊啊好疼| 亚洲有码 欧美精品| 大香蕉欧美| 欧美熟女妇同| 亚洲熟女中文字幕在线| 少妇综合网| 久久久久久久9999| 黄页网站成人免费| 欧美激色| 91强在线播放| 九一综合网| 1区2区3区中文字幕日韩| 六月丁香网| 中文字幕成人| 亚洲中文字幕精品久久久久久直播| 免费一级特黄特色大片在线观看看| 啊啊啊好想要| 97这里只有精品| 啊啊啊啊啊啊好多水| 偷偷人人精品女女久久| 国产91丝袜 在线播放| 中文字幕av一区二区三区人妻少妇 | 日韩不卡毛片Av免费高清| 97人妻免费中文字幕| 秋霞久久亚洲精品成人| 国产精品欧美日韩久久| 午夜爽爽爽在线观看永久入口姬片| 亚洲国产ⅴ高清在线观看| 亚洲三区视频| 搡老人老9丨女老熟人| 老熟女乱子伦中文字幕一区二区| 成人av福利在线观看| 国产高清吃奶免费视频网站| 亚洲av无码国产精品字幕| 日本操逼aaaaa| 亚洲另类小说卡通动漫| 日日噜噜夜夜狠狠视频无| 看日韩黄片| 超碰欧美97| 91亚洲欧美激情| 日韩少妇无码| 人人妻人人爽一区二区三区| 超碰色美女| 天堂成人网| 久久久性| 91社操逼| 9l视频自拍9l九色成人| 蜜桃成人1区2区3区| 日韩紧密久久| 日本九九久久99| 日日骚av| 亚洲一区日韩精品中文字幕 | 77国产精品| 97精品视频在线播放| 深夜视频| 一区二区三区高清天码| 国产尹人在线视频免费| 91爱综合| 丝袜狂射91| 女生久久网| 色色色色网站| 婷婷尹人大香蕉免费| 97av在线视频| 精品少妇后入一区二区三区四区人妻巨乳| 色婷婷综合久久中文字幕雪峰| 少妇第一页| 外国91| 国产av强奸美女| 婷色五月天| 久久久久久久久久久久久久久久9 亚洲成人妻日韩在线 | 超碰中文字幕人妻草一区| 男人天堂网站| 欧美日本国产日韩激情视频| 亚洲图片欧美91N| 日本高清加勒比| 精品国产乱码久久| 熟女精品va中文字幕| 白嫩嫩一区| 收看日本人日bb| 99re公开精品免费视频| 亚洲人妻一区二区三区| 青青伊人久久| 热99re69精品8在线播放| 日本操逼视频导航| 台欧久久精品视频| 亚洲中文字幕av | 91免费看一区二区三区| 欧美成人午夜免费福利785| 人人摸人人干| 91人妻人人澡人人爽人人精品| 日本东京热加勒比久久| 91女人的网站| 久久免费9| 精品超碰国产| 日本精品一区二区三| 午夜视频久久久久一区| 久久婷婷色综合一区二区三区| 大香蕉在线SuP| 久久无码成人| 亚洲免费97免费| 日本成a人v网站在线观看| 婷婷激情啪啪| 欧美 亚洲精品首页| 黑人精品成人一区二区三区| 九九热精彩视频| 一个色导综合| 久久精品视频28| 日韩一级久久毛片| 精品国产自在在线99| 亚洲天堂2020| 亚洲91少妇| 丰满人妻一区二区三区| 精品视频久久久久九九九九9999| 综合欧美色图| 97人人操人人干| 蜜臀久久99精品久久久久久成人小说| 少妇干B| 大香蕉伊人在线成人AV在线观看| 午夜精品久久久久久久男人的天堂| 久久亚州大香蕉| 日本高清有码网址视频| 久久9999| www超碰| 亚洲色电影在线| 婷婷综合五月天| 另类图片综合| 夜夜天天噜狠狠爱2021| www.高清无码诱惑一区.com| 婷婷久久五月综合激情| 丝袜制服字幕在线| 白丝被操91| 欧美精品 - 91爱爱| 自拍偷拍国产欧美日韩韩| 爱爱动态试试看6 0秒| 激情五月天中文字幕色| 男人的天堂激情| 影音先锋日本乱伦| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 欧美黑人精品一区二区| 亚洲欧洲美腿丝袜| 亚洲91射| 丰满人妻av一区二区三区| 国产人妻精品一区二区三区秋霞| 国产激情av女片自拍| 日韩久草| 无码在线亚洲| 久久熟女嫩草成人片免费| 99热精品在线播放| 国产一级内射高清视频| 日夜干射色啊| 亚洲精品国产精品乱码不99| 91亚洲欧美激情| 中文字幕乱碼在线| 97人人操人人摸人人爱| 午夜九九九九九九| 青青草五月天| 国产超碰| 一道α片欧美| 97超碰影音| 色女网日韩| 欧美十八禁网站| 青草综合| 色老久久| 殴美,日韩国产伦精品| 日日夜夜精品| 欧美色图电影| 97网址97| 精品免费1| 欧美日韩香蕉| 国产精品爆乳懂色蜜乳| 久草线上视频免费看| 久久久艹艹艹| 日本一级性爱| 国产 亚洲 一二三四| 国产中文字幕在线| 另类av天堂| 亚洲.欧美.丝袜.中文.综合| 国产精品无码久久久久2028| 欧美色欧美| 中文字幕av一区二区三区人妻少妇| 26uuu国产| 欧美极品性爱天天射| 久久精品久| 国产三级中文字幕粉嫩| 日本 成 人 小说 电影 一区二区| 97色97干| 噜噜噜亚洲精| 日韩精品电影| 超碰97在线 欧美 国产| 天天插天天操| 久操网视频| 久久狠狠色噜噜狠狠狠狠97| 俞拍自拍| 中美日韩毛片| 91色综| 操碰91| 九九综合久久| 嗯啊抽插大香蕉网页| 色哟哟AⅤ| 黑人娇小av在线播放| 怡红院久久老司机| 亚熟hd视频在线| 嗯嗯啊啊操死我| 久久国产精品91| h在线看免费版在线看| 久久久久国产一区二| 午夜120视频在线观看| 中国操逼无码| 大二网站亚洲| 国产资源中文字幕在线| 日日操夜夜操天天操免费观看麻豆| 青草伊人久久| 久久久三区二区一区| 91亚洲丝袜| 欧美在线综合| 亚洲国产中文字幕| 91在线国产后入风骚翘臀美女素人| 欧亚成人在线视频| 91精品国久久久久久无码| 亚洲精品 超碰| 日韩在线人妻网站| 青青草在线视频欧美| 超碰精品| 亚洲 另类 丝袜 自拍 动漫| 青娱乐手机日韩在线视频| 香港日本韩国人妇99www.wccm20| 婷婷色网| 天天日天天屌天天操| 蜜桃丰满熟妇av无码区不卡| 4虎在线视频| 啊啊啊啊,啊啊好多水| 欧美综合色| 国产馆| 91精品国产91久久青草| 人妻精品免费一二三区| 国产亚洲欧美每日在线| 国产精品爽爽v| 日韩丝袜二区| 成人在线日韩| 女人妻一区| 亚洲综合九| 精品国产乱码久久久久久日本公司| 日本一卡二区在线| 九九亚洲| 7777奇米影视久久| 97国产高清视频在线观看| 综合一区中亚洲国产成人综合精品 | 国产农村妇女一区二区| 欧美综合色站| 亚洲国产青青| 天天欧美| 东京热视频网| 国产情侣自拍在线播放| 91oumei| 亚洲天天影视综合网| 97欧美色| 测评在线观看AV| 18禁网站在线播放| 丁香五月成人| 日韩精品第3页| 国产9熟妇视频网站| A 天堂| 5278欧美一区二区三区| 麻豆精品久久久久久久| 美日韩一二三区| sewuyueav| 免费岛国一级片| 日韩av影片在线观看| 亚洲欧洲小说图片视频| 91女优在线观看| 99999精品| 日韩性爱电影一区| 一区二区三区四区五区高清无码永久视频| 日韩天天本| 精品日韩| 最新国产精品久久精品| 亚洲 se图 欧美电影| 变态另类专区| www.久久最新地址| 午夜精品99久久久久传媒| 中国黄色特级精品一区二区三区片| 99re98| 国内毛片国产专区二| 一区中文字幕二区日韩| 日本熟妇人妻一区二区三区| 在线A日本| 丝袜内射| 日夜伊人网| 天天干人妇| 亚洲人91| 精品无码一区二区三区| 亚洲婷婷五月天| 亚洲天堂久| 国产专区第一页| 亚洲精品天天影视综合网| 精品国产乱码久久久| 无码高清专| 在线观看视频91| 日韩无码操逼片| 婷婷久久久| 亚洲九九爱| 波多野结衣AV无码一区| 日韩三级视频一区二区三区| 俞拍自拍| 亚洲一区二区三区播放在线| 天天天天天干夜夜夜夜夜操| 久久久精品无码亚免费| 日韩国产十八禁| 久久久久久九九九| 人人扣人人操| 夜夜国自区| 日韩乱伦视频| 99re在线精品78| 久久av一级av少妇av高潮| 97久久精品国产| 国产精品免费1区2区视频| 91久精品| 东北少妇高潮zzzz| 欧美大码在线视频| 999久久久| 91在线美女| 成人免费性爱视视| 亭亭丁香激情| 三级日本一区二区三区| 欧美日韩资源在线| 97超碰磁| 色超碰综合| 男人高清无码一区二区| 亚洲drav色图| 色综合久| 成人青青草原伊人| 天天影视网综合少妇| 97在线免费观看视频| 久久婷婷国产一区二区色| 国产精品白丝| n1038 一二三区| 操日韩第| 玖玖超碰熟| 国产成人+综合亚洲+天堂| 成年男人的天堂| 天操老女人| 草草影院日本第一页| 亚洲宗合网| 日本午夜久久电影| 精品久9| 超碰激情808| 成 人片 黄色大片| 久久久九精品| 婷婷五月天色| 亚洲人成在线放东京热| 超碰精品| 午夜黄色免费在线观看| 女人高潮大叫一级毛片| 啊啊啊好湿久久| 老司机深夜18禁污污网站| 我爱搞逼综合网| 操一区| 日本中文熟女视频| 九区国产| 九九久久精品| 欧美性爱第一页久久| 99久久9| 天天流夜夜操| 久久亚洲欧美中文字幕国语| 干b网| 日韩内射视频| 一级久久久久久久久久久 | 国产AV久久野战精品| 亚洲中文丝袜美腿诱惑字幕| 综合 青草 伊久久 影院 综合| 少妇xx精品| 亚洲日韩天堂| 久久久精品一区二区| 日韩欧美亚洲国产日韩| 少妇高潮特黄A片| 亚洲天堂男人天堂网| yy少妇精品久久| 超碰亚洲97| 欧美顶级黄色大片免费| 欧美日韩中文视频播放| 热的中文 热的有码 热的国产| 蜜臀网址在线| 99在线视频播放| 97WW精品| 在线看免费无码AV天堂的| 色在线综合| 97天天操| 91在线国产后入风骚翘臀美女素人| 91在线视频免费中出| 亚洲日本韩国在线| 天天干干天天干干| 一区二区高清视频| 青草伊人久久| 久久少妇人妻| 亚洲综合在线高清| 99精品在线观看| 91精品人妻电影| 成人免费看吃奶视频网站| 久久9久| 欧美日韩狠狠爱| 欧美偷偷网| 99国产精品久久久在线播放| 久久欧美按摩999| 黄网在线播放| 久久久麻豆精品| 国产毛片在线| 92性色国产午夜福利在线661| 亚洲 欧美 色图| 日日干日日摸| 中日992视频| 久久6热精品99视频| 色制服丝袜夫妻av一区| 欧美一区二区三区大综合| 色999人与兽| 蜜桃色色网站视频三区| AV大香蕉| 丁香五月综合| 激情深爱五月天| 五月激情综合网| 亚洲成人在线播放| 99自拍视频在线观看| 亚欧性爱在线无码| 99操逼| 色色综合网站| 激情综合亚洲| 激情久久日韩精品中文字幕麻豆| 黑人猛交| 91色色网站| 嗯嗯啊啊好爽| 91殴美| 97干97色| 日本淫乱女一区二区三区视频| 香蕉人欧美综合| 亚洲婷婷丁香在线| 2021国产成人精品久久| 26uuu最新| 欧美性爱18观看| 2020中文在线一区二区三区| 日韩国产不卡在线视频| 国产操操日韩三级黄| 一区二区三区 日韩欧美| 91 亚洲 欧美 日韩 国产 综合| 国产精品久久成人免费| 免费A V在线|