界面方面实际没有什么了,只要美观、人性化就行。因为所有的逻辑都在Game类中,只要将Game作为成员变量放入窗体类中就行了。这里就将个技巧,扫雷有3个级别,根据不同的级别设置游戏的砖块和行数、列数以及地雷数,并且我们要求选中项要打勾,而其他项没勾,用傻方法也能实现。那么如果10个级别或者100个级别,那冗余的代码就更多了。
所以,先遍历级别菜单,将选中项打勾,其余都去除勾,然后根据菜单项的Tag值设置对应的级别。
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Text;
- using System.Windows.Forms;
- namespace MineSweeper {
- public partial class MainForm : Form {
- Game game = new Game();
- public MainForm() {
- InitializeComponent();
- }
- private void tsmiStart_Click(object sender, EventArgs e) {
- }
- private void MainForm_Load(object sender, EventArgs e) {
- game.Init(pnlBoard,1);
- }
- private void ChangeLevel(object sender, EventArgs e) {
- for(int i = 1; i <= 3; i++) {
- ToolStripItem[] items = msMenu.Items.Find("tsmiLevel" + i, true);
- if(items != null && items.Length > 0) {
- ((ToolStripMenuItem)items[0]).Checked = false;
- }
- }
- ToolStripMenuItem mItem = (ToolStripMenuItem)sender;
- mItem.Checked = true;
- game.Init(pnlBoard, Convert.ToInt32(mItem.Tag));
- }
- }
- }