一:在源碼管理器中打開(kāi)VS
注意,下文這樣的打開(kāi)方式是在 TFS 的源碼服務(wù)器中打開(kāi)解決方案。如果我們使用 SVN,則直接在硬盤(pán)上打開(kāi)解決方案就可以了。
打開(kāi)VS:
然后按上圖中的步驟1和2(雙擊2處),打開(kāi)我們的解決方案,如下:
注意,雙擊紅框,會(huì)顯示Solution Explorer。
我們?cè)谏弦还?jié)中,只是創(chuàng)建了打老鼠的解決方案,還完全沒(méi)有編寫(xiě)任何代碼。這個(gè)時(shí)候運(yùn)行解決方案一下(記得嗎,菜單中Debug->Start without debug,或Ctrl+F5。我喜歡用快捷鍵,而且你也必須快速熟悉起這些快捷鍵,使用快捷鍵可以節(jié)約時(shí)間)。
運(yùn)行起來(lái)后,是一個(gè)空白的Windows窗體,如下:
二:導(dǎo)入資源文件
現(xiàn)在我們就要在這個(gè)窗體上打老鼠了。
打老鼠這個(gè)游戲的最終效果圖如下:
為了完成這個(gè)游戲,有兩個(gè)圖片資源要用到(請(qǐng)自行右鍵下載):
bg.png
mouse.png
請(qǐng)把這兩個(gè)圖片保存到我們的項(xiàng)目的根目錄下,請(qǐng)查看下節(jié)視頻進(jìn)行圖片資源的導(dǎo)入及背景設(shè)置:
最后,我們看到的整個(gè)VS畫(huà)面應(yīng)該是這樣的:
三:實(shí)現(xiàn)最簡(jiǎn)單的功能
接下來(lái),我們就該簡(jiǎn)單的把打老鼠游戲的整個(gè)編碼實(shí)現(xiàn)思想說(shuō)一下了。我們看到背景上有11個(gè)老鼠洞:
1:首先給11個(gè)老鼠洞都覆蓋上老鼠形象;
2:把全體老鼠形象設(shè)置為不可見(jiàn);
3:給程序設(shè)定一個(gè)始終,讓時(shí)鐘每隔1秒隨機(jī)顯示一個(gè)老鼠形象;
四:視頻
非公開(kāi),請(qǐng)聯(lián)系 最課程(www.zuikc.com)
五:代碼講解
現(xiàn)在,我們來(lái)看看視頻中的代碼到底是什么意思:
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 用來(lái)存放全部的老鼠圖片;
_timer 是一個(gè)計(jì)時(shí)器;
_random 在這里代表了一個(gè)隨機(jī)數(shù);
_oldMouse 在這里當(dāng)前正在出現(xiàn)的那只老鼠;
_score 用于記錄分?jǐn)?shù),暫時(shí)還沒(méi)起到作用;
再看下面這段代碼:
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 表示這是一個(gè)循環(huán),我們需要把所有的老鼠都加入到 _mouses 這個(gè)變量中去,因?yàn)橐婚_(kāi)始這個(gè)變量中是空的,沒(méi)有老鼠的;
_timer.Interval = 1000; 表示為定時(shí)器的時(shí)間設(shè)置為 1 秒;
_timer.Tick += _timer_Tick; 表示定時(shí)器定時(shí)時(shí)間到的時(shí)候,要觸發(fā)一個(gè)函數(shù),這個(gè)函數(shù)叫 _timer_Tick;
_timer.Start(); 表示定時(shí)器開(kāi)始計(jì)時(shí)吧;
再看定時(shí)器觸發(fā)的這個(gè)函數(shù):
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;
}
在這個(gè)函數(shù)里面的邏輯就是,如果當(dāng)前有老鼠正在顯示著,就應(yīng)該先隱藏,讓另外一只老鼠出現(xiàn);
運(yùn)行程序,我們就會(huì)發(fā)現(xiàn)每隔 1 秒,就會(huì)隨機(jī)出現(xiàn)一只老鼠;
現(xiàn)在,我們繼續(xù)完善代碼,要實(shí)現(xiàn):當(dāng)老鼠形象出現(xiàn)的時(shí)候,鼠標(biāo)擊中了老鼠則計(jì)分+1,并顯示出來(lái);
實(shí)際上,只要修改上面的 foreach 循環(huán)中的代碼為:
foreach (Control item in this.Controls)
{
if(item is PictureBox)
{
_mouses.Add(item as PictureBox);
item.MouseDoubleClick += item_MouseDoubleClick;
}
}
即,為老鼠增加鼠標(biāo)雙擊事件,其事件方法為:
void item_MouseDoubleClick(object sender, MouseEventArgs e)
{
_score++;
_labelScore.Text = _score.ToString();
}
這就完成了“鼠標(biāo)擊中了老鼠則計(jì)分+1,并顯示出來(lái)”,我們看到,上面多了個(gè)沒(méi)見(jiàn)過(guò)的變量 _labelScore,它是怎么出現(xiàn)的呢,看視頻。
六:截止目前為止的打老鼠知識(shí)點(diǎn)
到目前為止,我們實(shí)現(xiàn)的打老鼠游戲雖然簡(jiǎn)單,卻已經(jīng)包含了很多的語(yǔ)法知識(shí),如下11個(gè)知識(shí)點(diǎn):
接下來(lái),我們就需要一一學(xué)習(xí)一下這些知識(shí)。(注意,在本節(jié)下面的詳細(xì)敘述當(dāng)中,各個(gè)知識(shí)點(diǎn)我會(huì)只講到當(dāng)前必須知道的程度,隨著課程的深入會(huì)逐步補(bǔ)充各個(gè)知識(shí)點(diǎn)的深入闡述。)
1和2:被引用的命名空間以及定義當(dāng)前的類的命名空間
把類在歸類一下,就叫命名空間。
命名空間和文件夾的關(guān)系?沒(méi)有關(guān)系!當(dāng)然,常用的做法是,一個(gè)命名空間就使用一個(gè)文件夾。
如果我們?cè)诋?dāng)前類中要引用到別的類,則方便的做法是把別的類所在的命名空間用using引入進(jìn)來(lái),如上圖的1;
反過(guò)來(lái),我們現(xiàn)在在編寫(xiě)打老鼠這個(gè)類,就需要為當(dāng)前的這個(gè)類定義一個(gè)命名空間,如上圖的2;
3和4:類和實(shí)例
在C#的世界中,代碼是以類為單位組織起來(lái)的,我們可以看到:
public partial class Form1 : Form
Form1就是一個(gè)類。關(guān)于一個(gè)類的最簡(jiǎn)單的形式如下:
class Mouse
{
}
至于打老鼠游戲中的Form1這個(gè)類聲明當(dāng)中的partial和后面的冒號(hào)后的內(nèi)容,我們暫時(shí)可以不管它。
類和文件的關(guān)系?沒(méi)有關(guān)系!當(dāng)然,常用的做法是,一個(gè)類使用一個(gè)文件。
對(duì)類使用new關(guān)鍵字,就產(chǎn)生了類的一個(gè)實(shí)例,如:
Mouse aMouse = new Mouse();
5和10和11. 變量
在類以內(nèi),方法以外,沒(méi)有修飾static的變量,為實(shí)例變量;
方法以內(nèi)的變量,叫做局部變量;
變量在方法的聲明內(nèi),叫做方法參數(shù);
變量(或者說(shuō)變量名),代表的就是某個(gè)你要操作的對(duì)象。
6和9. 方法
方法定義了類的行為,也就是類可以干什么。
有一類特殊的方法叫做構(gòu)造器。它是在產(chǎn)生類的實(shí)例的時(shí)候首先被調(diào)用的。
7. 循環(huán)結(jié)構(gòu)
foreach,for,while,都屬于循環(huán)結(jié)構(gòu),光看代碼,大家應(yīng)該都能準(zhǔn)確理解起意思,不在贅述。
8. 條件結(jié)構(gòu)
If屬于條件結(jié)構(gòu),很簡(jiǎn)單,不再贅述。
同屬于條件結(jié)構(gòu)的還有switch和三元運(yùn)算符,等我們使用到的時(shí)候一并講解,這里不再贅述。
微信掃一掃,關(guān)注最課程,獲取每日一練
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注