课程设计说明书

代码(32条消息) C#课程设计-打地鼠小游戏-C#文档类资源-CSDN文库

设计题目: 打地鼠小游戏

院(系) 软件工程学院

专业年级 19级计科1班

学生姓名 学号

同组同学姓名 学号

指导教师

日 期 2021年12月

目  录

1 引 言 3

1.1课程设计的目的 3

1.2本选题的内容要求 3

1.3 软件开发运行环境 3

2 总体设计 4

2.1设计思路 4

2.2软件总体结构图 4

2.3主要功能模块的设计 5

3 详细设计与实现 6

3.1 界面模块 6

3.1.1界面功能设计 7

3.1.2游戏主界面设计 7

3.1.3主界面主要代码 8

3.2 各个界面 9

3.2.1登录注册界面功能设计 9

3.2.游戏界面设计 10

3.3 游戏区 10

3.3.1游戏区功能设计 11

3.3.2游戏区界面设计 11

3.3.3游戏区行列主要代码 12

4 小结和展望 13

参 考 文 献 14

  1. 引 言

1.1课程设计的目的

现如今,电子游戏已慢慢渗透进人们生活中,并在扮演着越来越重的角色。可以说,随着它的迅猛发展,现今的电子游戏已经不仅仅是一种娱乐,而是形成了一种文化现象。游戏本来的目的是为了要让人们在忙碌的生活节奏中放松身心,轻松一下、让人娱乐的。单机游戏,指仅使用一台计算机或者其它游戏平台就可以独立运行的电子游戏。由于其不必连入互联网也可进行游戏从而摆脱了很多的限制,只需要一台计算机即可体验游戏。

本游戏的制作属于简单的益智类游戏可以使玩家体验到娱乐与消遣,打地鼠作为娱乐性质的游戏项目,可以锻炼玩家的反应能力,其次,本游戏可通过敲击键盘来控制锤子打地鼠,还能锻炼玩家对键盘的熟悉程度。

打地鼠游戏设计牵涉到图像处理函数、以及鼠标控制等各方面知识,许多函数的使用方法可借鉴扫雷游戏的处理方法,通过对现有打地鼠游戏的改造,形成特有的TC下的打地鼠游戏。

1.2本选题的内容要求

本游戏需要与一般的其他游戏一样,能够便捷地良好的界面使用人员能快捷简单的进行操作。除此之外,还能即时准确的获得游戏结果

总结来说,本游戏应该能够满足用户的以下需求:

(1)能够体验游戏的畅玩的感觉。

(2)有信息的数字化显示,以方便所有用户对游戏结果的了解。

(3)运行欢迎界面和注册登录时,可现实简单的动画效果,使游戏增添无限乐趣。

(4)运行游戏时,可出现时间限制,增加用户对时间的观点操作。

(5)点击出现的地鼠,会触发地鼠被打之后的照片特效,可增加用户对本游戏畅玩的游戏快感。

1.3 软件开发运行环境

C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。并定于在微软职业开发者论坛(PDC)上登台亮相。C#是微软公司研究员 AndersHejlsberg 的最新成果.C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司.NET windows 网络框架的主角。

C#是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。

  1. 总体设计

2.1设计思路

①显示栏的设计及功能实现:显示栏主要包括打中次数、总点击数、剩余时间三种常见显示数据。其中打中次数表示鼠标单击击中地鼠的次数,总点击数表示单机鼠标次数,剩余时间表示游戏结束时间(这里设置了三分钟倒计时)。

②画图区的设计:对图片的编辑处理区。

③设置栏的设计:不同的文本框和按钮生成游戏界面。

2.2软件总体结构图

打地鼠的界面分为三部分,第一部分最上面的显示栏部分,中间是游戏界面部分,最下面是设置栏按钮部分。利用Visual Studio 2012 Windows窗体应用程序首先开始设计一个整体的界面,菜单栏中分别有:打中次数、总点击数、剩余时间。显示部分由登录界面的图片以及生成界面组成,定义打地鼠所需要的按钮并赋给其按钮名称,使得使用打地鼠游戏简单明了,清晰可见,操作轻松。

给各个按钮进行属性设置,利用鼠标点击事件,当鼠标点击某个按钮时就开始执行那个按钮所定义的设置,生成数据并显示。

2.3主要功能模块的设计

(1) 主界面功能表

注册登录

序号

功能内容

控件

对象名

备注

1

显示输入提醒

Lable1

输入游戏ID

2

转跳到注册界面

Button1

注册

3

转跳到游戏界面

