99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

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

C#實(shí)戰(zhàn):從0到1實(shí)現(xiàn)單機(jī)版搶車(chē)位游戲

C#實(shí)戰(zhàn):從0到1實(shí)現(xiàn)單機(jī)版搶車(chē)位游戲 簡(jiǎn)介基于C#語(yǔ)言開(kāi)發(fā)的單機(jī)版搶車(chē)位游戲完整源碼面向C#初學(xué)者、面向?qū)ο缶幊虒W(xué)習(xí)者及游戲開(kāi)發(fā)入門(mén)者。以搶車(chē)位玩法為載體完整演示了從玩家、車(chē)輛、車(chē)位等類(lèi)設(shè)計(jì)到用戶(hù)登錄、窗體交互、游戲循環(huán)的開(kāi)發(fā)鏈路適合課程設(shè)計(jì)、個(gè)人練手或畢業(yè)設(shè)計(jì)參考。壓縮包共83個(gè)文件大小6.37MB主要包含15個(gè)cs源碼文件核心邏輯與窗體、37個(gè)png和9個(gè)jpg界面素材、3個(gè)resx與3個(gè)resources資源文件另有exe可執(zhí)行程序、功能說(shuō)明doc文檔和初始化玩家對(duì)象的txt代碼目錄清晰便于運(yùn)行和修改。已有244人學(xué)習(xí)瀏覽。源碼開(kāi)放可直接查看和修改包含Player、Car、ParkingSpace、LoginFrm、ManiFrm等核心類(lèi)模擬隨機(jī)事件、時(shí)間限制與策略決策并涉及線程同步、計(jì)時(shí)器等機(jī)制配套文檔詳細(xì)說(shuō)明了界面布局、按鈕功能和操作流程初始化示例展示了創(chuàng)建玩家對(duì)象、分配初始資源的完整步驟對(duì)理解封裝、繼承、多態(tài)以及多窗體程序組織方式都有直接幫助也能根據(jù)需求擴(kuò)展車(chē)位類(lèi)型或調(diào)整游戲規(guī)則非常適合作為C#實(shí)戰(zhàn)練習(xí)項(xiàng)目。1. 單機(jī)版搶車(chē)位把社交玩法壓進(jìn) C# 的一個(gè)完整閉環(huán)搶車(chē)位這個(gè)玩法經(jīng)歷過(guò)社交平臺(tái)時(shí)代的人都不陌生把車(chē)停到別人車(chē)位賺錢(qián)趁對(duì)方離線時(shí)貼條、拖車(chē)最刺激的就是收益上限卡點(diǎn)前被人清空車(chē)位。放在當(dāng)年這套規(guī)則幾乎全在服務(wù)端本地只負(fù)責(zé)發(fā)請(qǐng)求想把它改成一個(gè)離線可玩、邏輯完整、拿得出手的 C# 項(xiàng)目得把停車(chē)、貼條、拖車(chē)、AI 對(duì)手整個(gè)重寫(xiě)一遍。這份資源做的就是這件事它不是教學(xué) Demo而是一套能直接編譯運(yùn)行、完整玩完一把對(duì)局的課程設(shè)計(jì)級(jí)源碼。適合正在找 C# 題目交差的學(xué)生也適合想從增刪改查跳出來(lái)、認(rèn)真摸一遍游戲狀態(tài)機(jī)寫(xiě)法的初學(xué)者。2. 先拆玩法再拆代碼搶車(chē)位的核心規(guī)則與類(lèi)設(shè)計(jì)2.1 搶車(chē)位到底在搶什么貼條與拖車(chē)的收益閉環(huán)先說(shuō)玩法因?yàn)轭?lèi)設(shè)計(jì)完全由玩法推導(dǎo)出來(lái)。經(jīng)典搶車(chē)位的循環(huán)是這樣地圖上有若干公共車(chē)位玩家的車(chē)停進(jìn)去后按分鐘產(chǎn)出金幣收益有上限停得越久越接近上限。但車(chē)位是有限的別人的車(chē)占著位置你就可以對(duì)他做兩件事貼條沒(méi)收他當(dāng)前累計(jì)收益的一半作為罰金拖車(chē)直接清空累計(jì)收益并把車(chē)送回空閑狀態(tài)進(jìn)入一段冷卻時(shí)間。這兩個(gè)動(dòng)作構(gòu)成了整個(gè)游戲的博弈核心車(chē)位越熱門(mén)、停得越久越容易被針對(duì)。單機(jī)版最大的問(wèn)題在于沒(méi)有真人來(lái)“惡心”你。如果沒(méi)有AI這個(gè)游戲本質(zhì)上就是個(gè)倒計(jì)時(shí)領(lǐng)錢(qián)器五分鐘就沒(méi)勁了。所以這套資源里實(shí)現(xiàn)了AI玩家來(lái)承擔(dān)對(duì)抗角色它會(huì)有三種行為基元尋找空位停車(chē)、給玩家或者其他AI的車(chē)貼條、拖別人的車(chē)。各行為觸發(fā)概率由難度參數(shù)控制后面第4章單獨(dú)講。先把規(guī)則定下來(lái)所有的代碼邏輯都以這張表為準(zhǔn)。動(dòng)作目標(biāo)條件效果罰金公式停車(chē)車(chē)位空閑車(chē)輛不在冷卻車(chē)位被占開(kāi)始累計(jì)收益無(wú)貼條車(chē)位被占且未被貼條沒(méi)收當(dāng)前累計(jì)收益標(biāo)記貼條AccIncome × 50% 20拖車(chē)車(chē)位被占且未被貼條清空累計(jì)收益車(chē)輛進(jìn)冷卻AccIncome × 80%挪車(chē)玩家同一輛車(chē)停到新空位舊車(chē)位釋放累計(jì)收益清零無(wú)這張表是整套源碼的基石后續(xù)所有方法都圍繞它展開(kāi)。注意“挪車(chē)”這條容易被忽略經(jīng)典規(guī)則里把車(chē)從 A 車(chē)位挪到 B 車(chē)位A 車(chē)位釋放但累計(jì)收益清零。這么設(shè)計(jì)是為了防刷錢(qián)——如果挪車(chē)不清零玩家可以把車(chē)停在高級(jí)車(chē)位上賺滿(mǎn)上限再挪到另一個(gè)高級(jí)車(chē)位繼續(xù)賺等于無(wú)限套利。拿到源碼后改功能時(shí)這條規(guī)則建議不要?jiǎng)右粍?dòng)經(jīng)濟(jì)系統(tǒng)就崩。2.2 六張核心類(lèi)圖從 Car 到 GameData 的職責(zé)劃分接下來(lái)看資源里的類(lèi)設(shè)計(jì)。它沒(méi)有用復(fù)雜的框架就是幾個(gè)實(shí)體類(lèi)加一個(gè)游戲管理類(lèi)。實(shí)體類(lèi)全部采用“貧血模型”只存數(shù)據(jù)不寫(xiě)邏輯規(guī)則統(tǒng)一放在 GameManager 里。為什么這么分因?yàn)橥\?chē)、貼條、拖車(chē)之間交互頻繁貼條要改車(chē)位狀態(tài)、改車(chē)輛收益、改玩家金幣如果規(guī)則散落在實(shí)體類(lèi)里后期調(diào)整 AI 策略時(shí)會(huì)改到懷疑人生。集中管理后規(guī)則的入口只有一個(gè)調(diào)試時(shí)下斷點(diǎn)也只盯 GameManager 一個(gè)類(lèi)。核心實(shí)體類(lèi)的定義如下命名空間統(tǒng)一放在 ParkingGame.Models 下public class Car { public int Id { get; set; } public string Nickname { get; set; } // 車(chē)牌昵稱(chēng)玩家自定義 public int Level { get; set; } // 等級(jí)影響收益加成 public int AccIncome { get; set; } // 當(dāng)前累計(jì)未結(jié)算收益 public int CurrentSpaceId { get; set; } // 當(dāng)前所在車(chē)位Id-1表示閑置 public bool InCooldown { get; set; } // 拖車(chē)后的冷卻標(biāo)志 public DateTime CooldownEnd { get; set; } // 冷卻結(jié)束時(shí)間 } public class ParkingSpace { public int Id { get; set; } public int Row { get; set; } public int Col { get; set; } public int Level { get; set; } // 車(chē)位等級(jí)影響基礎(chǔ)收益倍率 public int ParkedCarId { get; set; } // 停著的車(chē)Id-1表示空閑 public bool HasTicket { get; set; } // 是否被貼條 public DateTime ParkedAt { get; set; } // 停車(chē)時(shí)間用于收益上限計(jì)算 } public class Player { public string Name { get; set; } public int Money { get; set; } public ListCar Cars { get; set; } } public class GameData { public Player HumanPlayer { get; set; } public ListAIPlayer AIPlayers { get; set; } public ListParkingSpace Spaces { get; set; } public int TickSec { get; set; } // 每個(gè)Tick對(duì)應(yīng)的游戲秒數(shù) public bool IsRunning { get; set; } }這段代碼有幾個(gè)細(xì)節(jié)值得說(shuō)。Car 里的 CurrentSpaceId 用 -1 表示閑置而不是用int?原因有兩個(gè)一是 JSON 序列化時(shí) -1 不需要額外處理存檔讀檔更省事二是判斷“這輛車(chē)現(xiàn)在有沒(méi)有停在車(chē)位上”時(shí)寫(xiě)成car.CurrentSpaceId -1一眼就能看懂不會(huì)出現(xiàn) null 判斷漏掉的情況。ParkingSpace 里的 ParkedAt 用的是 DateTime 而不是 tick 計(jì)數(shù)這是為了存檔后不丟收益進(jìn)度——如果你存的是“停了 300 個(gè) tick”讀檔后 Timer 重啟tick 數(shù)就對(duì)不上了DateTime 則能通過(guò)相對(duì)時(shí)間差恢復(fù)。AIPlayer 在資源里單獨(dú)定義它繼承 Player額外帶一組決策權(quán)重字段public class AIPlayer : Player { public int ParkWeight { get; set; } // 停車(chē)行為權(quán)重 public int TicketWeight { get; set; } // 貼條行為權(quán)重 public int TowWeight { get; set; } // 拖車(chē)行為權(quán)重 public int ThinkTick { get; set; } // 每幾Tick決策一次 }這組權(quán)重會(huì)在第 4 章詳細(xì)展開(kāi)?,F(xiàn)在只要知道每個(gè) AI 不是每 Tick 都行動(dòng)而是每隔 ThinkTick 才做一次決策這樣能模擬“思考延遲”也能避免 AI 行動(dòng)過(guò)于頻繁導(dǎo)致玩家毫無(wú)還手之力。想調(diào)出不同性格的 AI就是改這四個(gè)數(shù)字后續(xù)不用動(dòng)任何邏輯代碼。2.3 游戲主循環(huán)Timer 驅(qū)動(dòng)的秒級(jí)收益結(jié)算機(jī)制整個(gè)游戲的調(diào)度核心是一個(gè) System.Windows.Forms.Timer。為什么不用 System.Timers.Timer因?yàn)?WinForms 的 Timer 事件在 UI 線程上觸發(fā)事件里可以直接改控件屬性不需要 Invoke 跨線程System.Timers.Timer 的回調(diào)在線程池線程上改界面必須 this.Invoke寫(xiě)起來(lái)麻煩還容易死鎖。單機(jī)游戲的主循環(huán)沒(méi)有高性能需求Forms.Timer 的毫秒級(jí)精度完全夠用。初始化代碼長(zhǎng)這樣private void InitGameLoop() { gameTimer new Timer(); gameTimer.Interval 200; // 200ms 一次Tick即每秒5次 gameTimer.Tick GameTimer_Tick; gameTimer.Start(); gameData.TickSec 3; // 每個(gè)Tick相當(dāng)于游戲內(nèi)3秒 tickCounter 0; } private void GameTimer_Tick(object sender, EventArgs e) { if (!gameData.IsRunning) return; tickCounter; gameManager.UpdateIncome(gameData); // 第1步所有在停車(chē)輛結(jié)算收益 gameManager.UpdateCooldown(gameData); // 第2步檢測(cè)冷卻結(jié)束恢復(fù)可用 if (tickCounter % aiDecisionInterval 0) // 第3步AI按節(jié)奏做決策 { aiController.Decide(gameData); } if (tickCounter % uiRefreshInterval 0) // 第4步定時(shí)刷新界面不每Tick刷 { RenderBoard(); } }這里有個(gè)容易抄錯(cuò)的地方Interval 為什么用 200 而不是 1000因?yàn)槭找娼Y(jié)算如果每秒才走一次玩家看到的數(shù)字變化是跳變沒(méi)有“金幣在漲”的持續(xù)感反過(guò)來(lái)如果每毫秒結(jié)算一次CPU 浪費(fèi)嚴(yán)重。200ms 一個(gè) Tick每 5 個(gè) Tick 湊成游戲內(nèi) 3 秒需要改游戲速度時(shí)只改 TickSecTimer 本身不用動(dòng)。參數(shù)上aiDecisionInterval 默認(rèn)設(shè) 6意思是 AI 每 6 個(gè) Tick、約 1.2 秒決策一次uiRefreshInterval 默認(rèn)設(shè) 10即約 2 秒刷新一次界面。UI 刷新頻率別設(shè)太高WinForms 里每次改 PictureBox 的 BackColor 都會(huì)觸發(fā)一次重繪48 個(gè)車(chē)位全刷一遍就容易閃爍這個(gè)玄學(xué)問(wèn)題第 5 章再展開(kāi)。3. 把停車(chē)邏輯寫(xiě)成代碼車(chē)位狀態(tài)機(jī)與收益結(jié)算3.1 車(chē)位的四種狀態(tài)與狀態(tài)遷移條件車(chē)位的生命周期可以抽象成四種狀態(tài)空閑、占用未貼條、占用已貼條、冷卻中。嚴(yán)格說(shuō)冷卻屬于車(chē)輛狀態(tài)但它的存在影響了車(chē)位的可停判定所以實(shí)際編碼時(shí)兩個(gè)狀態(tài)要一起判斷。把這四種狀態(tài)畫(huà)成遷移圖邏輯是這樣的空閑狀態(tài)下玩家或 AI 可以停車(chē)進(jìn)入占用占用狀態(tài)下可以被貼條進(jìn)入已貼條占用和已貼條狀態(tài)下都可以被拖車(chē)拖完后車(chē)位回到空閑車(chē)輛進(jìn)入冷卻冷卻結(jié)束車(chē)輛重新可用??雌饋?lái)簡(jiǎn)單但“貼條之后能不能拖”這個(gè)細(xì)節(jié)很多初版實(shí)現(xiàn)都會(huì)做錯(cuò)資源里明確要求貼條后的車(chē)不能再被拖避免雙重懲罰疊加。核心方法全部收斂在 GameManager 里三個(gè)方法對(duì)應(yīng)三個(gè)玩家動(dòng)作public bool TryPark(GameData data, int carId, int spaceId) { var car FindCar(data, carId); var space data.Spaces[spaceId]; if (space.ParkedCarId ! -1) { return false; // 車(chē)位被占不能停 } if (car.InCooldown) { return false; // 被拖后冷卻中 } if (car.CurrentSpaceId ! -1) { // 自己已有車(chē)停在別處停到新位子時(shí)先把舊車(chē)收回來(lái) var oldSpace data.Spaces[car.CurrentSpaceId]; oldSpace.ParkedCarId -1; oldSpace.HasTicket false; car.AccIncome 0; } space.ParkedCarId carId; space.ParkedAt DateTime.Now; car.CurrentSpaceId spaceId; return true; }注意 TryPark 的返回值是 bool這是給 UI 層用的。玩家點(diǎn)了空車(chē)位但停車(chē)失敗時(shí)UI 層要根據(jù)返回值決定彈提示還是靜默處理如果方法返回 voidUI 層就只能靠猜。另外移動(dòng)舊車(chē)時(shí)把 AccIncome 清零并且把舊車(chē)位的 HasTicket 也重置這兩步缺一不可。漏掉 HasTicket 重置的話舊車(chē)位會(huì)殘留“已貼條”標(biāo)記后續(xù) AI 決策時(shí)以為那里有車(chē)可貼直接空指針或者收益錯(cuò)亂。接下來(lái)是貼條和拖車(chē)public bool TryTicket(GameData data, int spaceId) { var space data.Spaces[spaceId]; if (space.ParkedCarId -1 || space.HasTicket) { return false; // 沒(méi)車(chē)可貼或者已經(jīng)貼過(guò) } var car FindCar(data, space.ParkedCarId); var player FindOwner(data, car.Id); int fine (int)(car.AccIncome * 0.5) 20; // 罰金收入一半加20保底 player.Money - Math.Min(player.Money, fine); // 收益不夠就從本金扣 car.AccIncome 0; space.HasTicket true; return true; } public bool TryTow(GameData data, int spaceId) { var space data.Spaces[spaceId]; if (space.ParkedCarId -1 || space.HasTicket) { return false; // 拖車(chē)只對(duì)未貼條的在停車(chē)輛生效 } var car FindCar(data, space.ParkedCarId); var player FindOwner(data, car.Id); int fine (int)(car.AccIncome * 0.8); player.Money - Math.Min(player.Money, fine); car.AccIncome 0; car.CurrentSpaceId -1; car.InCooldown true; car.CooldownEnd DateTime.Now.AddSeconds(config.TowCooldownSec); space.ParkedCarId -1; space.HasTicket false; return true; }兩個(gè)方法的公共判斷都用條件表達(dá)式合在一行這是故意的貼條和拖車(chē)的目標(biāo)條件高度相似寫(xiě)進(jìn)方法的開(kāi)頭一眼就能看出差異只在 HasTicket 的判斷。罰金里Math.Min(player.Money, fine)的處理要說(shuō)明一下——如果玩家的當(dāng)前金幣小于罰金只扣到 0不讓玩家負(fù)債。課程設(shè)計(jì)答辯時(shí)經(jīng)常會(huì)被問(wèn)到“罰金不夠扣怎么辦”這個(gè)實(shí)現(xiàn)就是標(biāo)準(zhǔn)答案。3.2 點(diǎn)擊命中檢測(cè)用控件數(shù)組而不是算像素坐標(biāo)點(diǎn)擊車(chē)位做交互是初版實(shí)現(xiàn)翻車(chē)率最高的地方。常見(jiàn)的做法是給地圖 Panel 掛一個(gè) MouseClick 事件然后用 e.Location 除以格子寬高算行列。聽(tīng)起來(lái)很合理但實(shí)際跑起來(lái)經(jīng)常點(diǎn)一個(gè)格子響應(yīng)的是旁邊那個(gè)因?yàn)?Panel 有邊框、有 Padding、有 AutoScrollPosition甚至窗體縮放后格子尺寸變了你硬編碼的固定行列全部失效。這個(gè)資源里的做法非常務(wù)實(shí)用 TableLayoutPanel 鋪滿(mǎn) PictureBox 矩陣每個(gè) PictureBox 對(duì)應(yīng)一個(gè) ParkingSpace點(diǎn)擊事件掛在格子上Tag 里存車(chē)位索引。這樣甚至不需要寫(xiě)坐標(biāo)換算鼠標(biāo)點(diǎn)的是哪個(gè) PictureBox就必然是哪一個(gè)車(chē)位。// 初始化 6 行 8 列的網(wǎng)格映射到 GameData.Spaces for (int r 0; r rows; r) { for (int c 0; c cols; c) { var index r * cols c; var pic new PictureBox(); pic.Width cellW; pic.Height cellH; pic.Tag index; // Tag 存車(chē)位索引不存對(duì)象引用 pic.BackColor GetSpaceColor(data.Spaces[index]); pic.Click SpaceCell_Click; tableLayout.Controls.Add(pic, c, r); } } private void SpaceCell_Click(object sender, EventArgs e) { var pic (PictureBox)sender; int spaceIndex (int)pic.Tag; if (currentAction PlayerAction.Park) gameManager.TryPark(gameData, selectedCarId, spaceIndex); else if (currentAction PlayerAction.Ticket) gameManager.TryTicket(gameData, spaceIndex); else if (currentAction PlayerAction.Tow) gameManager.TryTow(gameData, spaceIndex); RenderBoard(); // 操作后立即刷新不等下一個(gè)UI刷新周期 }cellW 和 cellH 不要在初始化時(shí)寫(xiě)死應(yīng)該在 Form 的 Resize 事件里重新計(jì)算cellW (tableLayout.ClientSize.Width - tableLayout.Padding.Horizontal) / cols; cellH (tableLayout.ClientSize.Height - tableLayout.Padding.Vertical) / rows;Tag 里存索引而不是直接存 ParkingSpace 對(duì)象這算是一個(gè)防御性習(xí)慣如果后續(xù)在代碼里替換了整個(gè) Spaces 列表比如讀檔后重建索引仍然有效對(duì)象引用則會(huì)變成懸空引用。用控件數(shù)組方案之后鼠標(biāo)坐標(biāo)計(jì)算這個(gè)“玄學(xué)”環(huán)節(jié)完全消失了代價(jià)僅僅是內(nèi)存里多了幾十個(gè) PictureBox對(duì)單機(jī)游戲來(lái)說(shuō)可以忽略。3.3 收益結(jié)算上限、保底與結(jié)算順序收益結(jié)算是整個(gè)游戲的經(jīng)濟(jì)引擎代碼最短但最容易寫(xiě)歪。資源里的 UpdateIncome 方法在每次 Timer Tick 時(shí)被調(diào)用遍歷所有車(chē)位給停著的車(chē)?yán)奂邮找?。關(guān)鍵有三點(diǎn)收益上限、保底收益、結(jié)算順序。public void UpdateIncome(GameData data) { foreach (var space in data.Spaces) { if (space.ParkedCarId -1) continue; var car FindCar(data, space.ParkedCarId); if (car null || car.CurrentSpaceId ! space.Id) continue; // 收益上限判斷停車(chē)超過(guò) MaxStopSeconds 后不再漲錢(qián) var parkedDuration (DateTime.Now - space.ParkedAt).TotalSeconds; if (parkedDuration config.MaxStopSeconds) { continue; } int baseIncome config.BaseIncomePerMinute; double rate 1.0 car.Level * 0.2 space.Level * 0.1; int income (int)(baseIncome * rate * data.TickSec / 60.0); car.AccIncome Math.Max(income, 1); // 保底 1 金幣避免0收益 } }上限判斷用 DateTime 差值而不是 tick 計(jì)數(shù)器原因在第 2 章說(shuō)過(guò)存檔讀檔時(shí)只有 DateTime 能正確恢復(fù)。rate 的計(jì)算用的是加法稀釋乘法收益倍率 1 車(chē)輛等級(jí)加成 車(chē)位等級(jí)加成這樣后期數(shù)值膨脹速度可控。如果你改成 1.0 * 1.2^Level * 1.1^SpaceLevel指數(shù)增長(zhǎng)會(huì)在 30 分鐘后完全失控這是數(shù)值設(shè)計(jì)上的一個(gè)陷阱。保底 1 金幣必須加原因很實(shí)際TickSec 設(shè)置為 3 秒時(shí)基礎(chǔ)收益如果是 20 金幣/分鐘每個(gè) Tick 的理論收益是 1 金幣如果把 TickSec 改成 1 秒理論收益算下來(lái)是 0 金幣玩家看到車(chē)停了半天一分錢(qián)沒(méi)漲會(huì)認(rèn)為游戲壞了。Math.Max(income, 1)一行解決這個(gè)邊界問(wèn)題代價(jià)是極端低收益時(shí)金幣總量會(huì)略高于理論值但單機(jī)游戲內(nèi)部經(jīng)濟(jì)這點(diǎn)誤差無(wú)所謂。結(jié)算順序上保持“先結(jié)算收益后處理玩家操作”是這套源碼的一個(gè)隱式約定。玩家在兩次 UI 刷新之間點(diǎn)擊貼條貼條方法拿到的是最新結(jié)算過(guò)的 AccIncome罰金計(jì)算是準(zhǔn)的反過(guò)來(lái)如果先執(zhí)行操作再結(jié)算貼條罰金會(huì)少算一個(gè) Tick 的收益雖然單次誤差很小但累計(jì)起來(lái)就是“為什么我總是差幾塊錢(qián)”的詭異問(wèn)題。4. 單機(jī)版不冷場(chǎng)AI 對(duì)手的決策與實(shí)現(xiàn)4.1 三種行為與加權(quán)隨機(jī)為什么 AI 決定要“抽簽”單機(jī)版搶車(chē)位最怕冷場(chǎng)。如果 AI 只是在車(chē)位空著時(shí)去停游戲不會(huì)有任何對(duì)抗感所以資源里的 AI 集成了三種完整行為停車(chē)、貼條、拖車(chē)。但 AI 不能每次決策都做同樣的動(dòng)作否則行為模式很快就會(huì)被玩家摸透于是這里引入加權(quán)隨機(jī)——給每個(gè)行為分配一個(gè)權(quán)重值權(quán)重越大被抽中的概率越高。這樣 AI 的行為有隨機(jī)性但整體傾向可控。public void Decide(GameData data) { foreach (var ai in data.AIPlayers) { if (!ai.IsFree) continue; var action WeightedPick(ai.ParkWeight, ai.TicketWeight, ai.TowWeight); switch (action) { case AiAction.Park: PerformPark(data, ai); break; case AiAction.Ticket: PerformTicket(data, ai); break; case AiAction.Tow: PerformTow(data, ai); break; case AiAction.Wait: break; // 啥也不干模擬“在考慮中” } } } private AiAction WeightedPick(int parkW, int ticketW, int towW) { int total parkW ticketW towW 5; // 最后5是Wait的基礎(chǔ)權(quán)重 int rnd random.Next(total); if (rnd parkW) return AiAction.Park; if (rnd parkW ticketW) return AiAction.Ticket; if (rnd parkW ticketW towW) return AiAction.Tow; return AiAction.Wait; }加權(quán)隨機(jī)實(shí)現(xiàn)的細(xì)節(jié)在區(qū)間劃分。第一段區(qū)間長(zhǎng)度是 parkW第二段是 ticketW以此類(lèi)推。這里有個(gè)很隱蔽的 bug 源random必須是類(lèi)級(jí)別的靜態(tài)實(shí)例不能在 Decide 里new Random()。同一個(gè) Tick 里多個(gè) AI 依次決策如果各自 new Random系統(tǒng)時(shí)鐘種子相同的情況下會(huì)生成完全相同的隨機(jī)序列結(jié)果就是所有 AI 在同一次決策中做出一模一樣的動(dòng)作。這個(gè)資源里把 Random 設(shè)成了 GameManager 的靜態(tài)字段踩過(guò)這個(gè)坑的人都知道我在說(shuō)什么。4.2 決策前先做狀態(tài)快照防止 AI 之間串臺(tái)AI 決策過(guò)程中最容易出問(wèn)題的不是隨機(jī)數(shù)而是數(shù)據(jù)一致性。假設(shè)有 3 個(gè) AI第一個(gè) AI 停進(jìn)了 8 號(hào)車(chē)位第二個(gè) AI 在掃描空閑車(chē)位時(shí)也選中了 8 號(hào)——如果它直接讀實(shí)時(shí)的 data.Spaces會(huì)看到 8 號(hào)已經(jīng)被占然后跳過(guò)但如果它的掃描邏輯是先把所有空閑車(chē)位收集成 List再?gòu)闹须S機(jī)選一個(gè)而這個(gè) List 是決策開(kāi)始時(shí)生成的那它選中的可能正是第一個(gè) AI 剛占掉的車(chē)位最終停車(chē)失敗表現(xiàn)為“AI 莫名其妙發(fā)呆”。這個(gè)資源里的解法是給每次決策做一次數(shù)據(jù)快照所有 AI 基于同一個(gè)快照做判斷而不是基于實(shí)時(shí)變化的 Live 數(shù)據(jù)// AI 決策入場(chǎng)前鎖定一次狀態(tài)避免同一輪內(nèi)相互覆蓋 var snapshot data.Spaces.Select(s new SpaceSnapshot { SpaceId s.Id, ParkedCarId s.ParkedCarId, HasTicket s.HasTicket }).ToArray(); foreach (var ai in data.AIPlayers) { var target ChooseTargetFromSnapshot(snapshot, ai); if (target null) continue; // 真正執(zhí)行時(shí)要重新檢查實(shí)時(shí)狀態(tài)防止快照過(guò)期導(dǎo)致邏輯錯(cuò)亂 if (data.Spaces[target.SpaceId].ParkedCarId -1) { PerformPark(data, ai, target.SpaceId); } }SpaceSnapshot 是一個(gè)輕量結(jié)構(gòu)體只包含判斷所需的三個(gè)字段不引用實(shí)體對(duì)象??煺盏拇嬖谧屚惠?AI 決策之間互不干擾玩起來(lái)的感覺(jué)就是“三個(gè) AI 在同一秒各自做了自己的決定”這正是單機(jī)版對(duì)多人博弈的模擬。但也要注意快照的時(shí)效執(zhí)行操作前必須回到實(shí)時(shí)數(shù)據(jù)上做一次二次校驗(yàn)否則 AI 的停車(chē)操作會(huì)因?yàn)榭煺者^(guò)期而頻繁失敗失敗率過(guò)高時(shí) AI 看起來(lái)就像一個(gè)傻子。4.3 難度參數(shù)三個(gè)檔位的調(diào)參建議資源內(nèi)置了新手、普通、困難三個(gè)難度檔位實(shí)際改動(dòng)只有一張表參數(shù)新手普通困難ThinkTick決策間隔864ParkWeight停車(chē)權(quán)重706050TicketWeight貼條權(quán)重202530TowWeight拖車(chē)權(quán)重51015AI 收益倍率1.01.01.2調(diào)難度的邏輯有兩條線。第一條是決策頻率ThinkTick 越小AI 行動(dòng)越頻繁玩家剛停下車(chē) 2 秒就被盯上的幾率越大壓迫感直接上升。第二條是行為傾向新手檔拖車(chē)權(quán)重只有 5AI 很少拖車(chē)玩家不會(huì)被突然清空車(chē)位困難檔把拖車(chē)權(quán)重拉高到 15同時(shí)給 AI 加了 1.2 倍收益倍率保證 AI 在頻繁對(duì)抗的同時(shí)自己的經(jīng)濟(jì)也能跟上玩家不會(huì)滾雪球崩盤(pán)。這里有個(gè)容易忽略的細(xì)節(jié)AI 收益倍率不是加在 AI 玩家的初始資金上而是加在 AI 每次收益結(jié)算的產(chǎn)出上。如果只調(diào)初始資金游戲進(jìn)行 10 分鐘后 AI 就會(huì)破產(chǎn)后續(xù)只能靠貼條和拖車(chē)維持行為模式會(huì)變得非常單調(diào)。倍率調(diào)產(chǎn)出才能讓 AI 長(zhǎng)期和玩家保持同層級(jí)的競(jìng)爭(zhēng)力。5. 避坑記錄搶車(chē)位開(kāi)發(fā)中常見(jiàn)的五個(gè)翻車(chē)現(xiàn)場(chǎng)5.1 界面卡死Tick 事件里做了耗時(shí)操作現(xiàn)象游戲運(yùn)行后點(diǎn)擊按鈕沒(méi)有任何反應(yīng)窗口拖動(dòng)時(shí)出現(xiàn)白屏幾秒后才恢復(fù)。原因Timer 事件本身在 UI 線程執(zhí)行如果 Tick 里阻塞了整條消息隊(duì)列全部排隊(duì)所有控件都卡死。當(dāng)時(shí)是在 RenderBoard 里循環(huán)給 48 個(gè) PictureBox 設(shè)置 BackColor 和 Text圖片數(shù)量多時(shí)一次刷新耗時(shí)接近 300ms而 Timer 每隔 200ms 就觸發(fā)一次等于 UI 線程永遠(yuǎn)在趕場(chǎng)。解決把“數(shù)據(jù)更新”和“界面渲染”徹底分層。Tick 事件里只改 GameData 數(shù)據(jù)RenderBoard 統(tǒng)一放在 uiRefreshInterval 控制下實(shí)測(cè)將刷新頻率降到 2 秒一次并把 PictureBox 的 DoubleBuffered 屬性設(shè)為 true界面卡死問(wèn)題完全消失。5.2 收益翻倍重復(fù)創(chuàng)建 Timer 沒(méi)釋放舊實(shí)例現(xiàn)象玩著玩著金幣增速突然變快打開(kāi)日志發(fā)現(xiàn) UpdateIncome 被執(zhí)行了兩次甚至三次。原因?qū)崿F(xiàn)“重新開(kāi)始游戲”功能時(shí)代碼里直接 new 了一個(gè) Timer 再 Start但沒(méi)有 Stop 和 Dispose 舊 Timer。舊實(shí)例還在 Tick 事件里繼續(xù)驅(qū)動(dòng) UpdateIncome新舊兩個(gè) Timer 同時(shí)在跑收益結(jié)算被重復(fù)執(zhí)行。解決新開(kāi)一局前強(qiáng)制執(zhí)行一次gameTimer?.Stop(); gameTimer?.Dispose();再 new 新實(shí)例。從那以后我每次寫(xiě)帶 Timer 的游戲都會(huì)養(yǎng)成習(xí)慣只要出現(xiàn)“重新開(kāi)始”“切換場(chǎng)景”這類(lèi)邏輯第一步永遠(yuǎn)是清理舊的定時(shí)器這個(gè)習(xí)慣幫我省了無(wú)數(shù)次排查時(shí)間。5.3 坐標(biāo)偏差固定行列在窗體縮放后全部錯(cuò)位現(xiàn)象窗口默認(rèn)大小時(shí)點(diǎn)擊正常把窗口拉大后點(diǎn)擊格子響應(yīng)的是旁邊甚至對(duì)角線的車(chē)位。原因初始化時(shí)把格子寬高寫(xiě)死成了默認(rèn)窗口對(duì)應(yīng)的尺寸Resize 后 PictureBox 被 TableLayoutPanel 自動(dòng)拉伸但點(diǎn)擊事件里記錄的車(chē)位索引仍然按初始化時(shí)的順序排列。其實(shí)這個(gè)方案本身沒(méi)有錯(cuò)錯(cuò)的是格子尺寸沒(méi)有跟著重算。解決改用控件數(shù)組方案后把 cellW 和 cellH 的計(jì)算放在 Resize 事件里每次窗體尺寸變化都重新計(jì)算。代碼上只加了幾行但從此坐標(biāo)偏移的問(wèn)題再?zèng)]出現(xiàn)。如果堅(jiān)持用坐標(biāo)手動(dòng)算行列還需要額外減去 Panel 的 Padding 和 Border 寬度那個(gè)組合就是玄學(xué)中的玄學(xué)。5.4 貼條與拖車(chē)同時(shí)生效AI 把玩家打到倒欠金幣現(xiàn)象玩家車(chē)輛先被貼條緊接著又被拖走兩者罰金疊加玩家金幣直接變負(fù)游戲數(shù)值崩壞。原因TryTicket 和 TryTow 都只檢查了車(chē)輛是否存在沒(méi)有互斥檢查。貼條之后車(chē)還在原車(chē)位拖車(chē)邏輯又把它判定為“可拖對(duì)象”兩套罰金疊在一起扣。解決在 TryTow 開(kāi)頭加上if (space.HasTicket) return false;明確貼條和拖車(chē)是互斥動(dòng)作。規(guī)則上貼條后的車(chē)不能被拖這樣罰金只有一筆玩家損失可預(yù)期AI 的連招懲罰也不會(huì)顯得“不講道理”。5.5 讀檔后時(shí)間錯(cuò)亂DateTime 直接序列化導(dǎo)致收益上限失效現(xiàn)象昨晚存檔時(shí)車(chē)才停了 5 分鐘今天打開(kāi)繼續(xù)車(chē)子的收益直接變成 0顯示已到上限。原因存檔時(shí)把 ParkedAt 按 DateTime 序列化讀檔后 DateTime.Now 減去存檔里的 ParkedAt得到的是包含整個(gè)離線時(shí)間段的差值遠(yuǎn)超收益上限系統(tǒng)理所當(dāng)然地認(rèn)為收益已經(jīng)停發(fā)。解決存檔時(shí)不要存 ParkedAt而是存累計(jì)停車(chē)秒數(shù)。讀檔后重建 ParkedAtspace.ParkedAt DateTime.Now.AddSeconds(-space.ParkedElapsedSeconds);這樣離線時(shí)間不會(huì)混入收益時(shí)長(zhǎng)。另一個(gè)坑是 DateTime 在 JSON 里默認(rèn)序列化成帶時(shí)區(qū)的 UTC 字符串讀檔回來(lái)如果不轉(zhuǎn)換成當(dāng)?shù)貢r(shí)間差值也會(huì)錯(cuò)建議統(tǒng)一用 DateTimeOffset 或者干脆在存檔類(lèi)里全用 Unix 時(shí)間戳。6. 越玩越像樣JSON 存檔、車(chē)位升級(jí)與數(shù)值平衡技巧6.1 用 System.Text.Json 做存檔注意版本兼容存檔是課程設(shè)計(jì)里最容易拿加分也最容易丟分的點(diǎn)。資源里沒(méi)有用復(fù)雜的二進(jìn)制格式就是 System.Text.Json 直接序列化 GameData 對(duì)象public void SaveGame(GameData data, string filePath) { var options new JsonSerializerOptions { WriteIndented true, Converters { new JsonStringEnumConverter() } }; var json JsonSerializer.Serialize(data, data.GetType(), options); File.WriteAllText(filePath, json); } public GameData LoadGame(string filePath) { var json File.ReadAllText(filePath); var data JsonSerializer.DeserializeGameData(json); return data; }因?yàn)樗袑?shí)體類(lèi)都是普通對(duì)象序列化不需要額外標(biāo)記。如果以后給類(lèi)加了新字段建議在存檔里加一個(gè) version 字段讀檔時(shí)判斷版本做字段補(bǔ)默認(rèn)值避免舊存檔直接反序列化報(bào)錯(cuò)。這個(gè) version 字段不用參與游戲邏輯只在存檔類(lèi)里額外掛一個(gè)屬性就行。6.2 貼條罰金別寫(xiě) 100%一個(gè)保底公式數(shù)值平衡是整個(gè)單機(jī)版能“玩得下去”的底線。貼條罰金如果設(shè)為當(dāng)前累計(jì)收益的 100%玩家停滿(mǎn)半小時(shí)被貼一次條直接歸零挫敗感強(qiáng)到想刪游戲。資源里的處理方式是 50% 加固定保底int fine (int)(car.AccIncome * 0.5) 20;這樣收益低的階段貼條也有 20 金幣保底收益AI 不會(huì)因?yàn)橥婕臆?chē)上的錢(qián)少而懶得貼條收益高的時(shí)候罰金不會(huì)超過(guò)收入的一半玩家的損失可接受也有動(dòng)力繼續(xù)經(jīng)營(yíng)。拖車(chē)罰金用 80% 而不是 100%也是同樣的道理——拖車(chē)是最強(qiáng)的懲罰手段但直接清零會(huì)讓玩家覺(jué)得“這個(gè)游戲不講道理”。車(chē)位升級(jí)的數(shù)值設(shè)計(jì)也是同理每升一級(jí)花費(fèi)是當(dāng)前等級(jí)金幣的 1.8 倍收益加成只加 10%。這個(gè)曲線保證前期升級(jí)便宜、收益提升明顯后期升級(jí)貴但在玩家可負(fù)擔(dān)范圍內(nèi)。整個(gè)升級(jí)系統(tǒng)給了玩家一個(gè)消耗金幣的出口不然游戲進(jìn)行 20 分鐘后金幣溢出所有懲罰都變得不痛不癢。說(shuō)到車(chē)位升級(jí)順手分享一個(gè)我自己的習(xí)慣每次調(diào)試數(shù)值平衡我都會(huì)強(qiáng)制走一遍“新號(hào)開(kāi)局 10 分鐘、掛機(jī) 1 小時(shí)、AI 困難檔”三個(gè)狀態(tài)的完整流程觀察金幣曲線和玩家挫敗感。這個(gè)項(xiàng)目我拆完后也重跑了一遍貼條保底公式就是從那輪調(diào)試?yán)锟吹降摹P金低于 20 金幣檔位AI 貼條熱情明顯下降。以后再做這類(lèi)模擬經(jīng)營(yíng)小游戲我應(yīng)該都會(huì)先拿這三檔流程測(cè)試一遍再交出去。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
精品视频这里只有精品| 色五月在线| 婷婷五月骚厕所| 综合网色| 欧美日韩99| 五月天婷婷久久| 超91热| 欧美三日本三级少妇三99| 婷婷激情社区| 99热网站| 欧美色99| 久婷婷婷| 婷婷六月色开| 99热在线精品观看| 丁香六月色婷婷欧美| 色九网| 一起草无码| 五月天婷婷色综合| 97久人人| 二色AV| 99热第一页| 五月丁香香蕉| 天天色图| 综合激情站| 91色婷婷综合久久中文字幕二区| 天天日天天爽| 久热这里只有精品99re,久热这里只有精品7 | 五月婷婷精品| 色五月超碰| 日本97久久久精品| 午夜成人AV在线| 啪啪综合| 丁香五月天激情视频| 亚洲中文字幕av| 色狠狠综合| 91精品综合久久久久久五月丁香| 色5月婷婷| 超碰激情网| 丁香五月综合婷婷| 69五月天视频| 色婷婷AV久久| 久大香蕉| 99惹在线精品免费观看| 丁香婷婷五月色综合| 五月深爱激情网| 另类图片五月天激情| 久久久久久久人妻| 天天日天天添| 91久久网站| 99爱在线精品视频免费观看| 色婷婷香蕉| 一区视频网站| 久久精品小视频| 在线播放人妻| 97视频.干com| 天天综合永久| wWW九九在线播放| 超碰在线观看9| 在线看片av| 天天做天天爱天天爽| 九九综合精品| 色 噜噜 九月 婷婷| 九九在线精品| 五月婷婷丁香五月亚洲色| 亚洲国产精品VA在线看黑人| 色99在线| 97色色色视屏| 十区AV| 中文字幕永久免费| 天天干com| 超碰男人色| 五月天婷婷视频| 五月情综合| www.九九婷婷| 色五月大香蕉| 五月天天天天天天天天天天天婷婷婷| 婷婷成人综合免费视频| 9婷婷内射| 亚洲天堂久久| 久久机热探花| 国产毛片欧美毛片久久久| 婷婷五月天免费视频| 99操中文视频| 日美三级| 久久婷五月天| 99热这里都是精品| 久久这里只| 五月丁香婷婷在线| 9999热精品| 婷婷五月天黄色| 婷婷色香六月综合激情| 99色综合网| 狠狠干五月| 丁香五月六月婷婷殴美综合| 91热er| 99在线小视频| 五月婷婷啪啪啪啪| 五月天伊人| 五月色影院| WWW丁香五月| 日本玖玖在线| 久久97久久99久久综合欧美| 日日天天干| 婷婷激情五月天小说校园| 婷婷五月大| 丁香婷婷激情四射五月| 最近韩国日本免费高清观看| 亚洲中文字幕AV| 色婷婷五月综合网| 97色五月天| 激情丁香九九五月综合网| 青青草视频免费观看| 激情图片婷婷丁香五月| 人草人人| 人人看人人草人人摸| 五月天激情影院| 九久久九精品视频| 丁香五月天大香蕉啪啪| 色婷婷成人做爰A片免费看网站 | 少妇搡BBBB搡BBB搡毛茸茸 | 思思久热6| 亚洲婷婷在线播放十月| 九九色逼| 操久久网| 五月婷婷深深爱| 成人免费超碰| 伊大人久久| 99热综合色图| 五月天婷婷基地| 九九热手机在线视频| 亚洲综合在线视频| 婷婷五月大| 色综合视频| 超碰免费人人肏| 激情五月天婷婷| 97在线刺激| 丁香婷婷六月| 99综合| 丁香五月久久综合| 综合在线丁香五月| 天天爽曰日爽| 五月天婷婷成人资源站| 九九九成人在线视频| 亚洲精品网站色视频| 99ri在线观看视频| 91九色视频| 97亚洲婷婷| 中文字幕+中文在线| WWW嗯嗯啊啊啊啊| 久久丁香五月天| 在线观看免费狠狠色丁香香综合| 色婷婷综合影院| 色播五月婷婷| 日本操碰碰| 天天射影院| 天天橾日日橾夜夜橾17| 26uuu欧美宗合| 99精品在线下载| 五月社区婷婷激情| 婷婷丁香五月综合激情视频| 色五月婷婷色五月婷婷色五月婷婷| 日日操天天| 亚洲色婷婷网站| 99热精品10| 看婷婷五月天网| 激情五月综合| 丁香五月色播中文在线播放| 丁香五月天激情网| 色婷婷五月天在线观看| 99啪啪视频| www九九热| 婷婷丁香成人| 五月丁香婷婷综合| 西西4r午夜剧场| 婷婷酒色网| 97偷拍对白视频| 影音先锋偷偷色男人站| 激情五月丁香五月| 五月天自拍网| 人妻久久久久久久| 丁香婷婷大香蕉| 婷婷99狠狠躁天天躁| 国产午夜一区二区三区| 99re6在线视频精品免费| 成人做爰A片免费看视频| 天天操天天曰| 综合aV在线| 五月天婷婷网站| 绿色小导航AV| 五月丁香六月婷婷综合在线| 五月婷婷六月奇米网丁香| 丁香综合网| 婷婷五月色| 久久婷婷五月综合| 五月伊人91| 九九热99精品| 久久激情网| 激情综合网之激情五月| 五月天婷婷在线观看| www.yw色| 色情成人五月天| 精品热九九| 色婷婷文字幕| 亚洲在线激情婷婷五月| 国产精品VA在线| 六月激情婷婷| 丁香五月激情婷婷| 国产亚洲色婷婷久久99精品91 www.riverspirits.org www.hnnun.com www.changh | 婷婷午夜综合| 六月婷婷色五月| 色色网站免费| 久久激情网| 丁香六月在线综合| 久久婷婷五月综合伊人| 99精品久久久久久久婷婷久久| 夜夜夜夜撸夜夜操| 久久人妻视频| 五月丁香综合激情网| site:pnnrt.com| 黃色三级三级三级三级 qixing300.shrkbk.com www.jinbozs.com tianmiaosw.com | 九九婷婷五月天| 色色综合激情| 婷婷娱乐丁香综合网| 五月天伊人久久久久| 色婷婷香蕉| 久久3级片| 丁香激情网| 99热在这里只有免费精品| 婷婷日日夜夜| 伊人激情AV一区二区三区| 五月天色色色色色| 激情丰满熟妇五月| 99久re热视频精品98| 久久视9精| 超碰人人射| 欧美成人精品一区二区| 丁香五月婷婷啪啪| 国产 亚洲 在线| 五月丁香另类网| 九九人人操| 五月婷婷久久网| 国产日产成人亚洲欧美国产VA| 999影院成人在线影院| 99热这里只有精品青草| 九久久精品视频99| 免费不卡狠操美女视频网 | 丁香88AV五月婷婷| 色愛综合网| 亚亚州久久高潮| 色99视频| 五月婷婷六月天| 国产精品热搜丁香五月婷婷| 四LLL少妇BBBB槡BBBB| 丁香五月AV| 五月丁香婷庭在线| 国产偷人爽久久久久久老妇APP| 人人性久久| 五月丁香欧美在线| 婷婷色情 | 丁香五月性爱| 久久停停超碰| 五月天三级久久| 99在线国| 大地资源色婷婷视频在线| 五月丁香六月色| 婷婷十月激情综合网| 免费看欧美成人A片无码| 日本综合久久| 色色激情网| 伊人激情网| 狠狠干青青草| 无码成人AAAAA毛片AI换脸| 色狠狠色| 在线成人网址| 色天堂在线| 五月婷婷激情综合网 | 色导航色婷婷五月天在线观看| 国产亚洲精品久久久久久牛牛| 99热在线观看精品| 婷婷五月丁香啪啪| 亚洲综合视频网| 99这里只有精品视频| 在线日本www| 色婷婷影音| 中文字幕无码人妻少妇免费视频| 婷婷五月天激情在线观看| 婷婷五月丁香基地| 超碰三级秋霞| 午夜大香蕉| 7月婷婷六月丁香| 婷婷月综合| 97干在线看| www.99热这里只有精品| 激情五月丁香色色去久久| 天天爽天天草| 色五月综合97| 丁香久月| 99色中文| 99操| 亚洲色9| 91色综合| 猫咪伊人久久| 五月丁香啪啪| 99热这里只有精品手机在线观看| 国产欧美精品AAAAAA片| 色色日韩无码| 丁香五月激情啪啪啪啪| 狠狠狠色激情综合适合| 9久热免费视频99| 91婷婷色五月| 五月噜噜噜色综合| 色色五月天激情| 综合五月草| 亚洲中文字幕av| 六月色色综合| 日韩三十六页| 五月丁香激情综合啪啪| 五月丁香美女视频| 欧美性生交XXXXX无码小说| anquye五月| 五月婷久久综合| 五月天啪啪啪| 色综合色综合网| 婷婷色婷婷| 精品婷婷五月视| 欧美情色一区| 九九这里只有精品| site:xmssd.com| 疯狂做受XXXX高潮A片动画| 久久久人人人妻丝丝丝| 五月综合激情图片| 啪啪啪大香蕉| 狠狠操在线视频| 日本情色一区二区| 九色视频91疯狂| 丁香婷婷人妻| 中文不卡av| 99视频精品全部观看10| 婷婷丁香人妻天久久| 最近中文字幕2019视频1| 国产精品热搜丁香五月婷婷| 色婷久久| 青柠影视免费高清电视剧| 天天综合影院| 无码se| 色欲一区二区三区精品A片| 国产精品激情五月天色婷婷| 五月婷婷熟女| 日本激情综合| 99热99色| 日日操,夜夜爽| wWW九九在线播放| 99这里有精品视频| 激情六月丁| 亭亭玉立国色天香| 操婷婷久久| 婷婷啪啪| 亚洲狠狠狠| 亚洲啪啪视频| 亚洲区在线| 激情丁香社区| 丁香五月综合在线视频| 人妻自慰在线| 久久嘟嘟丁香| 国产伦亲子伦亲子视频观看| 色婷婷丁香五月天| 亚洲综合激情五月天婷婷| 超碰天堂网| 亚洲熟女色| 思思热性操| 激情五月天的婷婷| 久久全意婷婷| 久久五月丁香| 综合伊人久久| 色五月丁香五月婷婷五月成人网| 婷婷六月丁香在线| 五月 激情视频| 亚洲无AV在线中文字幕| 久久性爱视频网站| www久久艹| 日日操,天天操| 婷婷永久在线| 超碰色女人| 精品夜夜澡人妻无码AV| 五月丁香性爱| 婷婷激情图片| 思思久久青草热| 色播五月丁香| 五月丁香久久综合色| 成AV人片一区二区三区久久| 久久婷婷成人| 久久激情网| 五月婷婷五月天天| 婷婷色色狠狠| 婷婷亚洲综合| 2020日日干| 天天干人人奸97| 五月天激情综合| www热久久yy9| 天天色宗合| 色综合久久伊伊婷婷五月| 中文色婷婷| 99啪视频在线观看| 丁香五月玖玖| 天天日天天久久青青| 国产毛片精品一区二区色欲黄A片| 日日夜夜干| 久久久久久久久久人妻| 日本色婷婷综合| 碰碰91| 亚州第一A片| 色欧美一级| 婷婷五月成人| 丁香五月婷婷基地| 99久久这里只有精品| 99在线观看精品| 都市激情小说婷婷| 开心五月综合| 5月丁香六月婷婷| 乱女乱妇熟女熟妇综合网站| 综合五月丁香久久| 亚洲精品乱码久久久久久综合| 日韩成人av在线| 操操自拍| 婷婷丁香综合在线| 久久婷婷大香蕉| 97色综合| 丁香五月婷婷香| 天天激情站| 日韩成人影片网站 | 依人大香蕉在钱1| 五月丁香成人网| 天天爽天天日| 日韩成人网址| 亚洲精品无AMM毛片| h在线看免费版在线看| 天天操天天干天天日| 这里只有精彩视频| 可以看的av| 成人在线视频网| 欧洲综合视频| 欧美色99| 狠狠干综合| 色色五月婷婷| 五月天丁香| 国产在线aaa片一区二区99| 亚洲色五月| 免费看欧美成人A片无码| 色五月网址| 大伊香蕉精品视频在线| 五月婷婷久久网| 91啦丨九色丨刺激中文| 久久玖玖综合| 五月丁香啪啪网| 久久久婷婷| 亚洲日本激情| 天天成人丁香美女AV| 开心婷婷五月天激情网| 91黄操| 欧美在线操| 91碰碰| 可以免费观看的AV| 射满了还射免费在线观看 -午夜版全集-新视觉影院| 婷婷五月天社区| 国产精品久久久久久久久久| 色婷婷久久7777| 超碰在线综合| 激情网战码亚洲A| 五月丁香婷色| www99热| 亚洲丁香五月在线观看| 婷婷色在线视频| 激情五月天综合| 欧洲MV日韩MV国产| 十区AV| 五月伊人网| 日韩草草草草草草草草草草草草| 狠狠五月天婷婷激情网。| 欧美色爱五月天| 丁香五月婷婷AV| 丝袜大香蕉| 综合五月激情| 亚洲综合网 665566| 色情五月丁香| 色五月婷激情| AAA久久久| 国产在线aaa片一区二区99| 色八戒操婷婷| 99热99色| 26UUU精品一区二区c〇m| 丁香婷婷情色五月天| www.天天日| 激情AV综合| 97色在线观看视频| 丁香五月天激情小说| 久久 天天| 色情五月综合婷婷| 色五月综合97| 成人超碰AV| 另类小说激情五月天| 99热精品在线播放| 久热爱大香蕉在线蜜臀悦色 | jiqingliuyuetian| 99爱视频在线| 狠狠色丁香婷婷| 成人深爱丁香五月| 天天日天天爽| 国产性av| 91色久| 亚洲成人乱码av网站| 97丁香五月| 亚洲精品久久久久久久久久飞鱼| 色色色色色五月丁香| 色婷婷五月天激情久久| 大香蕉婷婷丁香视频在线| 99视频这里有精品| 丁香丁婷五月激情| 狠狠干狠狠干| 黄色片avv| 五月婷婷色情| 欧美成人性爱网| 欧洲色| 一区二区传媒视频| 森林影视大全,最好看的2019年视频 | 99热这里只有99| 色婷婷精品| 六月丁香五月婷婷| 日韩婷婷| 色区域网站视频| 99热精品中文字幕| 91色在线 | 日韩| 色 五月婷婷基地| 色欲色香综合网| 91九九精品| hd五月婷婷在线| 综合激情婷婷| 婷婷六月视频| 五月天婷婷激情综合| 情欲禁地| 久久这里都是精品免费| 丁香五月影视| 99亚洲精美视频在线观看| anquye五月| 91久热| 久久久99婷婷久久久久久| wwccc久久久| 综合婷婷| 久久婷婷五月综合激情国产| 精品久久这里热66| 激情碰碰碰| 丁香五月六月欧美| 日韩二区搞逼插逼毛片| 深爱开心激情网| 天天影院色| 五月婷六月| 这里只有精品视频免费在线观看| wwww.9免费视频| 激情婷婷另类| 夜夜嗨一区二区三区直播内容| 国产韩日亚洲美州欧亚综合在线| 亚洲色久| 7777精品伊人久久久大香线蕉最新版| 久久人妻伦理| 99色免费在线观看| 精品人妻一区二区三区四区不卡在| 精品久9| 人妻五月天激情开心网| 女人高潮内射99精品| 婷婷激情伍月网| 另类在线| 久久综合九九| 在线只有精品| 五月婷婷亚洲天堂激情在线| 激情综合网激情五月天| 色丁香综合影院| 国产成人精品亚洲线观看| 99热思思在线观看| 激情五月天丁香| 99er这里只有精品| 色五月婷婷在线| 亚州激情在线视频| 性爱激情综合网| 激情综合色五月六月婷婷| 女人高潮内射99精品| 五月婷婷久久综合| 五月婷婷综合在线亚洲视频| 六月丁香影院| 丁香婷婷久久五月天| 99热这里只有精品18| 免费日本aⅴ中文字幕| 丁香六月激情综合啪啪| 成人在线日韩欧美| a在线观看| 精品九九在线观看视频| 大战熟女丰满人妻AV| 婷婷六月插屄激情| 91N 一起草| 欧美综合激情丁香五月六月婷| 色播播婷婷| 91色色色| 五月丁香色色综合| 久久五月天影院| 久久色情综合免费网站| 久久综合五月婷婷| 大香蕉久久久久| 综合五月草| 欧美叉叉叉BBB网站| 六月婷婷国产| 久人操| 中文AV在线播放| 天天做天天爱天天搞| 五月天社区| 五月色网| 婷婷伊人综合中文字幕| 精品人妻伦九区久久AAA片| 综合六月激情婷婷| 五月婷婷深深爱| 我爱大香蕉| 日本AAAAAAAAAAAAAA片| 五月婷婷七月丁香| av中文在线| 久热网在线视频| 任你日视频| 99在线小视频| 日本VA视频| 91精品国产91久久久久青草| 国产日产亚洲系列最新| 色女人久久| 99这里只有精品视频在线| 色婷婷狠狠久久综合五月| 六月丁香中文字幕| 亚洲综合视频一下| 99久久婷婷五月综合| 激情五月综合网| 天堂草在线看www| 色五月激情网| 九九九AAA热视频| 99色在线| 婷婷亚洲色| 天天爽人人综合免费7799| 激情综合五月婷婷| 99爱视频| 午夜丁香六月婷| 91婷婷在线观看| 亚洲日韩一页精品发布| 色婷久| 99热这是里只有精品| 婷婷中文字幕在线| 欧美日本日韩| 美女网黄| 五月天电影网| 思思热久久阴99| 五月丁香婷婷综合网色欲| 五月天激情四射| 99综合视频| 夜夜天天久久婷婷| 亚洲综合久| 婷婷五月天久| 国产精品涩涩涩视频网站| 熟女网站久久| 这里只有精品网| 久久9视频欧美| 激情婷婷激情在线不卡| 99久久久久| 狼人婷婷综合| 激情五月丁香五月综合| 成人丁香五月| 9l视频自拍九色9l视频自拍九色9l社区 | 亚洲无码你懂的| 嫩草AV久久伊人妇女超级A| 久久丁香五月| www.henhengan| 色五月婷婷在线视频| 婷婷涩五月| 久久青草国| 丁香五月花| 久久激情网| 色婷久| 日逼免费视频| 狠狠狠狠免费| 欧美情月伍月天| 色欲久久久久久综合网综合网| 九九爱精品网站| 国产乱子轮XXX农村| 婷婷五月激情网| 激情五月天色婷婷| 精品皮股午夜AV| 丁香花五月天激情| 五月丁香久久呀| 超碰丁香五月| 人人综合色| 性做爰A片免费视频A片直播| 99自拍视频在线观看| 亚欧州精品视频| 五月天色五月| 极品人妻VideOssS人妻| 日日操天天| 青青草日本亚洲| 色亚洲中文| sS丁香五月婷婷| 天天做天天爱天天爽夜夜揉| 色婷婷久久| www99精品| 91婷婷丁香五月| 久热丁香| 久久图色4| 操碰色一区就去操| 麻豆观看夏晴子| 激情五月色综合| 五月丁香婷婷激情久久| 婷婷午夜丁香| 成人婷99最新| 92久久| 玖玖在线| 色丁香五月| 色天堂97| 激情啪啪五月| 色综合丁香婷婷| BT综合在线视频观看| av在线免费网站 | 国产性爱亚洲是图| 狠狠色狠狠操| 91九九| 亚洲综合激情五月久久| 嫩草AV久久伊人妇女超级A| 夜精品无码A片一区二区蜜桃| 另类少妇人与禽zOZZ0性伦| 成人综合网站| 婷婷五月花.97| 亚洲AV无码电影| 久久99日本精品视频免费观看| 黄色五月婷| 第四色大香蕉| 色99www.| 丁香五月六月综合激情| 狼人久草| 久热久色| 天天上天天爽| 婷婷五月六月丁香综合| 人人草人| 久久这里有| 色婷婷久久| 天天久久狠狠色综合| 思思re99视频在线观看| 五月丁香| av中文字幕免费观看| 人人综合色| 97色欧美| 色婷婷五月天中文字幕| 操笔无码| 婷婷五月天论坛| 99精品色| 婷婷伊人网| 99啪啪| 久久婷婷五月综合| 五月天伊人久久久久| AV在线大香蕉| 亚洲精品V天堂中文字幕| 色吧网综合| 色综合久久中文| 日韩欧美颜射| www.五月天。com| 六月婷婷开心| 日日干天天爽| 99福利视频导航| 五月丁香激情综合六月涩涩爱| 狠狠看狠狠| 操逼棍操逼| 伊人婷婷大香蕉| 欧美肉大捧一进一出免费视频| 婷婷伊人综合| 我爱大香蕉| 亚洲精品性色| AV在线免费网站| 熟女人妻一区二区三区免费看| 六月丁香啪| 丁香六月综合激情| 天天做 天天爱| 成人 在线 日韩| 95精品区一区二| 日本视频99| 丁香亚洲婷婷五月| 久久久这里有精品| 色五月综合| 丁香色影院| 国产精典视频在线观看| 五月精品免费XXX| 最新色色五月天| 丁香激情五月| 免费看片在线观看| 五月激情婷婷开心五月| 色婷婷视频在线| 五月婷婷综合网| www色婷婷com| 日本a片网址| 婷婷丁香五月亚洲17cao| 色婷婷成人| 婷婷五月综合中文字幕| 婷婷丁香69精华| 色情婷婷五月天| 99热色精品| 成人在线综合| 久久思思热视频| 深爱五月激情五月| 九九人人看| 亚洲看av的网站| 久久久久9999| 中文字幕第四色.999| 丁香六月视频| 丁香五月影院| 日韩精品电影| 六月丁香五月激情网| 五月激情婷婷丁香| 好色婷婷| 九九九九九九九热| 99久久九九| 五月天婷婷操逼视频| 久久久久人妻精选| 亚洲日本韩国| 天天肏视频| 五月天激情小说欧美激情| 亚洲欧洲中文日韩久久AV乱码| 色婷婷久久综合| 亚洲色五月婷婷| 五月婷婷无码| 久久九九综合| 六月婷婷综合激情| 91日精品| 我要看激情五月天| 无码人妻AV久久久一区二区三区| 色播五月丁香| 97久久久久| 丁香五月综合首页| 亚洲欧美国产高清vA在线播放| 成人做爰A片免费看视频| 久热大香蕉| 精品99在线| 久久一品区| 日日爽日日爽| 婷婷五月天丁香综合网| 欧美激情 日韩无码 婷婷 五月天 久久婷婷丁香五月一二三 | www.婷婷五月| 欧美日比视频| 停婷丁五月在线| 色 噜噜 九月 婷婷| 五月色俺婷婷| 成人.在线日韩| 狠狠草婷婷| 久久九九99| 丁香五月婷婷亚洲综合精品| 九九婷婷综合| 亚洲一区国产传媒| 超碰爱爱爱| 国产综合丁香五月天| 人人爽欧美婷婷久久久五月丁香| 久久加勤综合| 色情五月天A片| 五月天丁香久久综合| 五月天婷婷丁香视频| 欧美日本免费一道免费视频| 丁香五月狠狠综合欧美| 强辱丰满人妻HD中文字幕| 黄色99视频| 六月婷婷五月丁香| 天天开心婷婷丁香五月| 天天日天天爽| 免费精品66| 国产毛多水多女人A片| 国产六月婷婷| 色色色999| 99热99热在线观看| 98国产精品综合一区二区三区| 97干婷婷五月天| 亚洲天堂婷婷丁香| 婷婷五月天欧美图片在线播放电驴| 99色人| 日韩av网址大全| 丁香婷婷婷| www激情| 日本123区日韩欧美不卡在线看| 五月丁香性| 欧美色97| 99热最新| 九九热99re8热免费观看 | 国产精品成人网站| 久色| 综合99综合久久久久久久| 激情综合色| 五五月丁香花激情综合网| 丁香五月色| 婷婷色五月天综合网| 操草草草| 丁香五月天之婷婷影院| 激情性爱五月天| 色婷婷网| 艾小青av| a片在线免费观看一区| 99毛片| 婷婷久久五月| 国产又粗又大又爽又黄| 五月婷婷之美女图片| 婷婷五月天丁香社区| 婷婷六月综合激情| 欧美Va在线| 精品亚洲日韩99欧美片| 色综合激情| 久久成人综合五月天| 久久婷婷五月天大香蕉| 五月婷婷五月天在线| 九九综合网色全集| 久久99热这里只频精品6学生| 五月丁香六月婷综合成人综合| 丁香五月日韩| 色综合久久久无码中文字幕999| 色五月偷偷| 极品 少妇 内射| 伊人网啪啪| 青柠影视免费高清电视剧| 婷婷五月天综合在线| 天天 青草 制服丝袜 在线| 黄色成人AV在线| 狠狠干无码| 久久人妻视步| site:pzdcoin.com| 99视频啪啪| 啪啪91| 综合激情啪啪| 九九激情| 六月婷婷开心| 亚艹艹| 色热久| 国产精品久久久久久久久久免费| 色色亚洲视频| 99在线观看免费精品视频| www99xxxx五月丁| 五月婷婷色播| 这里只有精品99www| 成片免费观看大全| 国产精品美女| 久久久性爱视频| 婷婷第六色| 伊人丁香五月婷婷潮吹| 九色自拍| 天天干天天干天天干天天干天天| 色婷婷亚洲在线观看| 色色婷婷五月| www.婷婷| 婷婷五月天AV激情| 久久狼人天堂| 国产成人综合亚洲| 五月婷色| 噜噜久| 五月丁香六月色婷婷综合五月天| 久久一伦| www.婷婷| 99视频35精品视频在线观看| 久久五月婷天天干| 中文字幕av在线| 97午夜一区二区| 久久婷婷视频| 婷婷五月综合色拍| 99热亚洲精品66| 大香蕉久艹| 九九九九中文字幕| 99久久人妻精品无码二区| 综合久久综合久久| 激情五月色播五月| 五月天婷婷色播在线网| 俺也去在线久久精品23欧美综合视频网站,丰满人妻一区二区三区在线视频53,丰满 | 久久五月热| 国产在线aaa片一区二区99| 97碰| 五月丁香欧美综合| 狠狠五月激情在线| 精品99在线| 狼人伊人干| 青青草视频免费观看| 91狠狠色丁香婷婷综合久久精品| 激情综合激情综合| 午夜爱爱爱成人| 久久永久网址| 91人人网| 亚洲成人在线观看网址| 日韩黄色影院| 五月天婷婷色色| 人人操AV| 激情五月天在线免费美女视频| 玖操97| 婷婷五月天中文字幕.| www.色9| 色99免费视频中文| 国产精品岛国片在线观看免费| 久久九九99.www| 五月刺激丁香月综合| 草草色情综合网| 综合天堂AV久久久久久久| 久久精品A片777777| 国产成人片| 成人无码精品1区2区3区免费看| 91超级碰碰| 婷婷久久综合久| 99热综合| www.99在线| 任你草| 五月丁香| 高清一区二区三区日本久| 99激情| 国产亚洲精品久久久久久郑州 | 亚洲激情四射| 99在线观看视频免费| 另类色视频| 九九热在视频| 婷婷玉月丁香五月在线视频| 五月天激情小说婷婷基地| 亚洲综合狠狠艹| 成人五月天视频播放| 五月花在线观看视频| 精品久久这里热66| 色婷婷9| 色色色99| 精品久久艹| 色情成人五月天| 无遮羞AV| 久热99狠| 久久色午夜在线导航| www.99热这里精品| 久草 天堂| 狠狠艹狠狠艹| 亚洲狠狠婷婷综合久久久| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 日韩av在线免费观看| 91九色在线| 九月婷婷| 九九亚洲天堂| 九九九九九九九九九九九九九国产精品| 免费人人操| 色五月首页| 日本在线视频手机播放五月婷| 亚洲一区二区无码蜜乳av| 韩国天天婷婷| 激情久久肏屄视频| 九九久久综合| 六月婷婷色色网| 日韩精品电影| 婷婷五月天综合激情| 久婷婷久草| 五月天激情婷婷久久| 日韩狠狠色| 天天操天天插| 日本A片一区| 婷婷精品免费久久| 亚洲日韩26uuu| 天天日天天爽夜夜爽| 久婷| 日本欧美成人片AAAA| 五月婷婷精品视频| 操一区| 三十路磁力链接| 丁香五月欧美午夜视频| 色99网| 国产做爰视频免费播放| 天天透天天干| 99综合色色色| 色情综合网| 99色在线观看| 5月丁香美女影院| 久久婷五月综合| 国产va在线视频| 亚洲国产精品VA在线看黑人| 99热亚洲| 香蕉曰比| 久久婷婷综合网| 涩涩网五月天| 久久久99久久| www.丁香六月婷婷久久天堂影院.con| 九九精品热播| 综合五月亭亭9| 99re热在线观看| 青青草视频免费观看| 九九99香蕉在线视频播放| 无码毛片992367| 婷婷六月综合基地| 超pen个人视频97| 97人妻碰碰碰久久香蕉| 婷婷在线午夜| 超碰超碰在线| 婷婷五月综合性爱| 亚洲AV网站| 色色网五月激情| 天天射影院| 超级碰碰碰碰视频| 久久99热 这里有精品| 亚洲六月色婷婷| 68热超碰在线| 性日本激情| 天天天干夜夜夜操| 日本少妇裸体做爰高潮片| 97视频久久| 女人天堂 AV| 久久伊人五月天| 99热99极品观看| 五月婷久久在线| 天天插天天日| 91精品无码久久久久久五月天| 色综合久久88色综合中文字幕| 婷婷五月天成人网| www.99热这里精品| 99re热视频| 夜夜操狠狠操| 91精品综合久久婷婷九色| 九九色视频| 1000部毛片A片免费观看| 色狠狠色综合久久久绯色AⅤ影视 大香蕉五月天婷婷丁香91 | 色婷婷亚洲五月天| 天天揷综合网| 五月丁香六月婷婷精品| 手机旧版看人妻1025| 色五月激情图片| 天天色天天爱天天舔| 任你日热视频| 久久五月婷天天干| 欧美日韩一a.无| 五月婷婷色| 在线色婷婷| 五月天小说激情| 天天天天操| 色热久| 五月天六月婷| 久久98| 天天综合天综合久久网| 九九碰九九爱97超碰| 991国产精选视频在线播放下载| VfJxEwPH| 熟妇人妻中文字幕无码老熟妇| 丁香九月婷婷| 五月丁香婷婷综合视频| 亚洲天堂有码| 狠狠插狠狠| 久久在线视频免费观看| 婷婷五月成人有| 99热网站| 久久久99婷婷久久久久久| 国产色色视频| 亚洲影院婷婷色| www.99热. com这里只有精品| 影音先锋高清无码资源网| 成人色站,在线视频,看片-SS1AV| 亚洲激情五月| 99精品在线| 婷婷五月天成人网| 久久停停超碰| 一起草Av| 婷婷久久免费| 天天爽天天| 久久图色4| 亚洲激情网| 91视频久久久| 激情五月天视频| 9久久久| 日韩三级高清无码| 大胆伊人久久| 六月丁香啪啪啪| 国产黄色一级片| 色五月婷婷老师| 先锋资源婷婷| 婷婷色操| 丁香激情五月| 97人人做| 五月婷婷影| 欧洲毛片基地c区| 婷婷91| 激情综合婷婷| 伊人网欧美在线男人天堂五月丁香| 五月天啪啪啪| 五月天激情综合网站| 9l视频自拍9l九色成人| 人人舔人人色人人高潮| 欧美精品在线观看| 婷婷五月伦理| 日本A片一区| 丁香五月在线播放| 久久婷婷五月天蜜桃| 99re免费精品视频| 亚洲国产精品成人免费一区久久久在线观看AAAA | 丁香五月六月婷婷怡红院| 99精品网址| 日本九九网| 久久久网站| 无码人妻少妇色欲AV一区二区| 天天做天天要天天爽| 亚洲精品第一国产综合亚AV| 久久人妻伊人| 激情四射婷婷色色色| 色婷| www99热| 九九性视频| 五月婷六月天| 97在线干| 超碰93在线观看| 日日爱678| 丰满人妻妇伦又伦精品国产| 夜夜撸日日骑| 99九九视频| 99爱精品| 五月丁香久久久日婷婷久久婷婷日 | 色播五月婷婷| 五月丁香婷婷在线| 国产精品18久久久| 婷婷五月天日本无码| 久久精品99久久久久久| 天天爱天天操| 日日做夜夜爱| 色色综合激情| 婷婷久久五月| 99综合激情久久精品久久| 婷婷丁香亚洲色综合91| 久久激情视频| 婷婷.com| 久久丁香五月| 精品夜夜澡人妻无码AV| 人人爱国产| 久久久五月天| 五月J香蕉婷婷| 婷婷中文字幕网| 综合婷婷六月| 狠狠色噜噜色狠狠狠综合色| 日韩999| 先锋资源996| 99久久新视频| 六月丁香啪啪| 色导航色婷婷五月天在线观看| 国产成人综合网| 六月丁花香啪啪激情欧美| 91久久精品无码一区二区三区| 丁香久色| 日韩有码久久| 六月丁香久久| 开心五月网 | 99re热| 婷婷五月天丁香久久| 婷婷激情社区| 九九热视频思思| 亚洲精品国产成人AV在线| 97色五月婷婷在线| 婷婷九月激情| 婷婷色Av| 色99热| 亚洲色无码A片一区二区麻豆| 色婷婷五月天| 天天色,天天操,天天射| 天堂色婷婷| 99视频热99| 六月丁香激情网| 色色色免费视频| 丁香五月自拍| 《久久综合九色综合97婷婷| 激情六月天| 婷婷五月电影| 色5月婷婷| 激情综合五月婷| 五月丁香花激情啪啪网| 天天色播| 五月丁香六月婷婷激情网| 激情五月六月丁香| 99色激| 婷婷久久图片|