前言
菜單操作
我們現在的程序單擊菜單的時候不會有任何反應,這一節我們主要介紹菜單的相關代碼,使得菜單能夠正常使用。
現在我們希望在對應級別(初級、中級、高級)的按鈕的前顯示打勾,以表示目前的游戲等級,並且選擇對應級別的按鈕,能有相應的變化。我們雙擊菜單欄中的Beginner便會自動進入相應的函數代碼區,在此函數中的代碼,便是點擊Beginner時所執行的代碼。這里做一個說明:每個函數的首字母必須大學,所以此時你必須修改Beginner屬性欄中的Name,同理,菜單欄下每個選項的屬性中的Name都需要修改,否則會報錯。
分別雙擊Beginner,Intermediate,Export三個菜單欄,做如下修改:
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();
}
自此菜單欄的部分功能已經得到實現。