坦克大战项目

上传人:hy****d 文档编号:143640490 上传时间:2022-08-26 格式:DOC 页数:11 大小:47.50KB
收藏 版权申诉 举报 下载
坦克大战项目_第1页
第1页 / 共11页
坦克大战项目_第2页
第2页 / 共11页
坦克大战项目_第3页
第3页 / 共11页
资源描述:

《坦克大战项目》由会员分享,可在线阅读,更多相关《坦克大战项目(11页珍藏版)》请在装配图网上搜索。

1、坦克大战项目分组说明讲说者姓名一、 项目结构说明讲说者姓名讲说者姓名项目分12个类,分别为:1. 服务器 TSver1 人 1人2. 服务器线程SeverThad3. 服务器代理线程erverAenThread34. 重绘线程PantThe45. 客户端Tankie41人1人6. 客户端线程Clienthred57. 客户端代理线程Centgenhread8. 作战地图Warap6人9. 坦克Tn10. 子弹Bulet711. 服务端坦克战斗控制ServeWar8人12. 客户端坦克战斗控制ClintWar9人二、 各个类的功能说明1. 服务器Tnkerver可能用到的方法: Serverar

2、类中的构造方法:puic Serverar(Taker ahe)启动游戏方法:pblicvod setSart(bola sart) true为开始,false为停止初始化坦克方法:ubi vdiiilTnk()设置主坦克炮口方向的方法:pubi voi setsDir(int direction)1,2,3,4分别表示上下左右主坦克移动的方法:ublic vohosve()SrveTred类的构造方法:ublicSvrhread (TankSever fathr,SeveSket s)可能用到的对象:服务器代理线程 everAgenThread的对象服务器代理线程 erverAgentThr

3、ead类中的输出流对象服务器类中需要实现以下功能:1) 有ma方法,使其可以运行2) 继承JFrame,通过构造方法创建一个窗体。窗体标题为TanWa-Srver,图标为默认图标cogif,居中显示,大小不可变。窗体用分隔条分为两部分,左侧为主面板Serra(别人提供),右侧为操作面板(自己写),主面板为获取焦点状态。3) 右侧操作面板上有端口号的标签和文本框(默认值9999)、昵称的标签和文本框(默认值Pye2)、建主按钮、开始按钮、停止按钮。开始按钮和停止按钮初始状态为不可用。4) 添加监听功能.窗体: 当单击窗口的关闭按钮时,如果没有客户端连接,即服务器线程未启动,退出程序.如果客户端已

4、经连接成功,即服务器代理线程已运行,则通过服务代理线程的的输出流发出离开消息,关闭代理线程,服务线程和连接后退出程序。右侧面板中:a) 建主按钮按下前,端口号和昵称可输入,开始和停止按钮不可用.根据端口号创建CP连接,如果输入的端口号不是数字,弹出错误提示框,如果输入的数字不在065535之间,弹出错误提示框。以本类对象和TCP连接为参数,调用Serverhrea类的构造方法创建服务器线程。如果创建成功,启动线程并弹出提示框,不成功弹出提示框.建主成功后,端口号和昵称不能更改,停止按钮可用,开始按钮不可用,等待客户端连接。b) 客户端连接成功后,服务器代理线程会被新建并启动,开始按钮被置为可用

5、状态.此时,按下开始按钮后,通过代理线程evergentThread类中的输出流,向客户端发送开始消息。调用Sere类中的seSat方法开始游戏,并将开始按钮设置为无效状态。c) 当服务器代理线程未启动时,按下停止按钮,终止服务器线程并关闭连接,各按钮恢复到初始状态,调用erveWar类中的方法,停止游戏并初始化主机坦克。如果服务器代理线程正在运行,则还要通过服务器代理线程的输出流发出服务端离开的消息。d) 操作面板无事件时,主面板一直为焦点获取状态。左侧主面板:主面板一直处于焦点获取状态.当空格键处于按下状体时,调用ervear类中的方法发射子弹。当方向键第一次按下时,调用SeverWar中

6、的方法改变主坦克的炮口方向,处于按下状态时,调用erWar中的方法移动坦克。2. 服务器线程SreThred服务器线程类需要实现以下功能:1) 有以服务器类对象和TP连接作为参数的构造方法2) 在其它类中能够控制线程的启动启动和停止,并能获取客户端是否已连接3) 线程启动后,等待客户端连接,有客户端连接时,为其分配一个代理线程并传递给服务器.如果客户端已经连接,延时监测。3. 服务器代理线程 ServerAgenhread服务器代理线程类需要实现以下功能:可能用到的方法:eveWa类中的:更新副坦克位置的方法 bic vod uateCient(int dirction,t ,t)显示副坦克发

