【c#】24点游戏的实现(可存档且局域网互联)
? ? ? ? ??
(更新,附上此款游戲的源代碼供大家學習吧!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中的符號,所以要用正則方法將數字與算數符分離,因為括號乘除加減等的優先級不同,所以要分別將其按不同的優先級入棧,在計算。具體可見我的代碼中的類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:大家有什么問題可以留言一起討論哈!!!
總結
以上是生活随笔為你收集整理的【c#】24点游戏的实现(可存档且局域网互联)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 开始学c++,fighting
- 下一篇: c#如何实现在两个窗体(Form)间传输