首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

再談 C# 掃雷:MVC 風格架構與邏輯視圖分離設計心得

     編輯:關於C#

架構理念澄清

感謝社區討論。我的初衷是將 MineControl 視為純視圖組件(類似 Button/Label),僅負責顯示狀態(數字、旗標、問號、未翻開),不包含遊戲邏輯。

職責劃分

優勢

  • 邏輯層不關心繪圖細節,結構清晰
  • 視圖可複用、易替換(如改 WPF)
  • 單元測試友善:邏輯可獨立測試

關鍵技術點

  • GDI+ 繪圖:覆寫 OnPaint 直接繪 Icon,避免 PictureBox 載入閃爍
  • 雙鍵同步:C# MouseDown 無法直接得知另一鍵狀態,需全域旗標追蹤左右鍵組合
  • FloodFill 遞迴:點擊空白區域自動展開相鄰安全格

參考資源

徐小俠完整實現:C# 掃雷最佳實踐
icebird 早期版本:CSharpMine

結語

架構無絕對標準,多閱讀他人實現、持續重構,方能精進。歡迎繼續拋磚引玉!

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
MineControl (View)Form1 (Controller/Logic)
狀態:Initial/Pressed/Flag/QuestionMark/Unseal滑鼠事件判斷:左鍵、右鍵、雙鍵、空白區域遞迴展開
操作:Press()/UnPress()/PutFlag()/Unseal()呼叫介面觸發狀態轉換與重繪