程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> 再談C#掃雷

再談C#掃雷

編輯:關於C#

看來大家都很喜歡掃雷這個話題啊. 感謝大家指出了我代碼裡的問題,這裡徐小俠寫了一個很好的實現:

http://www.cnblogs.com/Chinese-xu/archive/2009/04/29/1446415.html

同時他指出我並沒有完全按照面向對象的方法來設計,其實這個起源於我設計時候的一個初衷,在這裡澄清一下.

我一開始實現只個MineControl的時候,並沒有考慮要將所有的邏輯都放到MineControl Class中. 我認為MineControl其實和WinForm裡的普通Button,Label之類的沒有區別,都是一個View,用來顯示的. 只不過MineControl是專用來顯示掃雷中的一個Button的,所以會有123456789,flag,questionmark等不同的顯示狀態. 簡單地說,MineControl負責的是如何顯示的問題,至於什麼時候顯示,顯示什麼,這些邏輯都應該要和控件剝離. 在我的設計裡,MineControl只是一個View,具體的邏輯都不應該出現在其中.

所以大家可以看到在我的代碼中,一些具體的邏輯,比如鼠標左鍵MouseDown,左右鍵雙擊,點中空白區域等等,這些具體的邏輯都是在Form1裡實現的. Form1根據用戶的輸入,來確定這些MineControl應該的表現是什麼,再通過Unseal(),Press()等接口來使界面發生變化.這樣做的好處顯而易見:在實現邏輯的時候,我們不需要關心顯示的細節,這樣程序的結構看上去就會更清晰一些.

其實每個人的對程序設計都會有自己的理解, 這樣的討論受益良多,我相信多看看別人的實現,對自己的提高是有很大幫助的. ^^

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved