课程实训报告.docx
《课程实训报告.docx》由会员分享,可在线阅读,更多相关《课程实训报告.docx(17页珍藏版)》请在冰豆网上搜索。
![课程实训报告.docx](https://file1.bdocx.com/fileroot1/2023-2/22/678b380a-81d2-4b73-81e3-b68dd5e75ae0/678b380a-81d2-4b73-81e3-b68dd5e75ae01.gif)
课程实训报告
信息工程学院
课程实训报告
姓名:
谢成林
学号:
2014110645
实训名称:
C/C++项目实训
所在班级:
14级软件工程2班
实训时间:
2015年6月8日-2015年6月18日
实训地点:
工B201
实训教师:
实训企业:
上海杰普软件科技有限公司
实训成绩:
宿州学院信息工程学院实习实训中心制
一、实训基本信息
实训项目名称
扫雷游戏
实训环境
Eclipse+JDK
二、实训项目简介(包括项目的选题依据、功能体系、项目开发的技术与方法等)
计算机行业发展至今,编程语言种类繁多,但Java语言在计算机业中的地位还是不可动摇,长期占据在编程语言使用排行榜前两位,在操作系统,网络协议,嵌入式等众多方面占据绝对的地位,所以计算机专业的学生应该熟悉java语言,擅长使用java语言。
本次实训采用模块化开发思想,将项目按功能分成各个模块,在模块的基础上将各个小功能分别变成小函数,实现更高的代码重用。
本次实训是使用java语言开发扫雷游戏,将人们最熟知的一款游戏采用java语言
编程进行实现,最终能为客户提供一个跨平台的、具有很强趣味性的游戏扫雷是一款简单的游戏,扫雷游戏是以娱乐休闲为主的小型游戏,不仅可以使玩家休闲放松,消磨时间还可以拓展玩家的观察力和思维能力,适用于学生,白领,公务员等人群,这个游戏玩一局时间很短,最多只需几分钟,操作简单,因此受到广泛欢迎。
三、项目开发过程(1写明项目开发需要用到的C/C++知识点,并给出相关重要代码,并在代码后做出注释。
2写出在项目开发环境下的开发步骤,尽可能详细。
可续页。
)
1、相应的知识点
1、导包:
如果需要用到其他包中的类就需要导包
本次实训主要使用的包
java.util工具包
java.awt布局画界面
javax.swing布局画界面
部分
2数组
数组有基本数据类型和引用型数据类型,有一维和二维,二维是存放一维的数组,二维数组一般确定一个有X,Y轴坐标的位置。
而且数组的初始化也有静态的和动态,不得混用。
以下是利用数组添加图片,添加鼠标的事件监听等。
3产生随机数
利用随机数产生1到81的随机数
4鼠标点击事件
BUTTON1左击,BUTTON2中击,BUTTON3右击。
5、结构体语
(1)if条件语句
有些代码只能在满足条件之后可以执行的。
if(条件){}//单支语句
if(条件){}else{}//双支语句
if(条件){}elseif(条件){}...else{}多支语句
本次实训不仅利用if语句判断是否右击,解决了雷数的加减问题,还解决了所点击是否为雷,随后找出所雷并标出的问题等。
(2)循环语句
有些代码重复执行
循环语句可以很好的执行重复执行的代码,就如以下,利用for循环很好的解决了初级,中级,高级布雷任务等。
6界面和菜单
(1)界面
从图中的可以看出总的桌布是JFrame布局方式是BolderLayout然后添加Jpanel桌布添加相应的组件和文本框放置在桌布JFrame的北方,以同样方式然后设置网格布局放置在JFrame中间这就是以下界面的生成。
桌布
JFrame:
可独立的存在,自动调节大小,有最小化最大化和关闭。
Jpanel:
不可独立的存在,必须借助JFrame才可以显示出来。
布局
FlowLayot:
流式布局,可大可小
BolderLayout:
有东南西北中区域,可按布局按位置存放
GridLayout:
网格布局将容器分割成许多行和列,形似网格
(2)菜单
设置
文本框:
JLabel不可编辑直接显示已编入内容
编辑框:
JTextField:
单行编辑框
JTextArea:
多行编辑框
JMenuBar菜单条
JMenu菜单
JMenuItem菜单项
7给组件添加事件监听
MineGame执行监听编写了一个中级难度扫雷的方法,并给seniorMenuItem添加事件监听,进而执行。
集中式的事件处理
a)当前类implementsActionListion
b)重写ActionListion中一个方法
c)给组件添加事件监听
组件:
addActionListion(this)
d)根据点击不同的组件完成不同的
业务逻辑处理
8方法的定义与调用
2、开发步骤
1、
自定义槽:
创建javaproject:
MineGame
package:
com.briup.game
class:
MineGame
class:
MyButton
2该游戏组成可以说有四个部分,第一是GUI界面的生成,第二是菜单栏,然后是菜单栏下计数雷的和开始操作按钮,接下来就是界面中心的网格布局和雷的布局和算法,
3、编写代码
第一步:
在MineGame类搭建JFrame框架,构造器,
initGUI方法,go方法,main方法。
第二步:
构建JButton的子类MyButton。
提供按钮的一些属性:
是否是雷。
是否被点击。
是否被右击。
第三步:
搭建里面的控件
1)完成菜单
游戏菜单--->初级,中级,高级
帮助菜单--->游戏说明,关于扫雷
2)完成开始按钮,显示雷数,显示时间。
放在JPanel中。
采用流式布局
3)完成初级的雷区的按钮排布
放在JPanel中,采用网格布局(9,9)
4)完成点击游戏说明,关于扫雷菜单
的事件
5)完成点击初级,高级,中级菜单
雷区按钮的不同排布。
第四步:
处理事件
1)完成点击不同等级菜单时显示不同的
雷数:
初级:
剩余雷数10
中级:
剩余雷数40
高级:
剩余雷数99
2)完成所有雷按钮的鼠标右击事件
如果雷按钮没有被右击,该按钮显示
带有红旗的图片,并且剩余雷数--
如果雷按钮已经被右击,该按钮显示
之前的的图片,并且剩余雷数++
5)完成点击开始按钮时所有的雷按钮时
可点击,默认是不能点击的。
3)完成点击帮助菜单中的事件
4)完成点击开始按钮时定时器运行
6)完成点击开始时,布雷的算法。
不同的等级产生不同的雷数。
随机产生一个行和一个列。
该行该列的按钮就是雷。
设置该
按钮的isBomb为true。
并且显示
该按钮的图片为雷的图片。
7)完成点击雷区按钮。
判断如果点击的按钮是雷,找出所有
的雷按钮,并结束本次游戏(停止计时器)
判断如果点击的按钮不是雷,则判断
该按钮的周围8个按钮有多少个雷,
然后设置该按钮显示相应雷数的图片。
最后如果翻开的格子数+总雷数等于
总格数,则为游戏成功(停止计时器)
四、项目运行与测试(注:
粘贴系统运行的几个关键截图,并加以文字说明测试的步骤及对应的运行状态。
可续页。
)
1、窗口界面的生成
2判断是雷
3.完成菜单初级中级高级
4帮助菜单事件
5完成点击开始时,布雷的算法
6所有雷按钮的鼠标右击事件
7游戏的成功与失败
8、程序编译运行调试正常
9、相应文档,PPT的制作
10、完成项目
信息工程学院课程实训小结
学号
2014110645
姓名
谢成林
班级
14软工2
实
训
主
要
内
容
及
个
人
感
受
1、实训时遇到的问题及解决方法
问题
1这次实训遇到许多小问题,有花括号,分号增添减少;
2如何记录游戏时间,
3如何布雷
4如何扫雷
5如何让没有雷的地方自动翻面
解决:
重新观看视频和文档,请教同学和老师。
2、课程设计总结与体会
我在每天实训中都能够学习到很多东西,有些和C语言和C++差不多,列如一维,二维数组,for循环,if判断语句,在以前学习的时候不够深刻,在这次实训中我深入了解到了这些知识,但也有一些Java特有知识,导包,产生随机数,方法的定义与调用,GUI界面的生成,两种桌布JFrame和Jpanel,三种布局FlowLayot流式布局,BolderLayout,GridLayout网格布局,菜单的三种类型JMenuBar菜单条,JMenu菜单,JMenuItem菜单项,以及文本框:
JLabel不可编辑直接显示已编入内容编辑框:
JTextField单行编辑框JTextArea:
多行编辑框,给组件添加事件监听,这些内容巧妙的结合,形成了一个扫雷的游戏,真的不可思议,但我也有一些内容不怎么了解,就如给鼠标添加事件监听,以及将一些按钮放在一个类中。
在学校老师教我们C语言和C++,但大多数属于理论知识,能敲代码的机会是很少的,也没有团队做项目的,所以,这一切都过于抽象,以至于我们学习的兴趣不高,学习内容深度也不够,但就这次实训,可以说让我感觉到了快乐,以后多动手解决问题。