(更新,附上此款遊戲的原始碼供大家學習吧!http://download.csdn.net/detail/gshengod/5774531)
lz辛苦考上了北郵的研究生,剛進入實驗室,就接到了一個棘手的任務,被要求編寫一個24點遊戲,而且要可存檔可區域網路互聯。對於我這個剛剛開始學習編程的菜鳥是個不小的挑戰。好了,現在進入正題,大牛們可無視,小菜鳥們可以看過來,我將分享我的學習曆程。
首先是用vs2008進行介面方面的設計,建立form類的視窗,把工具箱開啟,這樣就可以實現向裡拖拉一些按鈕。然後可以自己搞一些圖片加到背景image中,這樣可以讓程式看起來更好看。如。
接下來是比較複雜的代碼部分了。
先講level1,是實現機器自動計算實現24點的運算。用random函數,可以實現出現四個隨機數,我們要做的就是將它們加上括弧或是加減乘除的按鈕,讓他們結果為24。這個主要是用的遍曆的思想,因為我們可以將式子分為兩種,一種是((a*b)+c+d)但括弧形式。一種是兩括弧形式,(a+b)*(c-d)形式。
具體計算方法詳見代碼中的Randomnew.cs類。levle1
level2是要求我們在得知四個數位情況下,輸入運算式,看是否為24.這個因為電腦讀不動string中的符號,所以要用正則方法將數字與算數符分離,因為括弧乘除加減等的優先順序不同,所以要分別將其按不同的優先順序入棧,在計算。具體可見My Code中的類Algorithm.cs,這部分也可到這裡下載看下http://download.csdn.net/detail/gshengod/5738011。至於存檔讀檔,要用的資料流的知識
FileStreamfs=newFileStream("D:\\workplace\\save.txt",FileMode.Create,FileAccess.Write);
StreamWriter sw = new StreamWriter(fs,System.Text.Encoding.GetEncoding("GB2312")); 。還有就是timer控制項,對於倒計時方面主要代碼
int time = int.Parse(arr[1]);
lefttime = time;
this.timer1.Start();
this.label7.Text = "剩餘時間" + lefttime.ToString() ;
lefttime--;
if (lefttime == 0)
{
Randomnew b1 = new Randomnew();
string answer = b1.compute(label2.Text, label3.Text, label4.Text, label5.Text);
MessageBox.Show("time out,正確答案是" + answer);
level2圖片如下:
level3則是關於區域網路互聯的知識,主要是socket編程方面的應用,可以下載這個作為參考,這個代碼寫的很好http://download.csdn.net/detail/gshengod/5738067。
嗯,就是這些吧,我還在改一些小bug,過兩天會吧代碼完整版發上來分享。
ps:大家有什麼問題可以留言一起討論哈!!!