大一期末时要求利用C#语言做一个小程序,于是做了这个简单的数字华容道游戏。

写这篇文章主要是为了给学弟学妹们参考,让课程设计实践不那么头疼。

源码下载地址:https://download.csdn.net/download/dp888888/10766453

一、需求分析

利用C#语言开发一个人们熟悉的休闲益智游戏。数字华容道的玩法和要求是用尽量少的步数,尽量短的时间,将棋盘上的数字方块,按照从左到右、从上到下的顺序重新排列整齐。

主要需求:

①能简便的开始游戏,游戏中的功能与日常我们所熟悉数字华容道的游戏的功能一致,游戏在运行时在菜单界面选择难度后转跳页面,游戏开始,计时与倒计时开始;

②能够将单元格中的数值进行交换,并且能够判断是否已经达到交换的要求,能够交换则进行交换;

③能进行游戏重置,当点击游戏重置按钮时,游戏能够重新打乱,并且重新开始计时和倒计时,清空已走步数,重新开始游戏;

④能统计在每一次游戏中所走的步数,并会显示在游戏界面;

⑤能在走的每一步发出音效;有完成提示音,失败提示音;

⑥能够记录最佳时间,让玩家更有兴趣玩下去。

主要步骤:

1.创建一个菜单界面,菜单界面有三个选项,分为简单,普通,困难;

2.难度选择,有三个难度,简单为3*3数字华容道,普通为4*4数字华容道,困难为5*5数字华容道;玩家可以通过鼠标自己选择游戏难度;

3.设置背景音乐及交换时的音效;设置背景音乐及音效是否播放按键;用户可以自己选择是否开关音效;

4.设置一个Cell,存储数值;

5. 设置一个Game的类,将所需的方法写入;

6.设置Move移动方法,设置Swap移动方法,设置一个Upset打乱方法,打乱排序;设置一个bool型Judge方法,用来判断是否完成;

7.获取WASD按键,用来控制游戏数字移动;设置一个button按键用来重新开始游戏

8.记录移动次数和设置一个计时器记录时间,设置一个label显示历史最佳时间,设置一个label显示历史最佳步数

9.通过Judge方法判断成功后弹出一个提示框提示用户游戏完成,是否再来一局

10.游戏结束

二、程序设计

UI界面设计:设计一个数字华容道菜单界面,三个游戏运行界面,并练习使用鼠标事件、键盘事件和计时器事件。本程序的主要设计思路为:首先是菜单界面设计,该界面主要包括三个难度按钮(普通、简单、困难),三个按钮分别实现向三个游戏界面转跳的功能。三个游戏界面,简单游戏界面和普通游戏界面类似,主要包括3*3个label框(普通为4*4个label框)这些label框主要是为了显示Cell数组的值。以及3个时间label框(剩余时间,已用时间,最佳时间)和一个步数显示label框,及一个重新开始按钮,困难界面为5*5个label框,用来显示Cell数组的值。没有剩余时间框。在游戏运行界面,设置一个时间控件,进行游戏的倒计时、计时。设置一个显示值的方法,将Cell的值显示到相应的label框。设置一个键盘事件,获取需要的按键。

业务逻辑设计:设置一个Game类,里面包含了移动(Move)方法,交换数值(Swap)方法,Cell单元格赋值方法,判断(Judge)方法,游戏初始化(Game)方法,对游戏进行一些初始的准备,设置一个实例化(Init)方法对Cell进行实例化;移动方法主要考虑是否能够移动,如果能够移动则利用Swap方法进行交换数值。判断方法在每次移动后都会进行判断。如果成功会弹出一个选择框,提示用户是否选择重新开始或退出。设置一个Num,记录步数。

功能设计:根据分析,数字华容道这个程序一共要实现如下几个功能,难度选择、游戏的重置和统计所走的步数,剩余时间、已用时间、最佳时间。其中游戏难度按钮最为主要和重要,它控制着整个游戏的画面和有关数据的操作,是游戏的核心部分。游戏重置功能将时间步数等归零,打乱数字顺序;游戏的主要实现在于业务逻辑中的几个主要方法。

主要使用流程是:使用者打开菜单界面,鼠标点击获取要难度的对象,用鼠标选择难度,用键盘WSAD或1235上下左右控制,使用者选择的对象进行操作。如果哪个方向有空白方块,则可以往哪边移动,当移动到数字依次排列好的时候,则游戏完成,播放胜利提示音。

类图如图3.1

主要有4个类,Game类为最主要的方法类,它包含了程序的主要方法及初始化,主要有Upset打乱方法,Swap交换数值方法,Init数组实例化方法,Move移动方法及Judge判断方法。Cell类主要是存储数组数据,Num类主要存储步数的数据,Page类主要是存储难度。

图3.1程序类图

三、程序实现