7、炮的方法ulic id cintFire(in dreio,int,ty)1) 有构造器:以服务器类对象,P连接和服务器线程对象作为参数.定义输入流和输出流。2) 在其他类中能够设置线程的启动和停止。3) 线程启动后,能够接受和发送信息并对接受到的信息进行判断和处理。a) 接受到客户端发送的昵称信息后,在服务器界面弹出提示框。b) 接受到客户端离开的信息后,结束代理线程,关闭输入输出流,关闭连接,反馈代理线程和服务器线程结束信息,结束游戏并在服务器界面弹出提示信息,初始化主机坦克。c) 接受到副坦克更新信息后,获取信息内容并调用everW类中的upelnt方法在服务器界面更新副坦克。d) 接受

8、到副坦克发射子弹的信息后,获取信息内容,并调用SveWa类中的clienFe方法在服务器界面显示发射子弹。4. 重绘线程ainTha重绘服务器窗体5. 客户端TnkClient客户端类需要实现以下功能:1) 有min方法,使其可以运行2) 继承JFrame,通过构造方法创建一个窗体.窗体标题为TankWar-ient,图标为默认图标c。gif,居中显示,大小不可变。窗体用分隔条分为两部分,左侧为主面板ClienWar,右侧为操作面板,主面板为获取焦点状态.3) 右侧面板上有主机名标签和文本框,默认为120.0.1,端口号标签和文本框,默认为999,昵称标签和文本框,默认为Plyer。连接按钮和

9、断开按钮。断开按钮初始状态为不可用。4) 实现监听功能:窗体:当单击窗口的关闭按钮时,如果没有连接,即客户端代理线程未启动,退出程序。如果已经连接成功,即客户端代理线程已运行,则通过客户端代理线程的的输出流发出离开消息,关闭代理线程,服务线程和连接后退出程序。右侧面板:a) 单击连接按钮时,获取端口号并判断。如果不是数字或者不在06553之间弹出提示框.获取昵称,如果为空,弹出提示框。获取主机号,根据主机号和端口号创建连接,连接成功则调用ClintAgentThrad类的构造方法创建代理线程并启动.连接失败时,在客户端界面弹出提示框.b) 单击断开按钮时,通过客户端代理线程的输出流发出离开消息

10、并关闭代理线程和连接。结束客户端游戏,初始化副坦克和客户端窗口。c) 左侧主面板:空格键处于按下状态时,调用CentWar中的方法,使副坦克发射子弹。方向键第一次按下时,调用CliWr中的方法,使副坦克炮口转向,之后此方向键再次处于按下状态时,调用CieWar中的方法移动副坦克。6. 客户端线程 ietThread有构造方法:传递参数为Tanln类的对象可以在其他类中控制线程的启动和停止。延时100m,重绘客户端窗口.7. 客户端代理线程 ClientAgetThread1) 有构造器:以客户端类对象,连接和客户端线程对象作为参数。定义输入流和输出流.2) 在其他类中能够设置线程的启动和停止。

11、3) 线程启动后,能够接受和发送信息并对接受到的信息进行判断和处理。a) 收到服务器离开的消息后,停止客户端的游戏,初始化副坦克。结束代理线程,关闭连接,初始化客户端窗体并弹出提示框。b) 收到服务器开始的消息,启动客户端游戏。c) 收到主坦克位置更新消息后,获取消息内容并更新主机。d) 收到增加子弹消息后,获取消息内容并增加子弹。e) 收到更新子弹位置的消息后,获取消息内容并更新子弹.f) 收到更新敌方坦克消息后,获取消息内容更新坦克。g) 收到删除子弹消息后,获取消息内容并删除子弹.h) 收到加分消息后,获取消息内容并加分。i) 收到减血消息后,获取消息内容并相应减血.8. 地图 rMap

12、地图为网格型。每格大小为220像素,宽0个网格,高35个网格.左上角,右上角,左下角,右下角和中间各有一个格*5格大小的障碍物区对称分布.障碍区填充特殊颜色。坦克不可逾越障碍区和地图边界。9. 坦克 Tan坦克有属性:基本属性:1) 坦克类型:区分电脑坦克还是玩家坦克2) 坦克编号:区分主坦克,副坦克和电脑坦克3) 坦克的移动速度4) 坦克炮口方向:子弹从坦克炮口位置发出5) 坦克的颜色6) 坦克的血量7) 坦克的当前位置其它属性:坦克的生存状态:活着或死亡坦克的得分:主坦克和副坦克分别统计类中包含的方法:1) 基本属性的全属性构造方法,所有属性的e方法和除类型、编号外的属性的st方法。2)

13、坦克移动的方法:朝坦克当前方向做水平或竖直的二维移动3) 绘制坦克的方法:坦克由一个主体、一个盖子、两排轮子和一个炮筒组成。主体为四角为圆角的矩形。盖子在主体中间,为带填充颜色的圆角矩形。炮筒为连接在坦克短边的带填充颜色的矩形.两排轮子对称分布在主体长边两侧,由数个带填充颜色的小圆串成。主坦克、副坦克和电脑坦克的主体用三种不同颜色加以区分。坦克的方向与炮筒所在方向一致。坦克在朝向不同方向时,轮子呈现不同颜色。4) 获取坦克当前所占位置的方法5) 获取坦克移动后所占位置的方法10. 子弹Bulle属性:1) 子弹的编号。每个子弹一个编号2) 子弹所属坦克的编号。3) 子弹的类型。子弹分玩家坦克和

