VB2010入門教程4:創(chuàng)建匹配游戲_第1頁
VB2010入門教程4:創(chuàng)建匹配游戲_第2頁
VB2010入門教程4:創(chuàng)建匹配游戲_第3頁
VB2010入門教程4:創(chuàng)建匹配游戲_第4頁
VB2010入門教程4:創(chuàng)建匹配游戲_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、教程 4:創(chuàng)建匹配游戲Visual Studio 2010在本教程中,將生成一個匹配游戲,在該游戲中,玩家必須匹配隱藏的圖標對。 您將學習如何:· 使用 List 對象來包含對象。· 使用 foreach 循環(huán)(Visual C# 中)或 For Each 循環(huán)(Visual Basic 中)。· 使用引用變量跟蹤窗體的狀態(tài)。· 生成可用于多個對象的事件處理程序。· 使計時器啟動時正好激發(fā)一次。當您完成時,程序?qū)㈩愃葡聢D所示。在本教程中創(chuàng)建的游戲 說明在本教程中,同

2、時涉及 Visual C# 和 Visual Basic,因此請關(guān)注特定于您使用的編程語言的信息。相關(guān)主題標題說明步驟 1:創(chuàng)建項目并向窗體添加表通過創(chuàng)建項目并添加 TableLayoutPanel 控件開始操作。步驟 2:添加隨機對象和圖標列表添加 Random 對象和 List 對象,以創(chuàng)建圖標列表。步驟 3:向每個標簽分配一個隨機圖標向 Label 控件隨機分配圖標。步驟 4:向每個標簽添加一個 Click 事件處理程序添加一個 Click 事件處理程序,該處理程序更改被單擊的標簽的顏色。步驟 5:添加標簽引

3、用添加引用變量以跟蹤哪些標簽被單擊。步驟 6:添加計時器向窗體添加計時器。步驟 7:保持對可見保持圖標對可見(如果選擇了匹配的對)。步驟 8:添加方法以驗證玩家是否獲勝添加 CheckForWinner() 方法以驗證玩家是否獲勝。步驟 9:嘗試其他功能嘗試其他功能,例如更改圖標和顏色、添加網(wǎng)格以及添加聲音。 嘗試使圖板變大并調(diào)整計時器。© 2016 Microsoft步驟 1:創(chuàng)建項目并向窗體添加表Visual Studio 2010創(chuàng)建匹配游戲的第一步是創(chuàng)建項目并向窗體添加表。創(chuàng)建項目并向窗體添加表1. 在“文件”菜單上,單擊“新建項目”。2. 如果

4、沒有使用 Visual Studio 學習版,您需要先選擇一種語言。 從“安裝的模板”列表中選擇“C#”或“Visual Basic”。3. 單擊“Windows 窗體應(yīng)用程序”圖標,然后鍵入“匹配游戲”作為名稱。4. 設(shè)置窗體屬性:a. 將窗體的“Text”屬性更改為“匹配游戲”。b. 通過使用“Size”屬性將大小更改為 550 像素寬、550 像素高,或者拖動直到您在集成開發(fā)環(huán)境 (IDE) 的左下角看到合適的大小。5. 將 TableLayoutPanel 控件從工具箱中拖出,然后設(shè)置其屬性:a. 將“BackColor”屬性設(shè)置為“CornflowerB

5、lue”。 (在顏色選取器中選擇“Web”選項卡可以查看顏色名稱。)b. 通過單擊屬性旁邊的下拉按鈕并單擊大的中間按鈕,將“Dock”屬性設(shè)置為“Fill”。c. 單擊 TableLayoutPanel 右上角的三角形按鈕,以顯示任務(wù)菜單。d. 單擊“添加行”兩次以多添加兩行,然后單擊“添加列”兩次以再添加兩列。e. 單擊“編輯行和列”打開“列和行樣式”窗口。 選擇每一列,單擊“百分比”按鈕并將每個列的寬度設(shè)置為總寬度的 25%。 然后從窗口頂部的下拉框選擇“行”,并將每個行的高度設(shè)置為 25%。 單擊“確定”按鈕。TableLayoutPanel 現(xiàn)在

6、應(yīng)該有十六個相等大小的方塊單元格。6. 確保在窗體編輯器中選擇了該 TableLayoutPanel。 選中后,打開工具箱,然后雙擊“Label”以將 Label 控件添加到左上方的方塊中。 現(xiàn)在,Label 控件在 IDE 中應(yīng)處于選中狀態(tài)。 設(shè)置其屬性:a. 將“BackColor”屬性設(shè)置為“CornflowerBlue”。b. 將“AutoSize”屬性設(shè)置為“False”。c. 將“Dock”屬性設(shè)置為“Fill”。d. 通過單擊“TextAlign”屬性旁的下拉按鈕并單擊中間的按鈕,將該屬性設(shè)置為“MiddleCenter

7、”。e. 單擊“Font”屬性。 應(yīng)顯示一個省略號按鈕。f. 單擊該省略號按鈕,并將字體設(shè)置為“Webdings 72 point Bold”。g. 將“Text”屬性設(shè)置為字母“c”。TableLayoutPanel 中的左上角單元格現(xiàn)在應(yīng)包含一個在藍色背景上居中的大黑色框。 說明Webdings 字體是 Microsoft Windows 操作系統(tǒng)附帶的圖標字體。 在匹配游戲中,玩家需要匹配圖標對,因此您使用此字體顯示要匹配的圖標。 不要在“Text”屬性中輸入“c”,請嘗試輸入其他字母以查看顯示哪些圖標。 感嘆號是一個蜘蛛,大寫 N 是一

8、個眼球,而逗號是一個辣椒。7. 選擇 Label 控件并進行復制。 (按 Ctrl+C,或從“編輯”菜單中單擊“復制”。)然后粘貼。 (按 Ctrl+V,或從“編輯”菜單中單擊“粘貼”。)在 TableLayoutPanel 中的第二個單元格中出現(xiàn)另一個標簽。 再次粘貼它,在第三個單元格中會出現(xiàn)另一個標簽。 一直粘貼 Label 控件,直到填充完所有單元格。 說明如果粘貼次數(shù)太多,IDE 會將一個新行添加到該 TableLayoutPanel,以便具有可添加新 Label 控件的位置。

9、 您可以撤消此操作。 若要移除新單元格,請按 Ctrl+Z 或在“編輯”菜單上單擊“撤消”。8. 現(xiàn)在,窗體布局已設(shè)置完畢。 其外觀類似于下圖。9. 初始匹配游戲窗體10. 繼續(xù)或查看· 若要轉(zhuǎn)到下一個教程步驟,請參見步驟 2:添加隨機對象和圖標列表。· 若要返回概述主題,請參見教程 4:創(chuàng)建匹配游戲。© 2016 Microsoft步驟 2:添加隨機對象和圖標列表Visual Studio 2010您需要使用兩個 new 語句創(chuàng)建兩個對象并將它們添加到您的窗體。 第一個是 Random

10、0;對象,類似于數(shù)學測驗游戲中使用的對象。 第二個是一個新對象:List 對象。添加隨機對象和圖標列表1. 在添加以下代碼以創(chuàng)建列表之前,請考慮它的運行方式。C#public partial class Form1 : Form / Use this Random object to choose random icons for the squares Random random = new Random(); / Each of these letters is an interesting icon / in the Webdings font, / and each

11、 icon appears twice in this list List<string> icons = new List<string>() "!", "!", "N", "N", ",", ",", "k", "k", "b", "b", "v", "v", "w", "w", "

12、;z", "z" ;2. 通過右擊“解決方案資源管理器”中的“Form1.cs”,然后從菜單中單擊“查看代碼”,轉(zhuǎn)到代碼編輯器。 開始鍵入上一步中所示的代碼。 如果編寫 Visual C# 代碼,請確保將代碼放在左大括號后面,緊靠類聲明 (public partial class Form1 : Form) 之后。 如果編寫 Visual Basic 代碼,請將代碼放在緊靠類聲明 (Public Class Form1) 之后。3. 添加 List 對象時,請仔細查看打開的“IntelliSense”窗口。

13、0;下面是一個 Visual C# 示例。 (如果在 Visual Basic 中添加列表,會顯示類似文本。)“IntelliSense”窗口 說明如果您分小段查看代碼,則理解會顯得更簡單。 程序可以使用 List 對象跟蹤多個項目。 列表可以包含數(shù)字、true/false 值、文本或其他對象。 您甚至可以有一個包含其他 List 對象的 List 對象。 列表中的項目稱為“元素”,每個列表只包含一種元素。 所以數(shù)字列表只包含數(shù)字 - 您不能向其中添加文本。

14、0;同樣,您也不能向 true/false 值列表添加數(shù)字。 說明當使用 new 語句創(chuàng)建 List 對象時,需要指示您希望在其中存放的內(nèi)容。 這就是“IntelliSense”窗口頂部工具提示顯示列表中的元素類型的原因。 同樣,這也是 List<string>(Visual C# 中)和 List(Of String)(Visual Basic 中)的含義:它是一個包含字符串的 List 對象。 程序使用字符串來存儲文本,該文本是“IntelliSense”窗口

15、右側(cè)的工具提示將告訴您的文本。4. 請考慮為什么在 Visual Basic 中必須首先創(chuàng)建臨時數(shù)組,但在 Visual C# 中可以使用一條語句創(chuàng)建列表。 這是因為 Visual C# 語言具有“集合初始值設(shè)定項”。 在 Visual Basic 2010 中,可以使用集合初始值設(shè)定項。 但是,為了與以前版本的 Visual Basic 兼容,我們建議您使用上面的代碼。 說明當您將集合初始值設(shè)定項與 new 語句一同使用時,在創(chuàng)建新的 List 對象后,程序?qū)⑹褂么罄ㄌ杻?nèi)的任何內(nèi)容填充它。 在本例中,您

16、獲取名為“圖標”的字符串列表,該列表將初始化以包含十六個字符串。 其中每個字符串都是單個字母,它們都對應(yīng)于將在標簽中出現(xiàn)的圖標。 因此,游戲?qū)⒕哂幸粚Ω袊@號、一對大寫的 N 字母、一對逗號等。 List 對象將包含全部十六個字符串,每個對應(yīng)于 TableLayoutPanel 中的一個單元格。 說明在 Visual Basic 中,可以獲得相同的結(jié)果,但是字符串首先放入臨時數(shù)組中,該數(shù)組然后轉(zhuǎn)換為 List 對象。 數(shù)組類似于列表,但也有不同之處,例如數(shù)組在創(chuàng)建時具有固定大小。 列表可以根據(jù)需要收縮或增長

17、,這在此程序中非常重要。繼續(xù)或查看· 若要轉(zhuǎn)到下一個教程步驟,請參見步驟 3:向每個標簽分配一個隨機圖標。· 若要返回上一個教程步驟,請參見步驟 1:創(chuàng)建項目并向窗體添加表。© 2016 Microsoft步驟 3:向每個標簽分配一個隨機圖標Visual Studio 2010如果游戲始終將同一圖標隱藏在相同的位置,這就沒有挑戰(zhàn)性了。 您需要向窗體中的 Label 控件隨機分配圖標。 為此,需要添加 AssignIconsToSquares() 方法。向每個標簽分配一個隨機圖標1. 在添加以下代碼之前,請

18、考慮該方法的工作原理。 有一個新的關(guān)鍵字:foreach(Visual C# 中)或 For Each(Visual Basic 中)。 (其中有一行被故意注釋掉,本過程的結(jié)尾對此進行了解釋)。C#/ <summary>/ Assign each icon from the list of icons to a random square/ </summary>private void AssignIconsToSquares() / The TableLayoutPanel has 16 labels, / and the icon li

19、st has 16 icons, / so an icon is pulled at random from the list / and added to each label foreach (Control control in tableLayoutPanel1.Controls) Label iconLabel = control as Label; if (iconLabel != null) int randomNumber = random.Next(icons.Count); iconLabel.Text = iconsrandomNumber; / iconLabel.Fo

20、reColor = iconLabel.BackColor; icons.RemoveAt(randomNumber); 2. 按上一步驟所示,添加 AssignIconsToSquares() 方法。 可以將它放在緊靠步驟 2:添加隨機對象和圖標列表中添加的代碼的下方。在 AssignIconsToSquares() 方法中有一個新增功能:foreach 循環(huán)(在 Visual C# 中)或 For Each(在 Visual Basic 中)。 無論何時想要重復執(zhí)行相同操作,您都可以使用 foreac

21、h 循環(huán)。 在本例中,您要對 TableLayoutPanel 中的每個標簽執(zhí)行相同的語句,下面的代碼對此進行了解釋。C#foreach (Control control in tableLayoutPanel1.Controls) / The statements you want to execute / for each label go here / The statements use iconLabel to access / each label's properties and methods 說明其中使用了名稱 iconLabel 和控件

22、,因為它們具有描述性。 您可以將這些名稱替換為任何名稱,其作用完全相同(只要您更改了大括號內(nèi)每個語句中的名稱)。AssignIconsToSquares() 方法遍歷 TableLayoutPanel 中的每個 Label 控件,并對每個控件執(zhí)行相同的語句。 這些語句從您在步驟 2:添加隨機對象和圖標列表中添加的列表提取隨機圖標。 (這就是該列表中每個圖標都有兩個的原因,因此將向隨機 Label 控件分配一對圖標。)3. 一旦程序啟動,您就需要調(diào)用 AssignIconsToSquares() 

23、方法。 如果編寫 Visual C# 代碼,則在 Form1 構(gòu)造函數(shù)中緊靠對 InitializeComponent() 方法的調(diào)用下方添加一條語句,這樣窗體便可以調(diào)用新方法以在顯示之前對自身進行設(shè)置。C#public Form1() InitializeComponent(); AssignIconsToSquares();對于 Visual Basic,首先添加該構(gòu)造函數(shù),然后添加對該構(gòu)造函數(shù)的方法調(diào)用。 在剛創(chuàng)建的 AssignIconsToSquares() 方法之前,首先請鍵入代碼 Publi

24、c Sub New()。 當您按 Enter 鍵移動到下一行時,IntelliSense 應(yīng)顯示下面的代碼來完成該構(gòu)造函數(shù)。VBPublic Sub New() ' This call is required by Windows Form Designer InitializeComponent() ' Add any initialization after the InitializeComponent() callEnd Sub添加 AssignIconsToSquares() 方法調(diào)用以使構(gòu)造函數(shù)如下所示。VBPublic Sub New

25、() ' This call is required by Windows Form Designer InitializeComponent() ' Add any initialization after the InitializeComponent() call AssignIconsToSquares()End Sub4. 保存并運行程序。 它應(yīng)該顯示一個窗體,其中每個標簽都分配了隨機圖標。5. 關(guān)閉程序,然后重新運行。 現(xiàn)在每個標簽都分配了不同的圖標,如下圖所示。具有隨機圖標的匹配游戲6. 現(xiàn)在停止該程序,并在 foreach 

26、;循環(huán)中取消注釋該代碼行。C#iconLabel.ForeColor = iconLabel.BackColor;7. 單擊“全部保存”工具欄按鈕保存您的程序,然后運行該程序。 圖標看起來消失了 - 只顯示藍色背景。 但是,圖標是隨機分配的,仍然存在。 因為圖標與背景顏色相同,所以它們不可見。繼續(xù)或查看· 若要轉(zhuǎn)到下一個教程步驟,請參見步驟 4:向每個標簽添加一個 Click 事件處理程序。· 若要返回上一個教程步驟,請參見步驟 2:添加隨機對象和圖標列表。© 2016 Microsoft步驟 4:向每個標簽添加一個 Click 事件

27、處理程序Visual Studio 2010匹配游戲的運行原理如下所示:1. 當玩家單擊其中一個帶有隱藏圖標的方塊時,程序通過將圖標顏色更改為黑色來向玩家顯示該圖標。2. 然后玩家單擊另一個隱藏的圖標。3. 如果圖標互相匹配,則它們保持可見。 如果不匹配,則兩個圖標都會再次隱藏。為了使程序按此方式運行,您需要添加一個 Click 事件處理程序以更改所單擊的標簽的顏色。向每個標簽添加一個 Click 事件處理程序1. 轉(zhuǎn)到 Windows 窗體設(shè)計器,然后單擊第一個 Label 控件以將其選中。 然后,在單擊其他每個標簽時按住 Ctrl 鍵,以將它們選中。

28、 確保選中每個標簽。2. 然后,轉(zhuǎn)到“屬性”窗口中的“事件”頁。 向下滾動到 Click 事件,在框中鍵入“l(fā)abel_Click”,如下圖所示。顯示 Click 事件的“屬性”窗口3. 按 Enter。 IDE 將稱為 label_Click() 的 Click 事件處理程序添加到代碼中,并將其掛鉤到每個標簽。4. 填寫其余代碼,如下所示:C#/ <summary>/ Every label's Click event is handled by this event handler/ </summary>/

29、<param name="sender">The label that was clicked</param>/ <param name="e"></param>private void label_Click(object sender, EventArgs e) Label clickedLabel = sender as Label; if (clickedLabel != null) / If the clicked label is black, the player clicked / an i

30、con that's already been revealed - / ignore the click if (clickedLabel.ForeColor = Color.Black) return; clickedLabel.ForeColor = Color.Black;  說明您可以從“創(chuàng)建數(shù)學測驗”教程識別事件處理程序頂部的 object sender。 您將不同的 Label 控件 Click 事件與單個事件處理程序方法掛鉤,因此無論用戶單擊哪個標簽,都調(diào)用同一方法。 該方法需要知道單擊了哪個標簽,因此它使用該

31、 Label 控件的名稱“發(fā)送方”。 該方法的第一行告訴程序,它并不只是一個對象,而是專門的 Label 控件,它使用名稱“clickedLabel”訪問其屬性和方法。該方法首先檢查是否已將“clickedLabel”成功從對象轉(zhuǎn)換(強制轉(zhuǎn)換)為 Label 控件。 如果不成功,它具有一個 null 值 (C#) 或 Nothing 值 (Visual Basic),您不需要執(zhí)行該方法中的其余代碼。 接下來,該方法使用“ForeColor”屬性檢查被單擊的標簽的文本顏色。 如果已經(jīng)為黑色,則該圖標已被單擊,因此該方

32、法完成。 (這就是返回語句的作用:它告訴程序停止執(zhí)行該方法。)如果該圖標尚未被單擊,它會將其文本顏色更改為黑色。5. 保存并運行程序。 您應(yīng)該看到一個背景為藍色的空窗體。 在窗體中單擊,其中一個圖標應(yīng)變?yōu)榭梢姟?#160;繼續(xù)在窗體中的不同位置單擊。 當單擊圖標時,它們應(yīng)顯示。繼續(xù)或查看· 若要轉(zhuǎn)到下一個教程步驟,請參見步驟 5:添加標簽引用。· 若要返回上一個教程步驟,請參見步驟 3:向每個標簽分配一個隨機圖標。© 2016 Microsoft步驟 5:添加標簽引用Visual Studio 2010程序需要跟蹤玩家單擊了

33、哪些 Label 控件。 在第一個標簽被單擊后,程序顯示該標簽的圖標。 在第二個標簽被單擊后,程序需要同時顯示兩個圖標很短的時間,然后再次使這兩個圖標不可見。 程序?qū)⑹褂靡米兞扛櫟谝淮魏偷诙畏謩e單擊了哪個 Label 控件。添加標簽引用1. 通過使用下面的代碼向窗體中添加標簽引用。C#public partial class Form1 : Form / firstClicked points to the first Label control / that the player clicks, but it wil

34、l be null / if the player hasn't clicked a label yet Label firstClicked = null; / secondClicked points to the second Label control / that the player clicks Label secondClicked = null; 說明引用變量看上去類似于用來向窗體添加對象(如 Timer 對象、List 對象和 Random 對象)的語句。 但是,這些語句不會導致窗體中顯示兩個額外

35、的 Label 控件,因為這兩個語句中沒有任何一個語句具有 new。 而沒有 new 就不能創(chuàng)建對象。 這就是將 firstClicked 和 secondClicked 稱為引用變量的原因:它們只跟蹤(或引用)Label 對象。 說明當某變量不跟蹤對象時,它設(shè)置為特殊的值:null(Visual C# 中)或 Nothing(Visual Basic 中)。 因此,當程序啟動時,firstClicked 和 secondCl

36、icked 都設(shè)置為 null 或 Nothing,這意味著該變量不會跟蹤任何內(nèi)容。2. 修改 Click 事件處理程序,以使用新的 firstClicked 引用變量。 移除 label_Click() 事件處理程序方法中的最后一個語句 (clickedLabel.ForeColor = Color.Black;),并將它替換為下面的 if 語句。 (確保包含了注釋和大括號之間的所有內(nèi)容。)C#/ <summary>/ Every label's Cli

37、ck event is handled by this event handler/ </summary>/ <param name="sender">The label that was clicked</param>/ <param name="e"></param>private void label_Click(object sender, EventArgs e) Label clickedLabel = sender as Label; if (clickedLabel != nul

38、l) / If the clicked label is black, the player clicked / an icon that's already been revealed - / ignore the click if (clickedLabel.ForeColor = Color.Black) return; / If firstClicked is null, this is the first icon / in the pair that the player clicked, / so set firstClicked to the label that th

39、e player / clicked, change its color to black, and return if (firstClicked = null) firstClicked = clickedLabel; firstClicked.ForeColor = Color.Black; return; 3. 保存并運行程序。 單擊其中一個 Label 控件,它的圖標將出現(xiàn)。4. 單擊下一個 Label 控件,并注意是否沒有任何反應(yīng)。 程序已跟蹤玩家單擊的第一個標簽,因此 firstClicked 不等于

40、 Visual C# 中的 null 或 Visual Basic 中的 Nothing。 當 if 語句檢查 firstClicked 以確定它是否等于 null 或Nothing 時,它發(fā)現(xiàn)它不等于,因而不會在 if 語句中執(zhí)行語句。 因此,只有被單擊的第一個圖標變?yōu)楹谏?,其他圖標是不可見的,如下圖所示。顯示一個圖標的匹配游戲繼續(xù)或查看· 若要轉(zhuǎn)到下一個教程步驟,請參見步驟 6:添加計時器。· 若要返回上一個教程步驟,請參見步驟 4

41、:向每個標簽添加一個 Click 事件處理程序。© 2016 Microsoft步驟 6:添加計時器Visual Studio 2010接下來,您要向匹配游戲中添加計時器。添加計時器1. 轉(zhuǎn)到 Windows 窗體設(shè)計器中的工具箱。 雙擊“Timer”(在“組件”類別中)并向窗體添加計時器,其圖標出現(xiàn)在窗體下方的灰框中,如下圖所示。Timer2. 單擊“timer1”圖標以選擇計時器。 將“Interval”屬性設(shè)置為 750,但將“Enabled”屬性保留設(shè)置為“False”。 “Interval”屬性通知計時器在計時周期之間等待的時間長度,因此,該屬

42、性通知計時器在觸發(fā)第一個 Tick 事件之前等待四分之三秒(750 毫秒)。 您不希望計時器在程序啟動時啟動。 而是在玩家單擊第二個標簽時使用 Start() 方法啟動計時器。3. 雙擊 Windows 窗體設(shè)計器中的 Timer 控件圖標以添加 Tick 事件處理程序,如下面的代碼所示。C#/ <summary>/ This timer is started when the player clicks / two icons that don't match,/ so it counts three quart

43、ers of a second / and then turns itself off and hides both icons/ </summary>/ <param name="sender"></param>/ <param name="e"></param>private void timer1_Tick(object sender, EventArgs e) / Stop the timer timer1.Stop(); / Hide both icons firstClicked.F

44、oreColor = firstClicked.BackColor; secondClicked.ForeColor = secondClicked.BackColor; / Reset firstClicked and secondClicked / so the next time a label is / clicked, the program knows it's the first click firstClicked = null; secondClicked = null;Tick 事件處理程序執(zhí)行三個操作:首先,通過調(diào)用 Stop() 方法停止計時

45、器。 然后,它使用兩個引用變量 firstClicked 和 secondClicked 來捕獲玩家單擊的兩個標簽,并再次使其圖標不可見。 最后,它將 firstClicked 和secondClicked 引用變量重置為 null(Visual C# 中)或 Nothing(Visual Basic 中)。 這一點很重要,因為這是該程序重置本身的方式。 現(xiàn)在,它不跟蹤任何 Label 控件,并已準備好再次捕獲玩家的第一次單擊。 說明T

46、imer 對象具有 Start() 方法和 Stop() 方法,分別用以啟動和停止計時器。 如果您在“屬性”窗口中將計時器的“Enabled”屬性設(shè)置為“True”,則只要程序開始運行,計時器就會開始計時。 但是,如果將該屬性保留設(shè)置為“False”,則在調(diào)用計時器的 Start() 方法之前,計時器不會開始計時。 說明通常,計時器會使用“Interval”屬性確定要在計時周期之間等待的毫秒數(shù),從而反復觸發(fā)其 Tick 事件。 您可能已經(jīng)注意到在 Tick 事件中調(diào)用計時器的 

47、;Stop() 方法的方式。 它會將計時器置于“單觸發(fā)模式”,這樣,當調(diào)用 Start() 方法時,它會等待間隔的時間長度并觸發(fā)單一 Tick 事件。4. 若要查看正在使用的新計時器,請轉(zhuǎn)至代碼編輯器,將以下代碼添加到 label_Click() 事件處理程序方法的頂部和底部。 (您要將 if 語句添加到頂部,將三個語句添加到底部;該方法的其余部分保持相同。)C#/ <summary>/ Every label's Click event is handled by this even

48、t handler/ </summary>/ <param name="sender">The label that was clicked</param>/ <param name="e"></param>private void label_Click(object sender, EventArgs e) / The timer is only on after two non-matching / icons have been shown to the player, / so ign

49、ore any clicks if the timer is running if (timer1.Enabled = true) return; Label clickedLabel = sender as Label; if (clickedLabel != null) / If the clicked label is black, the player clicked / an icon that's already been revealed - / ignore the click if (clickedLabel.ForeColor = Color.Black) retu

50、rn; / If firstClicked is null, this is the first icon / in the pair that the player clicked, / so set firstClicked to the label that the player / clicked, change its color to black, and return if (firstClicked = null) firstClicked = clickedLabel; firstClicked.ForeColor = Color.Black; return; / If th

51、e player gets this far, the timer isn't / running and firstClicked isn't null, / so this must be the second icon the player clicked / Set its color to black secondClicked = clickedLabel; secondClicked.ForeColor = Color.Black; / If the player gets this far, the player / clicked two different

52、icons, so start the / timer (which will wait three quarters of / a second, and then hide the icons) timer1.Start(); 該方法頂部的代碼通過檢查“Enabled”屬性來檢查計時器是否已啟動。 這樣,如果玩家單擊第一個和第二個 Label 控件,且計時器啟動,則單擊第三個控件將不會執(zhí)行任何操作。該方法底部的代碼設(shè)置 secondClicked 引用變量,以便它跟蹤玩家單擊的第二個 Label 控件,它將該標簽的圖標顏

53、色設(shè)置為黑色以使其可見。 然后,它在單觸發(fā)模式下啟動計時器,以便它等待 750 毫秒,然后觸發(fā) Tick 事件。 然后,計時器的 Tick 事件處理程序會隱藏這兩個圖標,并重置 firstClicked 和 secondClicked 引用變量,以便窗體準備就緒以供玩家單擊另一個圖標。5. 保存并運行程序。 單擊一個圖標,它將變得可見。6. 單擊另一個圖標。 它會短暫顯示,然后兩個圖標都消失。 多次重復此操作。 窗體現(xiàn)在跟蹤您單擊的第一個和第二個圖標,并在使圖標消失之前使用計時器暫停。繼續(xù)或查看

54、· 若要轉(zhuǎn)到下一個教程步驟,請參見步驟 7:保持對可見。· 若要返回上一個教程步驟,請參見步驟 5:添加標簽引用。© 2016 Microsoft步驟 7:保持對可見Visual Studio 2010只要玩家僅單擊不匹配的圖標對,游戲即可順暢地運行。 但是,請考慮玩家單擊匹配對時應(yīng)發(fā)生的情況。 游戲不是通過打開計時器(使用 Start() 方法)來使圖標消失,而應(yīng)當進行重置,這樣游戲就不再使用 firstClicked 和secondClicked 引用變量跟蹤任何標簽,而且無需重置兩個已單擊

55、過的標簽的顏色。保持對可見1. 將下面的 if 語句添加到 label_Click() 事件處理程序方法的尾部附近,緊靠啟動計時器的語句的上方。 將代碼添加到程序時,請仔細查看一下代碼。 考慮代碼如何運行。C# / If the player gets this far, the timer isn't / running and firstClicked isn't null, / so this must be the second icon the player clicked / Set its color t

56、o black secondClicked = clickedLabel; secondClicked.ForeColor = Color.Black; / If the player clicked two matching icons, keep them / black and reset firstClicked and secondClicked / so the player can click another icon if (firstClicked.Text = secondClicked.Text) firstClicked = null; secondClicked =

57、null; return; / If the player gets this far, the player / clicked two different icons, so start the / timer (which will wait three quarters of / a second, and then hide the icons) timer1.Start(); 您剛添加的 if 語句的第一行檢查玩家單擊的第一個標簽中的圖標是否與第二個標簽中的圖標相同。 如果圖標相同,則程序執(zhí)行 C# 中大括號之間的三個語句或 Visual Basic

58、中 if 語句內(nèi)的三個語句。 前兩個語句重置firstClicked 和 secondClicked 引用變量,使它們不跟蹤任何標簽。 (您可以從計時器的 Tick 事件處理程序識別這兩個語句。)第三個語句是返回語句,它通知程序跳過方法中的其余語句,不執(zhí)行它們。如果使用 Visual C# 編程,您可能已注意到某些代碼使用單個等號 (=),而其他語句使用雙等號 (=)。 請考慮為什么在某些位置使用 =,但在其他位置使用 =。以下是一個顯示該區(qū)別的很好的示例。 請仔細查看 if

59、 語句括號之間的代碼。VBfirstClicked.Text = secondClicked.TextC#firstClicked.Text = secondClicked.Text再仔細查看 if 語句后的代碼塊中的第一個語句。VBfirstClicked = NothingC#firstClicked = null;這兩個語句中的第一句檢查兩個圖標是否相同。因為要比較兩個值,所以 Visual C# 程序使用 = 相等運算符。第二個語句實際上更改值(稱為“賦值”),將 firstClicked 引用變量設(shè)置為等于

60、0;null 以重置它。這就是使用= 賦值運算符的原因。Visual C# 使用 = 設(shè)置值,使用 = 比較值。而,Visual Basic 將 = 既用于賦值,也用于比較。2. 保存并運行程序,然后開始在窗體中單擊。 如果單擊的是不匹配的對,則將觸發(fā)計時器的 Tick 事件,兩個圖標都會消失。 如果單擊的是匹配的對,則將執(zhí)行新的 if 語句,而返回語句會使方法跳過啟動計時器的代碼,因此圖標保持可見,如下圖所示。具有可見圖標對的匹配游戲繼續(xù)或查看· 若要轉(zhuǎn)到下一個教

61、程步驟,請參見步驟 8:添加方法以驗證玩家是否獲勝。· 若要返回上一個教程步驟,請參見步驟 6:添加計時器。© 2016 Microsoft步驟 8:添加方法以驗證玩家是否獲勝Visual Studio 2010您已創(chuàng)建了一個有趣的游戲,但它需要添加附加項目。 該游戲應(yīng)當在玩家獲勝時結(jié)束,因此您需要添加 CheckForWinner() 方法以驗證玩家是否獲勝。添加方法以驗證玩家是否獲勝1. 將 CheckForWinner() 方法添加到窗體,如下面的代碼所示。C#/ <summary>/ Check every icon to see if it is matched, by / comparing its foreground color to its background col

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論