發表文章

目前顯示的是 2008的文章

如何動態新增RadioButton控制項在GroupBox的Container內

前一篇文章有提到要進行聰明牌型提示。一副十三支的牌,有時候可以選擇的牌型很多樣,有時候卻很少。 因此,我想在Container內用RadioButton的方式來提出可以讓使用者選擇成是已經判斷出來可以用的牌型。也就是想在GroupBox內動態產生RadioButton控制項方式進行。 我參考了以下的網站: http://61.219.235.182:101/taiwan/msdn/library/2002/Apr-2002/whitepaper/vbtchCreatingControlArraysInVisualBasicNETVisualCNET.htm 這網站裡面寫的是在Forms內產生動態的Button。我略改了一下來用做我產生RadioButton控制項以及處理的類別。RadioButtonArray類別的程式如下: class RadioButtonArray : System.Collections.CollectionBase { private GroupBox thisGroupBox = new GroupBox(); int startX = 0, startY = 0; public RadioButtonArray(GroupBox myGroupBox) { thisGroupBox = myGroupBox; this.AddNewRadioButton(); } public RadioButtonArray(GroupBox myGroupBox, string radioBtnString) { thisGroupBox = myGroupBox; this.AddNewRadioButton(radioBtnString); } public RadioButtonArray(GroupBox myGroupBox, int positionX, int positionY) { thisGroupBox = myGroupBox;

撲克牌系統

目前正在寫個撲克牌的程式,先是以十三支為應用的程式。希望裡面所寫出的class屆時可以運用到其他各種的撲克牌應用。 基本上,裡面的class我還是採取了以資料結構的方式來進行。主要的動作有: 1. 洗牌: 目前是採用多次數的兩兩交換方式進行。 2. 抽牌: 是將某一張牌從某個牌組拉出到另一個牌組,比如說打十三支時從你的牌中拉出為你的第一墩3張牌的部分,或是第二第三墩5張牌的部分。又如以後程式要寫成玩撿紅點,你牌打出去的動作,都可以為抽牌的動作。 3. 發牌: 等於是依序由主牌組抽牌(也就是都抽第一張牌)到各玩家手上的動作。 4. 判斷牌形,比較大小: 也就是判斷出你拉出的牌組是屬於哪一種,共分為: 同花順,鐵支,葫蘆,同花,順,三條,兩對,一對,烏龍等牌形。記錄大小部分,只記錄足夠資訊即可。比如說,順子方面只要記錄最大的那張牌即可。葫蘆或三條的部分,都記錄三條的部分的牌就可以。像同花,烏龍,則五張牌大小都得記錄。對子就必記錄對子的部分跟非對子的牌大小都得記錄。 5. 切牌: 對於十三支一般而言,民間玩法都是在發牌者洗完牌之後允許其他玩家切牌,一般而言,是以發牌者為守來看尾家切牌。而像撿紅點就必須尾家切牌而且可以看他自己切的牌是哪一支牌,其他玩家不可以看。 6. 聰明選牌: 根據以前我的經驗,把手上的牌列出可能可以打的牌種與大小,供玩家選用。這項可能比較有挑戰性。程式如何實現,必須要好好構思。當然可以的話,甚至可以讓程式學習以往獲勝的機率,讓獲勝機率高的牌形組合在前面些讓玩家選擇。當然程式絕不能有偷看別家目前的牌來給玩家選擇的可能性。不然會完全失去遊戲公平性。 7. 遊戲界面與美工: 這個提供了剛開始玩家在熟悉遊戲時,跟爾後繼續玩的興趣很大的重要性。畢竟不夠友善的遊戲都是很快被淘汰的。 8. 網路化: 目前我的程式都是在單機上進行撰寫,玩家當然是自己跟自己,在聰明選牌還沒做出時,玩家還無法跟電腦玩。當然,如果聰明選牌法還未做出時,有網路的話就可以進行遊戲了。反正電腦只要負責最後仲裁誰贏誰輸即可。網路化其實會牽涉到很多網路上的課題,一個是公平與安全性。另一個是記錄以往戰績,必要的話還必須把資料庫方式也用上。 以上是目前我程式撰寫牧錢想的到的規劃。這算是大綱雛形。細節跟以後遇到問題時必須修正時會繼續修正或增補之。

C# 不規則陣列不定長度設定方法

嘗試使用不規則陣列,但是其長度未定。 根據文件不規則陣列,可以寫如下: int[][] jaggedArray2 = new int[][] { new int[] {1,3,5,7,9}, new int[] {0,2,4,6}, new int[] {11,22} }; 但是,今天如果jaggedArray2[0],[1],[2]的陣列實際上長度未定,初始為null。 可以寫成, int[][] jaggedArray2 = new int[][] { new int[] {}, new int[] {}, new int[] {} }; 如果要變更長度, 則可以使用Array.Resize的方式進行,比如: Array.Resize(ref jaggedArray2[0], 2);

寫程式的興趣

在科學園區工作了幾年之後。疲憊的感覺一直襲擊著我,這時候想起了我從國中開始感到興趣的事---寫程式。 我是大家所謂的五年級生。國中的時候,個人電腦才剛剛暝芽。那時候,可能運氣好,學校有機會派人參加在師大分部所辦的研習課,詳細名稱早就忘了,只記得那時候上課內容是BASIC, 我平生所寫所練習的第一個程式是寫出九九乘法表。那個時候就覺得好神奇。高中後,對於電腦的印象是同學家裡的Apple II。程式等於是完全停頓。升大學時,那時候選填志願,大部分的人還是照著當時的明星科系明星大學選填,電機,機械,資訊,大約是這樣的順序。那時候到了清大的動機系。可是,也是從大一也是有程式的課程。那時候,從Pascal, C開始。甚至受到室友影響,根本直接選擇原文書來看,在學校還沒開始教之前就開始學著寫了。真懷念那一段時光。 研究所之後,Windows型式開始大幅流行,網路也開始在學術網路開始流行,IRC進展到BBS,WWW興起,這時候開始完全落後了。服完兵役,工作也選擇跟自己比較相關的行業,更是完全脫離這行了。現在,因為越做越提不起興趣,公司似乎也沒有重用的意思。想了一想,乾脆回到可以讓自己燃起熱情的事。其實以我的年紀,這是很冒險的事。可是我已經著手做了。 希望未來可以開花結果,起碼是很開心得過下去就是。