Button2

登录

(2) 游戏界面功能表

序号

功能内容

控件

对象名

备注

1

游戏界面显示

Panel

panel1;

2

开始及界面生成

Panel

panel2;

3

开始按钮

Button

button2;

4

生成界面按钮

Button

button1;

5

行列输入

TextBox

textBox1;

6

提示输入行列

Label

label1;

7

地鼠出现时间

Timer

timer1;

8

最上面显示栏

Panel

panel3;

9

总点击次数

Label

label5;

10

总点击次数

Label

label4;

11

打中次数

Label

label3;

12

打中次数

Label

label2;

13

剩余时间

Label

label7;

14

剩余时间

Label

label6;

15

倒计时计时

Timer

timer2;

  1. 详细设计与实现

3.1 界面模块

3.1.1界面功能设计

打地鼠的主界面分为注册,登陆界面栏、游戏界面三部分。其中,游戏界面区实现了显示栏实现了游戏的记录、计时等操作;登录界面栏实现了输入账号登录,实现账号注册操作;状态栏实现了显示鼠标当前状态。

3.1.2游戏主界面设计

打地鼠的主界面如下图所示,在登入界面加入图片,使其界面更为美观;一开始调明剩余时间让玩家有三分钟倒计时准备。

图3-1 主界面图

3.1.3主界面主要代码

namespace WindowsFormsApplication6

{

public partial class Form1 : For

{

public Form1()

{

InitializeComponent();

}

//设置游戏显示界面最大,最小行列数

int DSIZE = 60;

int COUNT = 4;

Button[,] btn;

//游戏开始按钮的相关设置

点击开始后把button2属性text由“开始”变为“停止”

private void button2_Click(object sender, EventArgs e)

{

if (button2.Text == "开始")

{

timer1.Enabled = true;

button2.Text = "停止";

timer2.Start();

}

else

{

timer1.Enabled = false;

button2.Text = "开始";

timer2.Stop();

}

}

private void panel1_MouseEnter(object sender, EventArgs e)

{

this.Cursor = new Cursor("imgs/hit.cur");//锤子

}

private void panel1_MouseLeave(object sender, EventArgs e)

{

this.Cursor = new Cursor("imgs/hit.cur");

}

private void panel1_Paint(object sender, PaintEventArgs e)

{

}

private void Form1_Click(object sender, EventArgs e)

{

int zong=int.Parse(label5.Text);

zong++;//点击次数计数

label5.Text =zong + " ";

Button bn = (Button)sender;

if (bn.Tag.ToString() =="1" )

{

bn.BackgroundImage = Image.FromFile("imgs/heatmouse.png");//播放挨打

int dj = int.Parse(label3.Text);//打中次数

dj++;

label3.Text = dj + " ";

}

}

//游戏倒计时设置,180秒

int time = 180;

int count = 0;

private void timer2_Tick(object sender, EventArgs e)

{

count++; //计当前秒

label7.Text = (time - count).ToString() + "秒";//显示剩余时间 不需要提取,可以不加空格

if(count == time)

{

timer2.Stop();//时间到,停止计时

MessageBox.Show("时间到,游戏结束!!", "提示");//弹出提示框 show("内容","标题")

}

}

}

}

3.2 各个界面

3.2.1登录注册界面功能设计

登陆界面包括登录界面和注册界面两部分。注册新账号保存在 name.txt

登录时在文件中查找,实现代码如下:

注册界面实现代码如下:

private void button1_Click(object sender, EventArgs e)

