掃雷游戲制作過程(C#描述):第四節、菜單操作


前言

這里給出教程原文地址
該項目已經放在github上托管。

菜單操作

我們現在的程序單擊菜單的時候不會有任何反應,這一節我們主要介紹菜單的相關代碼,使得菜單能夠正常使用。

現在我們希望在對應級別(初級、中級、高級)的按鈕的前顯示打勾,以表示目前的游戲等級,並且選擇對應級別的按鈕,能有相應的變化。我們雙擊菜單欄中的Beginner便會自動進入相應的函數代碼區,在此函數中的代碼,便是點擊Beginner時所執行的代碼。這里做一個說明:每個函數的首字母必須大學,所以此時你必須修改Beginner屬性欄中的Name,同理,菜單欄下每個選項的屬性中的Name都需要修改,否則會報錯。

分別雙擊BeginnerIntermediateExport三個菜單欄,做如下修改:

private void BeginnerBToolStripMenuItem_Click(object sender, EventArgs e)
{
	//我們令Beginner中的行數,列數,地雷的數量分別為:10,10,10
	Sweep_width = 10;
	Sweep_high = 10;
	Sweep_num = 10;
}
private void IntermediateIToolStripMenuItem_Click(object sender, EventArgs e)
{
	//我們令Beginner中的行數,列數,地雷的數量分別為:16,16,40
	Sweep_width = 16;
	Sweep_high = 16;
	Sweep_num = 40;
}
private void ExpertEToolStripMenuItem_Click(object sender, EventArgs e)
{
	//我們令Beginner中的行數,列數,地雷的數量分別為:16,30,99
	Sweep_width = 30;
	Sweep_high = 16;
	Sweep_num = 99;
}

為了方便操作,我們自己定義一個NewGame()函數,一個SetLevel()函數,這里說明下,你可能覺得定義的NewGame()函數並多此一舉,兩個函數合並不就得了,NewGame()函數在后來會補進新的代碼,在后面的章節,就會體現出來。操作如下:

private void SetLevel()
{
	BeginnerBToolStripMenuItem.Checked = false;
	IntermediateIToolStripMenuItem.Checked = false;
	ExpertEToolStripMenuItem.Checked = false;                             //初始化
	switch (Sweep_num)
	{
		case 10: BeginnerBToolStripMenuItem.Checked = true; break;
		case 40: IntermediateIToolStripMenuItem.Checked = true; break;
		case 99: ExpertEToolStripMenuItem.Checked = true; break;
		default: break;
	}                                                                    //判斷當前是設置哪個等級,菜單欄中當前等級前顯示打鈎符號
	Properties.Settings.Default.Sweep_high = Sweep_high;
	Properties.Settings.Default.Sweep_width = Sweep_width;
	Properties.Settings.Default.Sweep_num = Sweep_num;
	Properties.Settings.Default.Save();                                  //保存設置到Settings中
	NewGame();                                                           //調用NewGame()函數
}
private void NewGame()
{
	UpdateSize(Sweep_width, Sweep_high);
	Refresh();
}

此時需要在BeginnerBToolStripMenuItem_Click(object sender, EventArgs e)中調用SetLevel()函數,來保存設置,更改窗口大小,重繪雷區,另外兩個函數做同樣的修改。

private void BeginnerBToolStripMenuItem_Click(object sender, EventArgs e)
{
	//我們令Beginner中的行數,列數,地雷的數量分別為:10,10,10
	Sweep_width = 10;
	Sweep_high = 10;
	Sweep_num = 10;
	SetLevel();
}

最后在函數public Form_Main()中,調用SetLevel(),使程序剛運行時,自動在相應的等級前顯示打鈎按鈕。添加如下代碼:

SetLevel();

最后按Ctrl + F5編譯運行,得到最終結果:


雙擊菜單欄中的New Game,Exit,做如下修改:

private void NewGameToolStripMenuItem_Click(object sender, EventArgs e)
{
	NewGame();
}
private void ExitToolStripMenuItem_Click(object sender, EventArgs e)
{
	Application.Exit();
}

自此菜單欄的部分功能已經得到實現。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM