C#零基礎入門03:打老鼠初級

來源:互聯網
上載者:User

標籤:

一:在源碼管理器中開啟VS

注意,下文這樣的開啟檔案是在 TFS 的源碼伺服器中開啟解決方案。如果我們使用 SVN,則直接在硬碟上開啟解決方案就可以了。

開啟VS:

然後按中的步驟1和2(雙擊2處),開啟我們的解決方案,如下:

注意,雙擊紅框,會顯示Solution Explorer。

我們在上一節中,只是建立了打老鼠的解決方案,還完全沒有編寫任何代碼。這個時候運行解決方案一下(記得嗎,菜單中Debug->Start without debug,或Ctrl+F5。我喜歡用快速鍵,而且你也必須快速熟悉起這些快速鍵,使用快速鍵可以節約時間)。

運行起來後,是一個空白的Windows表單,如下:

 

二:匯入資源檔

現在我們就要在這個表單上打老鼠了。

打老鼠這個遊戲的最終如下:

為了完成這個遊戲,有兩個圖片資源要用到(請自行右鍵下載):

bg.png

mouse.png

請把這兩個圖片儲存到我們的項目的根目錄下,請查看下節視頻進行圖片資源的匯入及背景設定:

最後,我們看到的整個VS畫面應該是這樣的:

 

三:實現最簡單的功能

接下來,我們就該簡單的把打老鼠遊戲的整個編碼實現思想說一下了。我們看到背景上有11個老鼠洞:

1:首先給11個老鼠洞都覆蓋上老鼠形象;

2:把全體老鼠形象設定為不可見;

3:給程式設定一個始終,讓時鐘每隔1秒隨機顯示一個老鼠形象;

 

四:視頻

非公開,請聯絡 最課程(www.zuikc.com)

 

五:代碼講解

現在,我們來看看視頻中的代碼到底是什麼意思:

        private List<PictureBox> _mouses = new List<PictureBox>();
        private Timer _timer = new Timer();
        private Random _random = new Random();
        private PictureBox _oldMouse;
        private int _score = 0;

在這裡,我們定義了一些變數,其中:

  _mouses 用來存放全部的老鼠圖片;
  _timer 是一個計時器;
  _random 在這裡代表了一個隨機數;
  _oldMouse 在這裡當前正在出現的那隻老鼠;
  _score 用於記錄分數,暫時還沒起到作用;

再看下面這段代碼:

            foreach (Control item in this.Controls)
            {
                if(item is PictureBox)
                {
                    _mouses.Add(item as PictureBox);
                }
            }

            _timer.Interval = 1000;
            _timer.Tick += _timer_Tick;
            _timer.Start();

  foreach 表示這是一個迴圈,我們需要把所有的老鼠都加入到 _mouses 這個變數中去,因為一開始這個變數中是空的,沒有老鼠的;
   _timer.Interval = 1000; 表示為定時器的時間設定為 1 秒;
   _timer.Tick += _timer_Tick; 表示定時器定時時間到的時候,要觸發一個函數,這個函數叫 _timer_Tick;
   _timer.Start(); 表示定時器開始計時吧;

再看定時器觸發的這個函數:

        void _timer_Tick(object sender, EventArgs e)
        {
            if(_oldMouse != null)
            {
                _oldMouse.Visible = false;
            }

            int index = _random.Next(1, 11);
            _oldMouse = _mouses[index];

            _oldMouse.Visible = true;
        }

在這個函數裡面的邏輯就是,如果當前有老鼠正在顯示著,就應該先隱藏,讓另外一隻老鼠出現;

運行程式,我們就會發現每隔 1 秒,就會隨機出現一隻老鼠;

現在,我們繼續完善代碼,要實現:當老鼠形象出現的時候,滑鼠擊中了老鼠則計分+1,並顯示出來;

實際上,只要修改上面的 foreach 迴圈中的代碼為:

            foreach (Control item in this.Controls)
            {
                if(item is PictureBox)
                {
                    _mouses.Add(item as PictureBox);
                    item.MouseDoubleClick += item_MouseDoubleClick;
                }
            }

即,為老鼠增加滑鼠雙擊事件,其事件方法為:

        void item_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            _score++;
            _labelScore.Text = _score.ToString();
        }

這就完成了“滑鼠擊中了老鼠則計分+1,並顯示出來”,我們看到,上面多了個沒見過的變數  _labelScore,它是怎麼出現的呢,看視頻。

 

六:截止目前為止的打老鼠知識點

到目前為止,我們實現的打老鼠遊戲雖然簡單,卻已經包含了很多的文法知識,如下11個知識點:

接下來,我們就需要一一學習一下這些知識。(注意,在本節下面的詳細敘述當中,各個知識點我會只講到當前必須知道的程度,隨著課程的深入會逐步補充各個知識點的深入闡述。)

1和2:被引用的命名空間以及定義當前的類的命名空間

把類在歸類一下,就叫命名空間。

命名空間和檔案夾的關係?沒有關係!當然,常用的做法是,一個命名空間就使用一個檔案夾。

如果我們在當前類中要引用到別的類,則方便的做法是把別的類所在的命名空間用using引入進來,如的1;

反過來,我們現在在編寫打老鼠這個類,就需要為當前的這個類定義一個命名空間,如的2;

3和4:類和執行個體

在C#的世界中,代碼是以類為單位組織起來的,我們可以看到:

public partial class Form1 : Form

Form1就是一個類。關於一個類的最簡單的形式如下:

class Mouse

{

}

至於打老鼠遊戲中的Form1這個類聲明當中的partial和後面的冒號後的內容,我們暫時可以不管它。

類和檔案的關係?沒有關係!當然,常用的做法是,一個類使用一個檔案。

對類使用new關鍵字,就產生了類的一個執行個體,如:

Mouse aMouse = new Mouse();

5和10和11. 變數

在類以內,方法以外,沒有修飾static的變數,為執行個體變數;

方法以內的變數,叫做局部變數;

變數在方法的聲明內,叫做方法參數;

變數(或者說變數名),代表的就是某個你要操作的對象。

6和9. 方法

方法定義了類的行為,也就是類可以幹什麼。

有一類特殊的方法叫做構造器。它是在產生類的執行個體的時候首先被調用的。

7. 迴圈結構

foreach,for,while,都屬於迴圈結構,光看代碼,大家應該都能準確理解起意思,不在贅述。

8. 條件結構

If屬於條件結構,很簡單,不再贅述。

同屬於條件結構的還有switch和三元運算子,等我們使用到的時候一併講解,這裡不再贅述。

掃一掃,關注最課程,擷取每日一練

C#零基礎入門03:打老鼠初級

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.