坦克大战(终极)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

开始
初始化坦克
对战双方玩家坦克由键盘控制移动
发射炮弹
同角色坦克
碰撞检测(坦克和子弹)
不处理
不同角 色坦克
产生爆炸
判断胜负
结束
图 4.2 TankClient 类设计流程 TankClient 类是主类,通过调用其他类中封装的方法来使整个系统运行起来,下面显 示 TankClient 与各个类之间的关系如图 4.4 所示:
Tank 类(我方)
TankServer 类
TankClient 2
打击
New 参数 2
Tank 类(敌方)
调用 Missile 类
打中
调用 Explode 类产程爆炸
判断胜负
4.5 联机模式类关联图 4.2.7 信息传送类基本功能分析
信息传送类就是用来封装客户端和服务器端的交互信息。将网络中传递的众多信息封装 成可序列化的类,将会使程序有很好的可扩展性。
初始化
游戏模 式
对 战
随机产生敌方坦
玩家坦
选择角色,填写
对 战
敌方坦
百度文库
我方坦
判断胜
玩玩 家家 一二
玩玩 家家 一二
判断胜 负

图 4.1 网络坦克大战游戏流程 4.2.2 TankClient 类基本功能分析
TankClient 类是整个系统的核心部分,它承担整个系统的所有可实现功能的调度工作。 是整个游戏运行的场所。TankClient 类设计流程图如图 4.2 所示:
4.2 系统功能设计 4.2.1 坦克大战总体功能设计
坦克大战游戏主要实现玩家参加游戏的整个流程,用户登陆游戏客户端选择游戏模式, 可分为单机模式和网络对战模式,选择单机模式可以直接进入游戏状态;选择网络对战模式, 在启动服务器后,玩家需要选择自己的角色,用户名和 ID 等玩家相关资料,成功后使用其 账号进行登录游戏(只有成功登录的玩家才能参与网络对战游戏功能);登陆玩家就可以通 过控制键盘操作,加入对战游戏。整个网络版坦克大战游戏流程图如图 4.1 所示:
7.3 展望 本系统基本实现了坦克游戏所应有的基本功能,在大学中最后一次专攻式的学习了 c++
语言,使我对 c++语言有了更深层次的理解,通过该游戏设计,提高了我的编程能力,也让 我养成了良好的编程习惯。希望在今后自己能继续对更多的技术进行深入的学习和研究。
第八章 参考文献
[1]郑振杰.C++程序设计 北京:人民邮电出版社,2005 [2]柴欣,C/C++程序设计 河北大学出版社,2002 [3]余苏宁、王明福,C++程序设计 北京:高等教育出版社,2003 [4] 吕凤翥.C++语言程序设计(第 2 版).电子工业出版社,2007.2 [5] ]李云清、杨庆红、揭安全.数据结构[M].人民邮电大学出版社,2004.6
作 间隙的休闲娱乐
2.2 游戏特色及玩点 1) 游戏以卡通搞笑风格让玩家轻松游戏
2) 对抗性强,让玩家充分体验网络对抗的刺激感觉 3) 操作简单,通过键盘就可以完成游戏的所有基本操作 4) 游戏的多种道具不但有实用性还尽量提供玩家酷的感觉,满足玩家的成就感
2.3 游戏概述 1) 游戏是以坦克为主角的多人网络对抗游戏 2) 玩家可以可以双人对战进行 3) 游戏在一个选定的场景中进行
第三章 游戏开发平台构建
3.1 开发硬件 3.2 开发平台
第四章 项目设计
4.1 系统需求分析 4.2 系统功能设计
第五章 游戏网络情况
5.1 网络稳定性 5.2 网络运行情况 5.3 跨平台性
第六章 调试运行与分析
6.1 运行界面 6.2 游戏界面
第七章 总结
7.1 总结 7.2 系统不足之处
参考文献
第四章 项目设计
4.1 系统需求分析 4.1.1 在单人操作模式下实现的功能
1) 能够发射子弹 2) 能够模拟爆炸 3) 能够产生障碍 4) 能够增长生命 4.1.2 在网络对战模式下实现的功能 在人机对战模式中实现功能基础上,增加以下功能实现网络对战功能: 1)添加网络功能,使两台或者多台不同计算机的玩家通过一定的网络连接,加入到游 戏中; 2)能够自主分组并选择角色,填写自己的游戏信息,各个玩家之间实现网络对战功能, 并且同是一方的坦克不能相互攻击;
网络游戏开发-Direct-X 开发报告
题 目: 坦 克 大 战
姓 名: 谌庆央
学 号: 110804002
班 级: 11 数媒
指导教师:
许德鹏
完成日期: 2014.06.11
目录
第一章 需求分析
1.1 需求分析
第二章 游戏设计方案
2.1 设计原因 2.2 游戏特色及晚点 2.3 游戏概述 2.4 游戏风格 2.5 聊天系统
第五章 游戏网络情况
5.1 网络稳定性
网络非常的稳定,只要连接上网后,基本不会出现断开的情况,有一点不足就是在连接 网络的时候耗时比较长。
5.2 网络运行情况 建立主机的一方只需创建一局新游戏即可,而另一方玩家则需要 输入服务器 IP 地址,
端口号与主机相同,从而与主机连接进行游戏;游戏进行时玩家双方还可以聊天。
的一次作业,因此从一开始我对本次毕业设计就给予了高度重视。从选题、收集资料、学习 相关技术到实际编程,我都一丝不苟的对待了。当然其间我也走了不少弯路,有时甚至需要 推倒重来,但同时我也多次体会过克服困难后的成就感。
通过这次毕业设计以及撰写本毕业论文,我学会了一些编程技巧,而且对调试的错误有 进一步的认识,有时候就一个小小的语法错误就会导致程序调试不通过。所以每个字符,每 句程序都要认真对待。使用不同的编程环境,其效率完全不一样,所以我选择了 Eclipse,它 自动找错/纠错功能、Debug 调试和代码自动生成等一些重要的功能大大提高了我的设计效 率。对于设计论文,一定要注意格式,认识事情都有它的规则、规范,不能按个人喜好随意 改变。
第一章 需求分析
1.1 需求分析
坦克大战中有我方坦克和敌方坦克,我方坦克有一个,敌方坦克一个或多个看连接 人数的多少。坦克可以移动,也可以发射子弹。我方坦克可以通过上下左右键来控制方向, 敌方坦克通过对手控制改变方向。在游戏窗体中有障碍物,在遇到其他障碍物时,我方坦克 停止移动,并通过操纵改变方向再移动。坦克有一定数值的生命值,当与敌方坦克或敌方子 弹相撞时,生命值减少,当生命值是零时,敌方胜利,游戏结束,当敌方坦克被击中,血量 降为零时我方胜利,游戏结束。敌方坦克的生命值跟我方坦克的生命值一样,当敌方坦克与 我方坦克或者我方子弹相遇就消失,同时我方子弹也消失,并产生爆炸。当我方坦克把敌方 坦克消灭完后,我方胜利,游戏结束。游戏过程中可以通过捡拾战斗场地的金币,炮弹,加 血等奖励来补充自己的弹药库。敌我一直战斗直到有一方战败游戏结束。
(1)getRect()方法 public Rectangle getRect() {
return new Rectangle(x, y, this.WIDTH, this.HEIGHT); } Rectangle 类是碰撞检测的辅助类,通过得到子弹的 x,y 坐标和宽高度,检测两个矩 形是否碰撞(相交); (2)draw()方法:负责将所有的活动在屏幕上画出来; (4)move()方法:主要负责控制坦克的移动,包括 8 个方向(左,左上,上,右上, 右,右下,下,左下)的控制以及给坦克一个移动的速度; (4)keyPressed()方法:设定使用键盘的“↑”“↓”“←”“→”键控制坦克移动; (5)keyReleased()方法:处理按键抬起事件,抬起“CTRL”键时,发射炮弹并加入新 炮弹,能够逐一发射每一发炮弹、抬起“A”键可以发射超级炮弹等功能; (6)locationDirection()方法:定义了炮筒方向,可以向八个方向发射炮弹; (7)fire()方法:处理发送子弹的方法; (8)bumpWithWall()方法:主要负责处理坦克撞墙事件; (9)bumpWithTank()方法:主要到负责处理坦克和坦克相撞事件; 4.2.4 Missile 类基本功能分析 Misslile(子弹)类和 Tank 类一样,只封装一些变量属性和静态方法,主要变量包括: 子弹自己的大小(WIDTH,HRIGHT),运动速度(SPRRD_X:在 x 轴方向的速度;SPEED_Y:在 Y 轴方向的速度)、子弹标示(ID)、所属坦克的 id 号(TankId 用于网络版)等。Misslie 类持 有一个 TankClient 类(大管家)的引用 tc,TankClient 类要执行发射炮弹操作时调用 Missile 类中的方法。Misslie 类中的主要方法如下: (1) draw()方法:负责画出子弹的所有活动; (2) move()方法:先判断方向再移动,并给它一定的移动速度; (3) getRect()方法:负责取得子弹的外切方形,为碰撞检测做准备; (4) hitTan()方法:检测子弹是否撞到坦克,若撞到返回 true,否则返回 false; (5) hitTanks()方法:检测是否撞到一系列坦克中的一个; (6) hitWall()方法:检测子弹和墙是否相撞。 4.2.5 Explode 类基本功能分析 Explode(爆炸)类也是一个只封装自己的变量和方法的外部包装类,没有 main 方法,供
2.4 游戏风格 1)游戏以 2D 画面表现比较逼真 2) 在主体风格下,游戏体现多种场景 3) 场景中主要表现的是俯视图效果
2.5 聊天系统 1) 玩家可以在大厅和游戏中进行聊天
第三章 游戏开发平台构建
3.1 硬件: windows7,window8,windows XP
3.2 软件: Visual C++6.0,在其基础之上的 MFC
动速度(SPRRD_X:在 x 轴方向的速度;SPEED_Y:在 Y 轴方向的速度)、生命值控制(life)、 坦克编号(id)、坦克名(name)、方向控制(dir)、生死控制(live)、好坏控制(good)的变量 等。Tank 类中没有 main 函数,不是主类,它当中只封装一些变量属性和静态方法,被 TankClient 类调用来实现坦克的一系列动作。Tank 类中的主要方法罗列如下:
TankClient 主类需要时调用它的 draw()方法,当子弹击中坦克时需要产生爆炸。
4.2.6 服务器类基本功能分析 TankServer(服务器)类主要负责在网络对战游戏时维护各个在线玩家的基本信息,并
动态的维护玩家列表。联机模式下类关系图如图 4.5 所示:
TankClient 1
New 参数 1
5.3 跨平台性 可支持本地连接,局域网连接,广域网连接
6.1 开始界面
第六章 调试运行与分析
6.2 键盘设计
6.3 参数设计 6.4 通讯设置
6.5 服务器管理 6.7 正在游戏界面
6.8 游戏中的聊天界面
第七章 总结
7.1 总结 本次设计已是大学最后一次对专业知识的综合实践活动,同时也是我所做的工作量最大
第二章 游戏设计方案
2.1 设计原因 1) 根据原红白机的《坦克大战》分析现行的类似游戏改编 2) 独特的对抗性吸引更多的玩家体验乐趣 3) 简单的操作性使本游戏更适合休闲娱乐 4) 丰富道具,坦克同样可以吸引大型游戏的玩家 5) 游戏针对人群是 25 岁及以下的玩家,但是游戏的简单和快速性使它同样适合工
键盘 控制 移动
TankClient 类(主类)
New 参数 1 Tank 类(我方)
打击
New 参数 2 Tank 类(敌方)
键盘 控制 移动
调用 Missile 类
打中
调用 Explode 类产程爆炸
判断胜负
图 4.4 游戏系统类关联图 4.2.3 Tank 类基本功能分析
Tank(坦克)类中,封装了一些变量属性,包括坦克自己的大小(WIDTH,HRIGHT),运
7.2 设计中的不足之处 本系统实现了坦克游戏所应有的基本功能,但是由于时间和能力有限,还有一部分功能
未能实现,例如:外部文件读取、地图设定、升级、坦克的高级人工智能控制等,不能和现 在 Internet 上各种坦克大战游戏相媲美。还有就是对部分功能在设计过程中未能做到更加完 善,稍有瑕疵,游戏时偶尔还会产生闪烁现象,但是已经尽力改善了。还有就是当运行网络 模式时,必须专门启动服务器,而不是一键启动。对于玩家里来说有点麻烦。
相关文档
最新文档