4.1界面逻辑;

首先,我们创建四个窗体,一个菜单窗体,三个不同难度的窗体;

菜单界面图如图4.1

图4.1菜单界面图

菜单界面核心代码如图4.2,主要是button按钮,有三个button按钮,实现向三个难度界面的转跳,转跳的同时隐藏父页面,以及子界面关闭时显示父页面,每个按钮都对应的进行Diff赋值,简单则赋值为simple,普通则赋值为ordinary,困难则赋值为difficulty;

图4.2菜单界面核心代码图

简单运行界面图如图4.3

图4.3简单运行界面图

简单运行界面核心代码1,关于关闭窗口及显示值的功能如图4.4,主要应用关闭事件实现以及子界面关闭时显示父界面;以及通过循环让多个单元格显示数值的方法,每个界面的显示数值方法都类似,只是在数值上不一样,并将最后一个单元格单独挑出来不显示;

图4.4简单运行界面核心代码1

简单运行界面核心代码2,关于获取键盘事件及判断是否成功的功能如图4.5,主要应用键盘事件获取WSAD键及5213数字键;并在事件内调用Game类的方法进行数值移动,并判断是否成功判断,将判断方法放在事件内实现每一次移动都判断是否成功;

图4.5简单运行界面核心代码2

简单运行界面核心代码3,关于时控件及时间显示的代码如图4.6,主要应用时间控件控制时间,显示计时与倒计时,并将通关限制写在控件代码内,可实现时间到游戏失败结束;

图4.6简单运行界面核心代码3

普通和困难运行界面核心代码与简单运行界面核心代码相差不大,仅仅是将单元格数值修改,以及限制时间长短修改,此处不做详细介绍;

普通界面运行图如图4.7

图4.7普通界面运行图

困难界面运行图如图4.8

图4.8困难界面运行图

4.2业务逻辑

业务逻辑核心代码1如图4.9该部分起到初始化的作用,能够根据菜单界面传递的难度将数组进行实例化并赋值,和调用打乱方法打乱顺序。

图4.9业务逻辑核心代码1

业务逻辑核心代码2如图4.10该部分起到打乱赋值的顺序,且不是随机赋值打乱,使用的是随机函数产生1到4之间的随机数,代表一个随机的方向进行单元格移动的打乱方式,能够避免随机赋值出现不能还原的问题,导致游戏无法完成的问题。

图4.10业务逻辑核心代码2

业务逻辑核心代码3如图4.11该部分起到数值交换及数组实例化的作用,为简化代码,交换数值的方法,采用传入两个坐标的方式进行数值交换,实现了多个方向数值交换用一段代码完成;

图4.11业务逻辑核心代码3

业务逻辑核心代码4如图4.12该部分起到单元格之间的移动作用,能够判断移动方向是否是白块,是白块则可移动,能移动则调用Swap方法进行数值交换并将步数加一;

图4.12业务逻辑核心代码4

业务逻辑核心代码5如图4.13该部分起到判断作用,在游戏运行界面调用该方法能够判断游戏是否完成,该方法设为bool型。

图4.13业务逻辑核心代码5

五、程序测试

由于程序主要为UI界面,所以没有进行相应方法的测试。而是反复运行测试游戏进行测试,并将几个特殊时刻的游戏截图,成功通过界面,通过失败界面,如图5.1,5.2,5.3,5.4,5.5

图5.1简单界面通关测试图

图5.2简单界面通关失败测试图

图5.3普通界面通关测试图

图5.4普通界面失败测试图

图5.4困难界面测试图

希望能够帮助到初学者,程序参考了别人写的,特附上参考地址

参考文献:https://www.cnblogs.com/Leo_wl/p/6731653.html

1、万事起步难,只要你能入门那就像是突然进入知识的海洋,各种知识慢慢的进入脑中。这就是从无到有的转变。只要跨过那道坎,以后的学习将会轻松许多。

2、遇到问题不要心浮气躁,开发过程中我们会遇到各种各样的困难,会让我们心烦,甚至于发脾气。这时候可以选着听听歌或者出去走走让自己静下来,当你冷静时问题很快就能得到解决。遇到问题应先动脑思考,不懂先百度,还是不懂才去问老师和同学。

3、学会合作,在大学期间我们应该明白,光是靠一个人想获得成功是困难的。你得学会合作,和周围的一起合作,各种取长补短。人总是有缺点的。但是当你是靠一个团体时你就变得强大,变得完美。代码需要分工协作,人也一样,需要互相协作才能事半功倍。

4、学会请教,不会不可耻,没有人一开始就什么都会。人的成长过程是一个学习的过程,是一个请教的过程。要学会虚心请教别人。做到不耻下问。

源码下载地址:

https://download.csdn.net/download/dp888888/10766453

包含的文件详情:

PPT样式:

