110 likes | 235 Views
项目实训. —— 坦克大战. 计科系 2011 级 1 班陈希. 四川文理学院. 指导教师:文川豪. 项目介绍. 过程分析. 心得体会. 01. 02. 03. 04. 0 1: 项目介绍. 该游戏项目一共有三个界面:游戏界面,帮助界面,以及退出界面。 1. 开始界面:通过三个按钮实现界面间的相互跳转,以及游戏的直接退出。 2. 帮助界面:提示游戏相关操作, 通过界面中的返回按钮返回开始界面。
E N D
项目实训 ——坦克大战 计科系2011级1班陈希 四川文理学院 指导教师:文川豪
项目介绍 过程分析 心得体会 01 02 03 04
0 1:项目介绍 该游戏项目一共有三个界面:游戏界面,帮助界面,以及退出界面。 1.开始界面:通过三个按钮实现界面间的相互跳转,以及游戏的直接退出。 2. 帮助界面:提示游戏相关操作, 通过界面中的返回按钮返回开始界面。 3.游戏界面:实现正反方坦克的移动,敌方坦克子弹的随 机发射,实现地图,击中敌方坦克增加生命值,坦克与障碍物的碰撞,退出游戏。
0 2:过程分析 一、开始界面 创建StartGame类继承窗体Frame 在构造方法中设置窗体的属性,并添加三个按钮: 开始、帮助、退出。为按钮添加监听器,实例化三个界面的对象,通过按钮实现页面间的跳转和游戏退出。(右图)程序的入口
二、帮助界面 创建HlepFrame类继承窗体Frame 在构造方法中设置其属性,并添加返回按钮,通过按钮监听,返回开始界面
三、游戏界面: 绘制地图 1. 通过Thread类或者实现Runnale接口获得线程对象。通过线程对象连续绘制图片。为绘制地图打基础。 2.绘制地图: 创建GameMap类(见右图为地图集合) 通过线程画出游戏界中的地图。
绘制双方坦克 1.创建Tank类,通过IsGood判断坦克类型,通过键盘监听,改变dir值调用move()方法实现坦克的运动。定义坦克的碰撞检测方法:pz()(与障碍物相撞)、pzTank()(我的坦克与敌方坦克相撞)、pzTanks()(敌方坦克与敌方坦克相撞),处理坦克碰撞后的行为。 绘制子弹 1.创建Missile类,通过draw()方法绘子弹,定义子弹与障碍物hitRoaldblock(),子弹与坦克hitTank()碰撞的方法,处理子弹击中物体后的行为。(部分代码) 绘制炮弹爆炸效果 1.创建Exploed类,通过draw()方法画出一套爆炸效果。
绘制障碍物 1.定义抽象类Roaldblock拥有障碍物的所有属性及draw方法,定义Xz,Zb,Shu三个障碍物类继承此抽象类。 2.定义Cc类,及其特有的draw方法,绘制出草坪。 绘制血条 1.在Tank类中定义内部类BloodBar,内部类拥有画血条方法draw(),在Tank类的draw()中调用此draw方法,通过isGood判断坦克类型,画出双方血条。 控制坦克的生命值 1.创建Addlife类,用于绘制能量油。 2.在Tank类中给定坦克的life初值为100,Missile类hitTank()方法可实现获得能量油,Life值增加的效果。
实现游戏功能 1.创建主类MainFrame,在主类中创建内部类TankTread继承Tread,实现线程。 2、定义子弹、敌方坦克、爆炸效果、加血、各种障碍物等对象的集合,定义paint()方法,在方法中实例化游戏界面上物体的对象,通过对象调用其特有的draw方法绘制出图像,同时调用各种碰撞检测方法,实现游戏中的各种动作和行为。 3.Update()方法中调用paint方法实现图片缓冲。
游戏界面 双击此处替换图片
收获 回顾 0 3:心得体会 首先,实训前一天参观了成都高新区软件园,让我体会到最为一名职业人的辛苦,坚定了我学习的决心。 其次,通过这几天的学习和实践,明显感到自己在基础知识上仍存在漏洞,在老师的悉心讲解和指导下,收获了不少专业知识。 与此同时,在实现了一些基本功能后,小有成就,更加提升了我的学习热情。 最后,感谢老师的帮助和同学的团结协作,一定将学到的知识好好运用到今后的学习和工作中。 1.学习到线程的相关知识。 2.能够灵活运用容器组件的布局及布局管理器。 3.学习到在游戏的集成上添加事件监听器。 4.学习并运用了事件源,接口方法及说明,还有事件的适配器。 5.实现图片的缓冲等。