{

bool flage = true;

if (textBox1.Text == "")

MessageBox.Show("注册名不能为空!");

else

{

string s;

StreamReader reader = new StreamReader("name.txt");

do

{

s = reader.ReadLine();

if (s == textBox1.Text)

{

flage = false;

MessageBox.Show("该用户已注册!");

}

}

while (!reader.EndOfStream && flage);

reader.Dispose();

if (flage)

{

StreamWriter writer = new StreamWriter("name.txt", true);

writer.WriteLine(textBox1.Text);

MessageBox.Show("用户注册成功,请进行登录!");

writer.Dispose();

}

3.2.2游戏界面设计

从本地资源中导入图片进行插入达到美观效果

引入图片包制作鼠标、生成界面效果

3.3 游戏区

3.3.1游戏区功能设计

游戏区可以利用鼠标单机生成的方块格,电脑进行识别计数。

3.3.2游戏区界面设计(例4*4)

图3-9 画图界面

3.3.3游戏区行列主要代码

private void button1_Click(object sender, EventArgs e)

{

panel1.Controls.Clear();

int x= int.Parse(textBox1.Text);//获得输入的数

if (x > COUNT)//

COUNT = x;

//图片在界面显示

btn=new Button[COUNT,COUNT];//申明一个二维数组

DSIZE = panel1.Width / COUNT;

for(int i = 0;i < COUNT;i++ )//

{

for(int j=0;j<COUNT;j++)

{

btn[i,j] = new Button();

// btn[i, j].Text = i + "," + j;//显示坐标

btn[i,j].BackgroundImage=Image.FromFile("imgs/field.png");

//显示图片

btn[i, j].BackgroundImageLayout = ImageLayout.Stretch;

//背景图片布局,铺满

btn[i, j].Tag = 0;//0表示地洞,1表示地鼠

btn[i,j].Click+=Form1_Click;//委托

btn[i,j].Width = DSIZE;

btn[i,j].Height = DSIZE;

btn[i,j].Left = j * DSIZE;

btn[i,j].Top = i * DSIZE;

panel1.Controls.Add(btn[i,j]);

}

}

button1.Enabled = false;

button2.Enabled = true;

}

  1. 小结和展望

本文集中讨论了一个基于C#的打地鼠游戏系统的设计与实现。文章首先分析了系统的关键技术,包括C#、SQL技术等。接着在关键技术的基础上,提出了打地鼠游戏系统的设计,设计是基于对整个系统的需求分析的。最后,利用划分模块的方法实现了整个系统并进行了测试。测试的结果表明,打地鼠游戏系统能够对用户进行工作减压和能够打发无聊的时间,能够快速地将结构化的信息导出使用。同时,测试结果也表明了打地鼠游戏系统具有可扩展性强、事务处理速率快、响应时间短、持续工作能力强等特点。

本游戏是以C#作为开发语言、Visual Stduio 2012为开发平台来实现的。该系统的开发以模块化设计作为思想,编码时十分注意编码规范,充分吸取设计模式的精髓思想。不仅保证了程序的正常运行,注释详尽、命名规范、可读性强、可修改性强的一份代码也保证了程序的可维护性、易维护性。

本游戏重点是在于对数据的处理,以及逻辑思维的运用。当游戏开始时,读数据的处理也就开始了,每次点击出现的地鼠按钮都调用分数处理方法,对每个地鼠得分情况的分值进行统计。逻辑思维方面的问题,用Button点击事件精准而且简单。

但本游戏还可以尽量完善,就是游戏进行联机操作以及实现游戏分享等功能。还有待进一步的开发。开所欠缺的知识太多,无法进行。因为还没有相关的技术以及相关的材料,所以联机访问远程数据库功能实现,我会在学习这方面有关的知识,让游戏更加的完善,让本游戏向商业化发展。

参考文献

[1]朱浩悦,计算机软件JAVA编程特点分析[M].黑龙江科技信息,2007

[2]邢翀,基于Java的在线考试系统的设计与实现[M].科技创新导报,2015

[3] 王保罗.Java面向对象程序设计[M]. 北京:清华大学出版社,2003

[4] 张珣,杨三成.关键技术JSP与JDBC应用详解[M].中国铁道出版,2010

[5] 刘腾红,孙细明.信息系统分析与设计[M].北京:科学出版社,2003

[6] 于万波、刘其昌等.Java语言实用教程.北京:清华大学出版社,2008

[7] 毕广吉.Java程序设计实例教程[M]. 北京:冶金工业出版社,2007

[8] 朱战立,沈伟. Java程序设计实用教程〔M].北京:清华大学出版社,2005

[9] 耿祥义,张跃平.Java设计模式[M].北京:清华大学出版社,2009

[10] Bruce Eckel.Java编程思想[M].北京:机械工业出版社,2003

[11]王军,基于Java的垂直搜索引擎的设计方式构建[M].信息化建设,2009

评阅成绩: 评阅教师:

C#课程设计 ——小游戏打地鼠相关推荐

  1. python课程设计小游戏大全_用Python设计一个经典小游戏

    本文主要介绍如何用Python设计一个经典小游戏:猜大小. 在这个游戏中,将用到前面我介绍过的所有内容:变量的使用.参数传递.函数设计.条件控制和循环等,做个整体的总结和复习. 游戏规则: 初始本金是 ...

  2. android课程设计小游戏代码,课程设计:小游戏

    1.菜单的模拟 我在制作菜单的时候是先打印出底图,然后利用getch()获取按键的信息,然后根据接收到的信息,利用标准输出句柄和SetConsoleTextAttribute()函数来变换相应选项的颜 ...

  3. c语言课程设计小游戏自动发牌,C语言编程:一副桥牌有52张牌,打牌时应将牌分给四个人。请使用数组方法设计一个程序完成自动发牌的工作。...

    #include #include #include void swap(int *a,int *b) { int t; t=*a; *a=*b; *b=t; } int main(void) { i ...

  4. JAVA课程设计——“小羊吃蓝莓”小游戏

    JAVA课程设计--"小羊吃蓝莓"小游戏 1. 团队课程设计博客链接 http://www.cnblogs.com/HXY071/p/7061216.html 2. 个人负责模块或 ...

  5. 用swing设计一个打地鼠小游戏_设计小游戏 | 用游戏的方式让你迅速掌握钢笔工具!...

    上次个大家介绍了一个 考验色感的小游戏 这一次我们继续给大家推荐一个小游戏! 一个练习钢笔的小游戏--The Bezier Game 钢笔工具小游戏 http://bezier.method.ac/ ...

  6. Java课程设计——挖地雷游戏设计报告

    源文件: 大学生Java课程设计--挖地雷游戏设计报告源文件-其它文档类资源-CSDN文库 目 录 摘 要. 1 一.引言. 2 1.设计任务和基本要求. 2 二.报告正文. 3 1.需求分析. 3 ...

  7. java中的纸牌游戏_JAVA课程设计纸牌游戏

    <JAVA课程设计纸牌游戏>由会员分享,可在线阅读,更多相关<JAVA课程设计纸牌游戏(16页珍藏版)>请在人人文库网上搜索. 1.一.问题分析和任务定义1.题目:纸牌游戏:编 ...

  8. JAVA程序连连看的项目总结,JAVA课程设计连连看游戏的开发

    JAVA课程设计连连看游戏的开发 计算机科学与工程学院集中性实践教学计划书( 2013 - 2014 学年第 1 学期)课程名称: 专业实习 姓 名: 学 号: 2010081303 专 业: 计算机 ...

  9. 扫雷java讲解_java课程设计(扫雷游戏)讲解.doc

    java课程设计(扫雷游戏)讲解.doc 成 绩 评 定 表 学生姓名班级学号 专 业课程设计题目基于Java的扫雷游戏软件设计评 语 组长签字: 成绩 日期 2014 年 月 日 课程设计任务书 学 ...

最新文章

  1. 宏基因组公众号创立初衷及如何注册一个名字好记的公众号
  2. MusicXML 3.0 (6) - 符杠分组
  3. visual studio可以开发python吗_Visual Studio上开发Python六大功能
  4. 一元二次方程求根公式的花样变换,你看懂了吗?
  5. poj 1715 Hexadecimal Numbers 排列组合
  6. 新时代培育新动能:2021年“专精特新”发展蓝皮书
  7. MySQL 5.6 for Windows 解压缩版配置安装(转)
  8. 下载pip、安装pip
  9. 从“卡脖子”到人有我优,数字孪生盾构机施工流程可视化
  10. php tcpdf 没有头部,TCPDF - 设置头部Logo不显示问题
  11. c++实现压缩解压 zip文件
  12. 爬取汽车之家所有车型,价格,配置
  13. typedef void far *LPVOID 的具体定义
  14. Unity3D 法线转换切线空间
  15. 互联网日报 | 吉利汽车完成科创板上市辅导;华为开发者大会9月10日举行;贵州茅台整治“年份酒”乱象...
  16. 课堂笔记(常用软件,网站资源)
  17. Unity 获取设备国家地区(Android)
  18. 免费u盘数据恢复软件有哪些?找个最适合你的!
  19. 普元EOS_工作流引擎相关数据表记录---工作流工作笔记002
  20. 从招行权证疯炒看权证风险

热门文章

  1. matlab仿真的优势,新手必看 saber和simulink的区别与优势
  2. 向量的三重积公式及其证明(附python代码)
  3. L0范数,L1范数,L2范数的详解(很详细,转载)
  4. js学习--制作选项卡
  5. 读书笔记 | 并购创造价值-收购后的整合与组织学习(4)
  6. 距离2022下半年软考不足两个月,这些关键考点就是通关密码
  7. 京东云引擎使用教程 资源管理器部署方法 新手可以来看看
  8. 资深建模师给小白的建议,如何正确认识这个行业
  9. 16 STL - 常用容器
  10. kibana Unable to revive connection: http://elasticsearch:9200