PPT带有运行视频:

课程设计报告样式:

C#程序设计实践课程设计之数字华容道相关推荐

  1. 看图猜字的c语言程序设计教程课后答案,《C语言程序设计》课程设计---猜数字游戏...

    设计题目:猜数字游戏 目目 录录 目录目录 目 录...........................................................- 1 - 1 程序分析与设计. ...

  2. 猜数字java程序设计分析_JAVA程序设计课程设计-猜数字游戏设计

    JAVA程序设计课程设计-猜数字游戏设计 课 程 设 计 报 告课程设计名称 Java 程序设计 专 业 计算机科学与技术 班 级 2 班 学 号 08030212 姓 名 指导教师 成 绩 2011 ...

  3. java猜数字游戏课程设计报告_Java程序设计课程设计-猜数字游戏设计.doc

    Java程序设计课程设计-猜数字游戏设计.doc 还剩 23页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,喜欢就下载吧,价低环保! 内容要点: 课 程 设 计 报 告课程设计名称 Jav ...

  4. 《C语言程序设计》课程设计实践考核说明

    <C语言程序设计>课程设计实践考核说明 <C语言程序设计>课程设计实践考核说明 本次设计是为加强学生的<C语言程序设计>课程的实际应用能力而进行的专门训练.选题考虑 ...

  5. 桂林理工大学 程序设计实践课程 实习报告

    学  号: 320205205# 桂林理工大学 GUILIN UNIVERSITY OF TECHNOLOGY    程序设计实践课程      实习报告 学      院: 信息科学与工程学院 # ...

  6. java日历程序设计,《面向对象程序设计》课程设计---java日历

    <面向对象程序设计>课程设计---java日历 软软 件件 学学 院院 课程设计课程设计报告书报告书 课程名称课程名称 面向对象程序设计课程设计面向对象程序设计课程设计 设计题目设计题目 ...

  7. java课设推荐,《Java程序设计》课程设计报告推荐.docx

    <Java程序设计>课程设计报告推荐 <Java程序设计>课程设计报告2015-2016学年 第一学期设计题目整数进制转换学生姓名邹晓刚学 号0专业班级信管1303指导教师 姜 ...

  8. 大二c语言数电课程设计,数电课程设计报告(数字钟的设计).doc

    数电课程设计报告(数字钟的设计).doc 数电课程设计报告 设计背景与要求 设计要求 系统概述 2.1设计思想与方案选择 2.2各功能块的组成 2.3工作原理 第三章 单元电路设计与分析 3.1各单元 ...

  9. 1到100猜数字游戏规则c语言,[C语言课程设计猜数字游戏1.doc

    [C语言课程设计猜数字游戏1 课 程 设 计 报 告 课程名称 C语言程序设计报告 课题名称 猜数字游戏 专 业 电气工程及其自动化 班 级 1104 学 号 33 姓 名 张腾 指导教师 黄晓宇 丁 ...

最新文章

  1. Generator函数的语法以及异步的应用
  2. 无需任何标记数据,几张照片就能还原出3D物体结构,自监督学习还能这样用...
  3. Android Handler的原理
  4. ExtJs2.0学习系列--Ext.Panel
  5. C/C++ 对优先级与结合性的理解
  6. 二维模式(矩阵)匹配(Rabin-Karp算法推广到二维)[转]
  7. Python学习之zip函数
  8. 计算机应用基础随堂,《计算机应用基础》随堂题库
  9. 排序算法 - 面试中的排序算法总结
  10. [转载]窗口之间的主从关系与Z-Order
  11. 计算机技术和通信技术的关系,计算机技术与通信技术的关系
  12. 超详细图文教程,阿里云服务器搭建
  13. EndNote X9配置Chinese Standard GBT7714
  14. python实现随机验证码图片生成
  15. GIS十问之一:到底什么单位招聘GIS专业的学生?
  16. 好嗨哦!用Python进行诗歌接龙
  17. TCP/IP篇(1)--协议模型
  18. 那些你熟悉而又陌生的函数
  19. 陈寿福服从法院判决已支付赔偿并道歉
  20. 中文***测试专用系统——【MagicBox】

热门文章

  1. Grapher中如何保存图形模板,批量处理相同格式的文件
  2. SecureFX 查看隐藏文件夹
  3. 36、有效的数独 | 算法(leetode,附思维导图 + 全部解法)300题
  4. 【搜索与回溯算法】保卫农场(DFS)
  5. 批量生成各尺寸的iOS图标
  6. 计算机网络超时重传时间,TCP超时重传机制
  7. 关于计算机专业励志的话,励志语录经典短句100句
  8. 用java实现简单的搜索引擎
  9. 十分钟一起学会Inception网络
  10. Java+SSM酒店管理系统旅店管理(含源码+论文+答辩PPT等)