局域网坦克大战课程设计报告.docx
- 文档编号:8749658
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:13
- 大小:293.14KB
局域网坦克大战课程设计报告.docx
《局域网坦克大战课程设计报告.docx》由会员分享,可在线阅读,更多相关《局域网坦克大战课程设计报告.docx(13页珍藏版)》请在冰豆网上搜索。
局域网坦克大战课程设计报告
实训项目报告书
项目名称局域网坦克大战
年级班级2010级计101-4班
项目完成人
实训时间:
2011年12月12日至2011年12月31日
填表说明
一、本表由项目完成人填写,一式一份;
二、实训结束前将填好的文稿打印后交实训指导教师进行鉴定和评定成绩,确认后的文档交院校存档保存;
三、此表电子文档及学生项目实训的作品须打包存档,压缩文件包以学生学号命名,以班为单位收集,刻录光盘交院校存档;
1、项目背景、目的及可行性分析
引言
随着时代的进步、社会的发展,网络已成为人们生活中不可或缺的一部分,工作学习之余,利用游戏等放松娱乐一下…….
1、课题背景
随着游戏产业的迅速发展,新游戏一个接一个的不断出现,游戏的类型也是多种多样,如竞技类、对战类、合作类、角色扮演类等等。
如果读者是学生的话也许会注意到,宿舍里玩的合作类小型游戏大多是两个人在一台机器上,如果想不在一台机器上,则可能需要上网寻求第三方服务器的支持。
2、局域网坦克大战的目的
随着计算机的普及以及对电子游戏的认识,电子游戏已被越来越多的人选作放松、娱乐的休闲方式;电子游戏既不需要专门购买游戏器材,也不需要宽阔的游戏场地,只需要一台能独立完成任务的计算机即可,它可以是人们工作、学习时用的计算机,并不需要另行配置,这比起传统休闲游戏即省钱又省事。
局域网游戏更是可以将现实空间中零散的计算机,组织起来,使其在逻辑空间中集中起来,使游戏的组织、开展变得轻松。
如此轻松而又安逸的休闲方式,使得越来越多的人尝试,甚至已经将电子游戏作为主要休闲方式,既然有如此多的人使用,那其中必然存在巨大的商机,即使人们不愿意为一个小小的休闲游戏花费金钱,但在游戏中添加广告、游戏相关服务也包藏了巨大的财富;当然电子游戏的制作如今已是空前的火爆,大大小小的游戏公司横空出世,都想在电子游戏制作这个行业里占据一席之地,而一款成功的电子游戏需要精心的策划、分析、设计,只有这样才能获得游戏中包藏的财富,以及做出一款真正能够让玩家娱乐、放松的游戏,而不是骗取玩家钱财的工具。
本课题将达到以下几个目的:
1.需要有图形游戏界面,让用户能看到游戏给出的反馈
2.有人机交互功能,使用户能操作指定的游戏元素
4.坦克能够开火,攻击敌方,但不能攻击队友
5.需要有不可被子弹穿透的墙,且墙不可摧毁两种
6.坦克有生命值,并非被击中一次就会爆炸
7.游戏须提供网络支持,即局域网联网对战
8.须在玩家之间设立房主,掌管游戏何时开始
9.游戏结束时须判断哪一队胜利
10.游戏结束后可重新开始
11.游戏的操作、进度等须提供相应说明,以告知玩家
二、项目概述
1、公共类简介
坦克类Tank.java
该类包含着坦克的所有相关属性信息,同时也包括坦克的一些方法,如前进的方法,绘制的方法,返回其所在矩形的方法等等。
子弹类Bullet.java
该类包含着关于子弹的相关信息,同时也包含其一些游戏中用到的重要方法,如移动的方法,绘制子弹的方法等
地图类WarMap.java
该类包含着地图的相关信息,其实这里的地图就一个简单的二维数组
2、服务器端类
服务器主框架类TankServer.java
该类是服务器端的主类,用户通过运行该类进入游戏,通过该类建立游戏及控制游戏子弹类Bullet.java
服务器线程类ServerThread.java
服务器通过该线程类等待客户端的连接,并且连接到来后为其提供服务线程,即服务器代理线程,该线程下面会进行简单介绍
服务器代理线程ServerAgentThread.java
该线程用于接收客户端传来的信息,根据信息执行不同的动作,如客户机加入和离开的消息,改变游戏模型的消息等。
服务器端游戏主面板ServerWar.java。
该类实际上是服务器端最主要的一个类,该类不仅维护着服务器端的游戏模型,拥有改变模型的相应方法,而且该类还要将游戏模型的变化及时的传递给客户端。
服务器端绘制线程PaintThread.java
该线程主要用于控制游戏的定时重绘,将游戏模型及时的展现在用户面前
3、客户端类
客户端主框架类TankClient.java
该类是客户端的主类,客户端通过运行该类进入游戏,连接主机并控制游戏
客户端代理线程ClientAgentThread.java
该类负责接收服务器端传来的信息,并跟据信息的内容执行不同的动作,如根据信息及时的改变游戏模型,或者是主机离开的提示信息等等。
客户端游戏主面板ClientWar.java
该类是客户端最主要的一个类,客户端代理线程就是通过调用这个类改变游戏模型,同时该类还负责将客户端的变化及时地传递给服务器端。
客户端绘制线程CPaintThread.java。
该线程与服务器端的绘制线程完成同样的任务,就是定时的重绘游戏画面,将模
型的变化及时的展现给玩家。
三.相关技术路线
游戏数据的输入
游戏中坦克需要能往上、下、左、右四个方向运动,故须设立4个按键,使其能操作坦克,另须设一个键控制坦克开火。
为方便操作,本游戏设置WSAD分别表示上下左右,小键盘数字键4,表示开火。
具体实现为,为窗口添加KeyListener(键盘监听器),监听键盘的按下和抬起。
在TankClient类中添加内部的适配器类,由于不需要其它类访问,将其设计为private的,以保证面向对象设计的封装性。
游戏数据的输出
玩家需要从游戏输出数据中获得游戏信息,如坦克在往上行驶、坦克发了颗子弹、坦克爆炸等,这些均需要通过游戏数据的输出来告知玩家。
由于TankClient继承自Frame,Frame类中的方法paint,可以在窗口中绘制图形,即满足了游戏需要图形界面的需求;另有方法repaint可以刷新窗口,以及时提供游戏信息,故须创建线程,不断地刷新窗口,来获取最新的游戏信息。
网络管理
游戏需要对局域网对战的支持,所以需要对网络数据进行管理,使游戏能有条不紊地运行,网络管理部分主要负责输入游戏数据后发往其它游戏客户端,以及接收其它客户端发来的游戏数据。
需要发送的游戏数据有:
坦克创建消息(TankCreateMsg)、坦克开火消息(TankFireMsg)等
客户端游戏数据的收发
由于每个游戏消息都有共同的特性,即发送、接受,故将其抽象出一个父类Msg,所有的消息类都继承自Msg类。
在需要向每个游戏客户端发送游戏消息时只需实例化一个相应的对象,在调用send方法即可,接收时调用receive方法。
服务器端游戏数据的收发
服务器端的设计,只需将所有接收到的包转发给所有游戏客户端即可。
封装的游戏元素
将游戏元素(坦克、子弹、墙等)封装成一个一个的类,将大大地降低游戏设计、实现难度,且符合面向对象的设计方法。
由于这些游戏元素都有一些相同的属性、方法,故将其抽象为父类GameElement。
四、详细设计
五、项目完成情况
启动主机!
点击建主,提示服务器启动成功!
反之,则提示服务器启动失败!
启动副机,并输入主机名端口号,点击连接,提示已连接到服务器!
副机连接成功后,主机提示副机用户加入游戏!
主机点击开始,游戏开始!
1.通过观看视频对整个游戏开发一个深入的了解,根据自己理解以及视频的帮助开始进行开发编译。
2.在编译代码的过程中,遇到了各种问题:
(1)代码中字符出现错误,函数无法调用,通过观看视频,一步步对照,进行修改;
(2)副机无法与主机相连,连接失败。
主机建主失败。
通过修改是函数调用失败,无法传递的原因;
(3)启动副机时运行了主机的函数相同,在敲代码时直接拷贝的主机相同功能部分,没有做修改,所以启动时仍是调用的主机函数;
(4)按视频敲完代码后发现程序无法运行,经过查阅资料,仔细分析发现仍缺少两个文件;
(5)在所有文件敲完后,运行程序,画面空白,无坦克。
通过仔细查找代码问题,发现使用的是暂时代替的主面板,没有调用真正的主面板;
六、实训收获和建议
(1)通过这次课程设计,使我对JAVA编程有了更加深入的了解,学到了很多关于JAVA函数的知识;
(2)使用swing、GUI、Socket、面向对象设计等技术,结合起来,实现了各种功能,让我发现了这些函数的强大,同时运用起来也更加熟练;
(3)对游戏软件的开发要有创造性思维,同时还要细致,多考虑用户需求,人机交流更方便,将机器信息及时反馈给用户;
(4)通过这次编程发现自己还是没有掌握好JAVA的基础知识,需要不断的查阅资料;
(5)对于函数的应用不是太熟悉,平时编程较少没有充足的练习;
(7)对于这次实训,我意识到团队合作的重要性,如果没有视频教程,这个编程如果让一个人去完成,将是一项非常困难的任务,团队合作能减小工作困难度,增强团队意识。
实训指导教师评语
从项目小组的团队意识、合作态度、专业技能、项目完成的质量等方面评价。
签字:
年月日
实训小组成员成绩评定
姓名
专业技能成绩
综合表现等级
注:
专业技能成绩为百分制,由项目指导教师评定。
综合表现等级根据学生综合表现评定,分“优、良、中、及格、不及格”五级。
备注
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 局域网 坦克 大战 课程设计 报告