14、电脑坦克两类4) 子弹的方向。上下左右5) 子弹的速度。6) 子弹的杀伤力7) 子弹的起始坐标位置.起始位置必须在炮口处,所以用发射子弹坦克的位置做基准位。8) 子弹存在状态。存活显示,不存活就不显示构造器:1) 用于副坦克子弹的,需要子弹编号和子弹起始位置作参数2) 用于主坦克子弹的,需要除存活状态外的其它属性做参数。方法:1) 子弹编号、归属、类型、方向、杀伤力和起始位置的get方法2) 子弹起始位置的st方法3) 子弹绘制生成的方法4) 子弹向上下左右运动的方法5) 获取子弹所在矩形(炮筒)的t方法11. 服务端坦克战斗 ServeWr构造方法:以TankSrver 类对象做参数,启动服

15、务端窗体实时重绘线程并初始化坦克。方法:1) 初始化坦克通过T类构造方法,创建主坦克,副坦克和五个电脑坦克.主、副坦克在地图下方中间位置,炮口向上。三个电脑坦克分列在地图最上方,炮口向下,另外两个分居左右,炮口互对。2) 有向客户端发送消息的方法3) 有判断子弹是否击中物体的方法a) 子弹击中障碍物、地图边界或敌方坦克,子弹消失b) 同阵营的坦克子弹能够穿越坦克继续移动c) 电脑坦克击中主副坦克后,主副坦克的血量减少d) 将以上信息发送给客户端,实现画面基本同步。4) 获取一个随机位置的方法。随机选取五个位置中的一个,用于生成电脑坦克。如果该位置有坦克则更换随机位置.当前电脑坦克小于五个时则随

16、机生成。5) 判断坦克是否可以移动的方法坦克遇到障碍物、地图边界或其他坦克时不能继续向前移动.6) 主坦克发射子弹的方法、副坦克发射子弹的方法和电脑坦克发射子弹的方法。生成子弹并向客户端发送子弹信息。7) 设置主坦克方向的方法和判断主坦克是否能够开始移动的方法8) 更新副坦克位置和方向的方法9) 服务端游戏绘制方法.a) 游戏开始后,绘制地图,绘制主副坦克并向客户端发送主坦克信息。b) 绘制电脑坦克,电脑坦克随机改变方法,按一定概率发射子弹,可以移动时不间断移动,不能移动时随机改变方向.并向客户端发送电脑坦克的信息.c) 空格键处于按下状态时生成子弹并使其移动,子弹接触到障碍物、地图边界或敌方

17、坦克后消失。并实时把子弹信息传递给客户端。d) 游戏没有开始时,只绘制地图和主副坦克及电脑坦克。e) 绘制主坦克和副坦克的血量条并按战斗情况统计改变血量,主副坦克血量为0时结束游戏,弹出游戏结束提示并向客户端发送信息。12. 客户端坦克战斗 lieta构造方法:以anServr类对象做参数,启动服务端窗体实时重绘线程并初始化坦克。方法:1) 初始化坦克通过Tak类构造方法,创建主坦克,副坦克和五个电脑坦克。主、副坦克在地图下方中间位置,炮口向上。三个电脑坦克分列在地图最上方,炮口向下,另外两个分居左右,炮口互对。2) 客户端绘制方法a) 游戏开始后,绘制地图,绘制主副坦克并向客户端发送主坦克信

18、息。b) 绘制电脑坦克,电脑坦克随机改变方法,按一定概率发射子弹,可以移动时不间断移动,不能移动时随机改变方向。并向客户端发送电脑坦克的信息。c) 空格键处于按下状态时生成子弹并使其移动,子弹接触到障碍物、地图边界或敌方坦克后消失。并实时把子弹信息传递给客户端。d) 游戏没有开始时,只绘制地图和主副坦克及电脑坦克。e) 绘制主坦克和副坦克的血量条并按战斗情况统计改变血量,主副坦克血量为0时结束游戏,弹出游戏结束提示并向客户端发送信息。3) 判断坦克是否可以移动的方法4) 更新主坦克的方法5) 改变副坦克方向的方法6) 移动副坦克的方法7) 增加子弹的方法、更新子弹的方法和删除子弹的方法8) 副坦克发射子弹的方法9) 更新电脑坦克的方法10) 统计主副坦克血量和得分的方法.击杀电脑坦克后得分并回血,血量不能超过满血血量11) 向服务端发送信息的方法。三、 项目总结1. 自己以前的错误认识2. 收获和提高自身的欠缺文中如有不足,请您见谅!11 / 11

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!