- 1、本文档共11页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[坦克大战项目
坦克大战项目分组说明
项目结构说明
项目分12个类,分别为:
服务器 TankServer 1 1人
服务器线程 ServerThread 3
服务器代理线程 ServerAgentThread 3
重绘线程 PaintThread 4
客户端 TankClient 4 1人
客户端线程 ClientThread 5
客户端代理线程 ClientAgentThread 5
作战地图 WarMap 6
坦克 Tank 6
子弹 Bullet 7
服务端坦克战斗控制 ServerWar 8 1人
客户端坦克战斗控制 ClientWar 9 1人
各个类的功能说明
服务器 TankServer
可能用到的方法:
ServerWar类中的
构造方法:public ServerWar(TankServer father)
启动游戏方法:public void setStart(boolean start) true为开始,false为停止
初始化坦克方法:public void initialTank()
设置主坦克炮口方向的方法:public void setHostDir(int direction) 1,2,3,4分别表示上下左右
主坦克移动的方法:public void hostMove()
ServerThread类的构造方法:
public ServerThread (TankServer father,ServerSocket ss)
可能用到的对象:
服务器代理线程 ServerAgentThread的对象
服务器代理线程 ServerAgentThread类中的输出流对象
服务器类中需要实现以下功能:
有main方法,使其可以运行
继承JFrame,通过构造方法创建一个窗体。
窗体标题为TankWar—Server,图标为默认图标ico.gif,居中显示,大小不可变。窗体用分隔条分为两部分,左侧为主面板ServerWar(别人提供),右侧为操作面板(自己写),主面板为获取焦点状态。
右侧操作面板上有端口号的标签和文本框(默认值9999)、昵称的标签和文本框(默认值Player2)、建主按钮、开始按钮、停止按钮。开始按钮和停止按钮初始状态为不可用。
添加监听功能。
窗体:
当单击窗口的关闭按钮时,如果没有客户端连接,即服务器线程未启动,退出程序。如果客户端已经连接成功,即服务器代理线程已运行,则通过服务代理线程的的输出流发出离开消息,关闭代理线程,服务线程和连接后退出程序。
右侧面板中:
建主按钮按下前,端口号和昵称可输入,开始和停止按钮不可用。根据端口号创建TCP连接,如果输入的端口号不是数字,弹出错误提示框,如果输入的数字不在0~65535之间,弹出错误提示框。以本类对象和TCP连接为参数,调用ServerThread类的构造方法创建服务器线程。如果创建成功,启动线程并弹出提示框,不成功弹出提示框。建主成功后,端口号和昵称不能更改,停止按钮可用,开始按钮不可用,等待客户端连接。
客户端连接成功后,服务器代理线程会被新建并启动,开始按钮被置为可用状态。此时,按下开始按钮后,通过代理线程ServerAgentThread类中的输出流,向客户端发送开始消息。调用Server类中的setStart方法开始游戏,并将开始按钮设置为无效状态。
当服务器代理线程未启动时,按下停止按钮,终止服务器线程并关闭连接,各按钮恢复到初始状态,调用ServerWar类中的方法,停止游戏并初始化主机坦克。如果服务器代理线程正在运行,则还要通过服务器代理线程的输出流发出服务端离开的消息。
操作面板无事件时,主面板一直为焦点获取状态。
左侧主面板:
主面板一直处于焦点获取状态。当空格键处于按下状体时,调用ServerWar类中的方法发射子弹。当方向键第一次按下时,调用ServerWar中的方法改变主坦克的炮口方向,处于按下状态时,调用ServerWar中的方法移动坦克。
服务器线程 ServerThread
服务器线程类需要实现以下功能:
有以服务器类对象和TCP连接作为参数的构造方法
在其它类中能够控制线程的启动启动和停止,并能获取客户端是否已连接
线程启动后,等待客户端连接,有客户端连接时,为其分配一个代理线程并传递给服务器。如果客户端已经连接,延时监测。
服务器代理线程 ServerAgentThread
服务器代理线程类需要实现以下功能:
可能用到的方法:
ServerWar类中的:
更新副坦克位置的方法 public void updateClient(int direc
文档评论(0)