




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
苏 州 市 职 业 大 学课程设计说明书 名称 C#课程设计扫雷游戏 2010年6 月21 日 至2010 年 7 月 4 日 共 2 周院 系 计算机工程系 班 级 09软件测试 姓 名 黄 庆 系主任 李 金 祥 教研室主任 叶 良 指导教师 张苏 王德鹏 摘要:当今时代,是一个新技术层出不穷的时代。随着人们物质生活的不断提高,电子产品已经走进家家户户,无论是生活和学习还是娱乐和消遣的,扫雷就是一个简单的娱乐游戏。 随着科技的发展,扫雷的玩法越来越多,各种不同功能的扫雷已经悄悄走进我们的生活和学习中。对于学生来说可能多了一样娱乐的活动。借着C#程序设计的机会,我决定做一下扫雷游戏。在练习巩固C#学习的同时又可以从中体会到C#的强大功能,然而由于学习的内容和时间有限,我们只能做到一些简单方法。在今后的学习中,我会继续研究,争取进一步来完善它的功能。 本系统采用Visual Studio .NET 2005开发,生成可执行文件在任何系统下都可以执行,具有很好的数据处理能力和稳定性。本论文主要介绍了该课题的开发背景以及过程和所要完成的功能。并且重点的说明了系统设计思想,设计的步骤、难点技术和解决目录目录3一、选课说明41.1 目的41.2 软件说明41.3 选课意义41.4问题定义和内容简介4 支持使用SQL数据库存储数据4 可以动态的设置数据库配置信息4 实现自定义地雷的数量及游戏级别5二 、总体设计52.1系统开发平台:52.2系统流程图:62.3功能结构图72.4 主要技术7三、详细说明831游戏步骤832主要模块10四、遇到的问题和解决方法25五、课程设计总结26六、参考文献27附录(源程序代码)27一、 选课说明 1.1 目的扫雷是单人计算机游戏。游戏的用户界面由在量小方格组成的战场构成。当游戏开始时,计算机将固定的地雷数随机的放到战场的方格。此游戏还允许玩家指定战场中的地雷数。1.2 软件说明a:扫雷游戏b:计算机工程系 09软件测试 黄庆 096307330 1.3 选课意义 通过我们编写的扫雷游戏,我们可以更加的了解C#这门课程。雷游戏是WINDOWS系统自带的一个娱乐性的小游戏,在玩扫雷游戏的过程中 也可以很好的培养耐心和细心,同时在无聊得时候可以用以休闲娱乐,如果我们自己也能动手做一个小程序来实现这个功能,自然能乐在其中。1.4问题定义和内容简介 本课程序设计是用C#程序做的扫雷游戏。程序的功能是生成指定数目的地雷,通过鼠标操作玩游戏。点击屏幕上的笑脸重新开始游戏;标出所有地雷后胜出;当鼠标左键击中地雷失败。接受和采用的语言.而微软当前为它的这种新语言大造声势也是值得注意的.扫雷是单人计算机游戏。游戏的用户界面由在量小。当游戏方格组成的战场构成开始时,计算机将固定的地雷数随机的放到战场的方格。此游戏还允许玩家指定战场中的地雷数。 支持使用SQL数据库存储数据在本游戏中,当玩家完成扫雷任务后,可以自由选择是否将游戏成绩存入数据库。成绩存入数据库后,可以 在用户需要时随时查看。本游戏使用的数据库是基于SQL数据库管理系统进行管理的,功能强大、稳定性高。 可以动态的设置数据库配置信息 由于在不同的机子上服务器的设置不同。因此,本游戏配有服务器设置界面,可以根椐需要设置服务器的配置信息。在每次启动游戏时,程序会自动检查是否配置了服务器,若未配置则会提示配置服务器。 实现自定义地雷的数量及游戏级别 本游戏可以根据,玩家的需要自定义雷的数量,及游戏的级别。从而提高游戏的趣味性。二 、总体设计2.1系统开发平台:编译程序:Visual Studio .NET 2005;数据库管理系统:SQL Server 20052.2系统流程图: 2.3功能结构图 2.4 主要技术NET Framework 2.0和Visual Studio 2005为基础,全面介绍了C#编程的工具,提供了理解.NET体系结构的工作原理所必需的背景知识。三、详细说明31游戏步骤(1)双击扫雷.exe文件运行程序可以看到如图四所示的界面(注意若您是第一次使用,或您没有配置服务器则会先弹出如图五所示的服务器配置界面)。图二图一图三(2)进行入主界面后,若您还没有配置服务器,请您首先选择“游戏”“服务器配置”进入如图六所示的服务器配置界面(这个界面的详细设置请参考2.3精度)。图四(3)读到这里假设您已正确的设置了服务器并可以正常连接。下面你就可以开始游戏了。游戏有三种系统定义的级别,有你只需选择“游戏” “初级”即可进入初级的游戏如图七所示。依此类似,你也可以选择“中级”、“高级”进入相应级别的游戏。在任何时候您都可以点击笑脸按钮 进行新一轮的游戏。(4)如果你觉得不喜欢系统自定义的级别,你也可以自定义游戏。跟着来吧,首先选择“游戏”“自定义”打开如图八所示的界面(该界面的设置详细见2.3精度)。设置好后点击笑脸按钮 即可开始按您的设置玩游戏了。 (5)当你扫雷失败时,就会出现这样的键面。 图六 图五(6)当你已经扫雷成功时,那可就要恭喜你,因为你的成绩将可以被记录到数据库里面。只要你扫雷成功将会弹出如图九所示的保存成绩界面,此时只要输入你的大名,英雄榜中便可以看到你的名字了!图七图八(7)更详细的请你点击“关于”里面你可以找到作者的资料!图九32主要模块(1) 排行榜模块 using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;using System.IO;using System.Xml;namespace Mine.UIL public partial class HeroListForms : Form private Mine.ADL.Users _dalUser; private StringBuilder _strConnect; private string _serverName; private string _databaseName; private string _userName; private string _userPass; private string _connectType; public HeroListForms() InitializeComponent(); ReadToXml(); BuildConnectString(); _dalUser = new Mine.ADL.Users(_strConnect.ToString(); GetDataFromDB(); private void labTitle_Click(object sender, EventArgs e) / / 从数据库读取数据 / private void GetDataFromDB() DataTable dt = new DataTable(); DataSet t=new DataSet(); t=_dalUser.GetList(); if (t != null) dt = t.Tables0; string strItem = new string5; foreach (DataRow dr in dt.Rows) if (dr用户名.ToString().Trim() != 0) strItem0 = (dr用户名.ToString().Trim(); strItem1 = dr游戏级别.ToString(); strItem2 = (dr雷的数目.ToString().Trim(); strItem3 = (dr所用时间.ToString().Trim(); strItem4 = (dr日期时间.ToString().Trim(); ListViewItem item = new ListViewItem(strItem); lstSort.Items.Add(item); else MessageBox.Show(服务器连接错误,请检查是否正确设置服务器!,错误信息,MessageBoxButtons.OK,MessageBoxIcon.Error); / / 构造连接字符串 / public void BuildConnectString() _strConnect = new StringBuilder(); if (_connectType = windows) _strConnect.Append(Data Source=); _strConnect.Append(_serverName + ; + Initial Catalog= + _databaseName); _strConnect.Append(;Integrated Security=True); else if (_connectType = usernameandpassword) _strConnect.Append(Data Source=); _strConnect.Append(_serverName + ; + Initial Catalog= + _databaseName); _strConnect.Append(;User ID= + _userName + ;Password= + _userPass); / / 从配置文件中读取服务器配置信息 / / 文件名 private bool ReadToXml() bool bo = false; if (File.Exists(Config.xml) XmlTextReader xmlReader = new XmlTextReader(Config.xml); try while (xmlReader.Read() if (xmlReader.Name = servername) _serverName = (xmlReader.ReadElementString().Trim(); else if (xmlReader.Name = databasename) _databaseName = (xmlReader.ReadElementString().Trim(); else if (xmlReader.Name = username) _userName = (xmlReader.ReadElementString().Trim(); else if (xmlReader.Name = userpassword) _userPass = (xmlReader.ReadElementString().Trim(); else if (xmlReader.Name = connecttype) _connectType = (xmlReader.ReadElementString().Trim(); catch (Exception ex) MessageBox.Show(ex.Message); bo = true; else bo = false; MessageBox.Show(尚未配置服务器,您将读取数据!, 提示信息, MessageBoxButtons.OK, MessageBoxIcon.Information); return bo; private void butDelete_Click(object sender, EventArgs e) if (lstSort.SelectedItems.Count = 0) MessageBox.Show(您得先选中一条记录,再删除嘛!, 提示信息, MessageBoxButtons.OK, MessageBoxIcon.Information); else bool bo=false; foreach (ListViewItem item in lstSort.SelectedItems) bo = _dalUser.Delete(item.SubItems0.Text).Trim(), (item.SubItems1.Text).Trim(),( item.SubItems3.Text).Trim(),( item.SubItems4.Text).Trim(),Convert.ToInt32( item.SubItems2.Text); if (bo = true) foreach (ListViewItem item in lstSort.SelectedItems) lstSort.Items.Remove(item); MessageBox.Show(删除成功!, 提示信息, MessageBoxButtons.OK, MessageBoxIcon.Information); else MessageBox.Show(删除失败!, 提示信息, MessageBoxButtons.OK, MessageBoxIcon.Information); private void panel1_Paint(object sender, PaintEventArgs e) (2) 服务设置模块using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Xml;using System.IO;using System.Windows.Forms;namespace Mine.UIL public partial class ServerChoiceForms : Form public ServerChoiceForms() InitializeComponent(); private void butOK_Click(object sender, EventArgs e) XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(); XmlNode root = xmlDoc.SelectSingleNode(user); XmlElement serverName = xmlDoc.CreateElement(servername); XmlElement databasename = xmlDoc.CreateElement(databasename); XmlElement username = xmlDoc.CreateElement(username); XmlElement userpassword = xmlDoc.CreateElement(userpassword); XmlElement connecttype = xmlDoc.CreateElement(connecttype); root.AppendChild(serverName); root.AppendChild(databasename); root.AppendChild(username); root.AppendChild(userpassword); root.AppendChild(connecttype); serverName.InnerText = textBox1.Text; databasename.InnerText = textBox2.Text; if (radioButton1.Checked = true) username.InnerText = 0; userpassword.InnerText = 0; connecttype.InnerText = windows; if (radioButton2.Checked = true) username.InnerText = this.textBox3.Text ; userpassword.InnerText = this.textBox4.Text ; connecttype.InnerText = usernameandpassword; xmlDoc.Save(Config.xml); MessageBox.Show(服务器信息保存成功!,提示信息,MessageBoxButtons.OK,MessageBoxIcon.Information); private void button1_Click(object sender, EventArgs e) if (radioButton2.Checked = true) /用户名,密码验证 bool bo = false; StringBuilder strBuider = new StringBuilder(); strBuider.Append(Data Source=); strBuider.Append(textBox1.Text + ; + Initial Catalog= + textBox2.Text); strBuider.Append(;User ID=+textBox3.Text+;Password=+textBox4.Text); Mine.ADL.Users user = new Mine.ADL.Users(strBuider.ToString(); bo = user.Exists(0, 0, 0, 0, 0); if (bo) MessageBox.Show(连接成功!, 提示信息, MessageBoxButtons.OK, MessageBoxIcon.Information); else if (radioButton1.Checked = true) bool bo = false; /Windows系统验证 StringBuilder strBuider=new StringBuilder(); strBuider.Append(Data Source=); strBuider.Append(textBox1.Text + ;+Initial Catalog=+textBox2.Text); strBuider.Append(;Integrated Security=True); Mine.ADL.Users user = new Mine.ADL.Users(strBuider.ToString(); bo=user.Exists(0, 0, 0, 0, 0); if (bo) MessageBox.Show(连接成功!, 提示信息, MessageBoxButtons.OK, MessageBoxIcon.Information); private void radioButton1_CheckedChanged(object sender, EventArgs e) if (radioButton1.Checked = true) textBox3.ReadOnly = true; textBox4.ReadOnly = true; if (radioButton2.Checked = true) textBox3.ReadOnly = false; textBox4.ReadOnly = false; private void ServerChoiceForms_Load(object sender, EventArgs e) (3) 自定义模块 using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace Mine.UIL public partial class UserDefinedForms : Form private int _mineNumber; private int _buttonNumber; /窗体宽度 private static int _width; /窗体高度 private static int _height; #region 设置属性 / / 获取或设置窗体宽度 / public new int Width get return _width; set_width =value; / / /获取或设置窗体高度 / public new int Height get return _height; set _height = value; / / 获取或设置雷的数量 / public int MineNumber get return _mineNumber; set _mineNumber = value; / / 或取或设置按钮的数量 / public int ButtonNumber get return _buttonNumber; set _buttonNumber = value; #endregion public UserDefinedForms() InitializeComponent(); _buttonNumber = 256; _mineNumber = 40; private void UserDefinedForms_Load(object sender, EventArgs e) private void butOK_Click(object sender, EventArgs e) try bool bo = true; if (radioButton1.Checked = false & radioButton2.Checked = false & radioButton3.Checked = false) MessageBox.Show(请选择一个级别!, 提示信息, MessageBoxButtons.OK, MessageBoxIcon.Information); bo = false; else int j = Convert.ToInt32(txtNumber.Text); if (j = _buttonNumber) _mineNumber = Convert.ToInt32(txtNumber.Text); bo = true; else MessageBox.Show(雷的数量不合法!,提示信息,MessageBoxButtons.OK,MessageBoxIcon.Error); bo = false; /设置雷的数量 SetMineNumber(); if (bo) MessageBox.Show(操作成功!, 提示信息, MessageBoxButtons.OK, MessageBoxIcon.Information); catch MessageBox.Show(输入的数字无效,请输入整数!, 提示信息, MessageBoxButtons.OK, MessageBoxIcon.Error); / / 设置雷的数目 / private void SetMineNumber() if (_buttonNumber = 256) _mineNumber = 40; _width = 333; _height = 425; else if (_buttonNumber = 81) _mineNumber = 10; _width = 193; _height = 284; else if (_buttonNumber = 400) _mineNumber = 50; _width = 413; _height = 504; / / 判断选择的是哪个控件 / / / private void radioButton3_CheckedChanged(object sender, EventArgs e) if (radioButton1.Checked = true) _buttonNumber = 81; _width = 193; _height = 284; else if (radioButton2.Checked = true) _buttonNumber = 256; _width = 333; _height = 425; else if (radioButton3.Checked = true) _buttonNumber = 400; _width = 413; _height = 504; (4) 完成模块using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.IO;using System.Xml;namespace Mine.UIL public partial class Use
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国太阳能硅片硅锭项目创业计划书
- 复合海绵项目可行性研究报告
- 中国溴甲烷项目商业计划书
- 2025年中国软包动力电池项目投资计划书
- 2025年土蜂可行性研究报告
- 2025年企业信用报告-陕西瑛朗工程项目咨询有限公司
- 2025年云南省汽车驾驶员高级理论知识考试试卷带解析及参考答案一套
- 2025年中国硼肥项目投资计划书
- 中国醛缩酶项目创业投资方案
- 2025年中国数码管封装用胶带项目创业投资方案
- 人教版九年级上册-历史全册课件(课件)【部编教材】
- 种子的结构教学课件
- 工厂用电安全培训课件(课件)
- 高中数学必修一《函数的概念及其表示》说课课件
- 手术器械发展史
- 《老年健康照护与促进》课件-模块七 老年人常见疾病照护
- 新课标义务教育数学(2022年版)课程标准试题库(附含答案)
- 软件用户使用报告
- 英语口语8000句(全)
- 精神卫生服务与心理健康服务体系
- 口腔科医护人员职业防护
评论
0/150
提交评论