我製作的第一個C#小遊戲(讀心術)

來源:互聯網
上載者:User

       寫軟體首當其衝的是演算法,可能是我的數學頭腦實在不咋地,GGJJ給我講了半天都沒明白,最後對著人家用JAVA寫好的軟體楞了半天,總算是把道理想明白了。
      軟體編寫期間遇到不少問題,可能是我唯讀了《C#入門經典》(而且半途還荒廢了),本來想去網上找找源碼,看看別人的思路,結果找了半天也只有編譯好的,總不能讓我看反組譯碼後的代碼吧...|| 最後只能不會用的控制項等價替換,一個方法不行用另一個。條條大路都能溜達到羅馬嘛~
      程式寫完了,這裡給大家一點提醒,也當是給自己留個映像
1.隨機數產生方法:
以下有兩段代碼
       protected void randomText()
        {
            int count = 1;
            int Ascran = 0;
            Random ran = new Random();
            special = pic.Asc[ran.Next(11)];
            for (int i = 0; i < 9; i++)
            {

                for (int j = 0; j < 11; j++)
                {
                    Ascran = Convert.ToInt32(ran.Next(11));
                    ........
                }
            }
        }

另一段:

       protected void randomText()
        {
            int count = 1;
            int Ascran = 0;
            
            special = pic.Asc[ran.Next(11)];
            for (int i = 0; i < 9; i++)
            {
                for (int j = 0; j < 11; j++)
                {
                     Random ran = new Random();
                    Ascran = Convert.ToInt32(ran.Next(11));
                    ........
                }
            }
        }

    看似這兩段代碼都沒什麼問題,其實兩者相差甚遠。看過《電腦程式設計藝術-隨機數產生》的可能知道電腦的偽隨機,編譯一下你就能發現第一段的產生的隨機數差異很大,而第二段的隨機數來來去去都差不多,甚至一下99個都一樣
    這是為什麼呢?小弟看《電腦程式設計藝術》也是昏頭昏腦,如有小錯還請見諒。電腦的隨機數都是通過一定演算法得來的,與時間來一起隨機是最最能接近真隨機的,但是這樣的隨機無法指定最大數,所以C#中有一個重載方法,random對象有一個next方法可以指定最大數,但是這個方法已經不是和時間來隨機了。所以當初始化時提供形參相同時很容易產生隨機出來的數字相同。
    所以我們必須把初始化隨機數放在迴圈外面,這樣就能讓後面的“隨機數”和前面的差異開。為什麼初始化後可以變得不同可以看看《電腦程式設計藝術》一書中對馮-諾依曼隨機法的評價。

另外用到的知識點有
2.控制項數組的試用,這次我用的是label數組
3.tabcontrol和tabpage的知識(因為《C#入門經典》對這些資料只是一筆帶過,害得我網上找得好苦,有錢了一定去買進階編程)

廢話不多說了,附上:
http://cid-856b7a1fbf560755.skydrive.live.com/self.aspx/My%20free%20softwares/ReadMind.rar

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.