基于Java的坦克大战游戏的设计与实现毕业设计论文任务书+开题报(5)

2019-04-16 18:16

Player类通过构造器设置了玩家坦克的生命数量,生成时的方向和无敌时间,以及健康状态,

子弹数量等。通过if(type.equals( \来判断两个玩家并设置其坦克的初始位置,用drawImage()方法绘制玩家坦克,当玩家敲击开火键时,会用if()语句判断是否慢如条件,若满足就会生成一个子弹,并且子弹的位置、速度等属性参数都会被设置好,再通过add()方法添加子弹。在坦克的下一个移动有效的前提下根据玩家坦克的移动定义玩家坦克的下一个边界,并判断是否与地图边界和其他物体对象相交,设置相交时坦克与物体对象会发生的变化情况。当玩家坦克被击毁时,其生命减少,使用reset()方法将玩家坦克路径重置为空,遗弃所有坐标和点类型,设置其位置为游戏开始时的位置。

在powerUp类中实现了对玩家坦克子弹火力的增加。

在Ticker类运用构造器建立了时间发生器,实现了runnable接口,并调用了其run()方法。 在ServerControler类处理来自服务器端视图框架的输入,实现了玩家消息互通功能。使用了构造器view.buttonName.addActionListener()方法完成了按钮功能的设计。使用addKeyListener(new KeyAdapter()){}方法增加了键盘输入的操作,再通过keyPressed(KeyEvent e)方法来实现,通过if(e.getKeyCode() == KeyEvent.VK_UP)语句来判断并执行相应的方向移动操作,通过if(e.getKeyChar() == 's')判断并执行”s”键的操作,if(e.getKeyCode()==e.VK_ENTER)判断是否点击Enter键,再通过if(e.getKeyChar() ==?)来判断输入什么键并执行相应的操作。通过keyReleased(KeyEvent e)方法来释放给定的键。具体代码如下:

if(!model.gameStarted){ }

if(!view.messageField.getText().equals(\ }

4.5 客户端设计 4.5.1 ClientModel类

在ServerModel类,实现了ActionListener接口,具备了监听功能。创建了一些连接变量和游戏变量,设置了布尔类型的客户端状态变量,使用构造器完成了消息队列信息的设置,用try{}catch{}语句处理代码执行时发生的异常,给出错误提示,使用add()方法向地图中添加对象,客户端程序实际上不执行任何逻辑计算,它只接受指令,将指令字符串做出的反馈告诉客户端。具体代码如下:

public void connectServer(){

addMessage(\正在连接主机\try{

serverIP = view.IPfield.getText();

InetAddress addr = InetAddress.getByName(serverIP);

13

model.addMessage(\还没有和别的玩家联上, 无法发送对话\

return;

model.addMessage(\主机端玩家说:\model.playerTypedMessage += \view.messageField.setText(\

model.addMessage(\对话内容不能为空\

}else{

clientSocket = new Socket(addr, 4321);

=

new

BufferedReader(new

out = new PrintWriter(clientSocket.getOutputStream(), true); in

InputStreamReader(clientSocket.getInputStream()));}catch(Exceptione)

{t.stop();System.out.println(e);

addMessage(\连接出现错误,请确认1.输入的IP是否正确 2.主机端已存在\

return;}

4.5.2 instructionHandler类

instructionHandler类只有客户端可读,它对从服务器程序反馈的指令字符串进行解码,然后将字符串转换为真正的指令,通过while循环语句和if判断语句来判断指令,并执行相应的指令动作,具体实现方法如下:

if(perInstruction.substring(0,1).equals(\

level.loadLevel(gameModel, Integer.parseInt(perInstruction.substring(1,2))); k++){

if(gameModel.drawingList[k] !=null){if(gameModel.drawingList[k].getxPos() == xPos &&

}

wall tempWall = new wall(xPos, yPos, 4, gameModel); }

}

tempWall.shape = shape;

gameModel.drawingList[k] = tempWall;

gameModel.drawingList[k].getyPos() == yPos){

return;}

if(perInstruction.substring(0,1).equals(\k = 0; k < gameModel.drawingList.length;

if(perInstruction.substring(0,1).equals(\= new normalObject(260, 498, gameModel, \

if(perInstruction.substring(0,1).equals(\

gameModel.addActor(new bullet(xPos, yPos, gameModel, direction))} if(perInstruction.substring(0,1).equals(\

gameModel.addActor(new bomb(xPos, yPos, size, gameModel)); } if(perInstruction.substring(0,1).equals(\

gameModel.addActor(new shield(xPos, yPos, gameModel)); } if(perInstruction.substring(0,1).equals(\

14

}

if(!gameModel.gameOver){ }

gameModel.gameOver = true;

gameModel.addMessage(\ 想再玩一次吗 ( y / n ) ?\

if(perInstruction.substring(0,1).equals(\

int temp = Integer.parseInt(perInstruction.substring(1,2));

if(temp == 0){ }

if(gameModel.gamePaused){

gameModel.addMessage(\主机端玩家取消了暂停\

gameModel.gamePaused = false;}

}else{if(!gameModel.gamePaused){

gameModel.addMessage(\主机端玩家暂停了游戏\ }

gameModel.gamePaused = true;

4.5.3 其他各类的实现

在shield类中,使用了构造器,并实现了玩家坦克吃掉头盔图标后获得的防护盾的功能,通过draw(Graphics g){}方法绘制防护盾,用方法setColor(Color c)设置其颜色,drawRect()设置防护盾的x,y坐标和高度、宽度,当护盾时间结束时,通过removeActor()方法去除护盾。在level类中,定义了游戏正在玩的关数,设置了不同的关卡,通过if(1+ (levelIndex-1)%8 == num){}判断语句来加入关卡,在进入下一关卡时,上一个关卡的所有东西都会被系统清理,并且增加了游戏难度。此类只有一层对象,所以是一个静态变量。normalObject类代表所有其他对象。ClientControler类功能与ServerControler相同,都是实现按钮的功能和处理键盘输入操作。

5.游戏测试 5.1 测试方法

白盒测试主要是检查程序的内部逻辑结构设计。根据源代码的组织结构查找软件缺陷,但是如果要把整个网站系统的代码都要检测到也是不可能的,所以要选择最重要的核心的代码进行白盒测试。

黑盒测试不需要研究软件内部的逻辑结构和布局,以及代码的具体实现,它根据程序软件的作用和外部结构的特点来检查漏洞的存在,从整个程序使用过程的角度来检查漏洞,这就导致了黑盒测试只能局限的检查出该软件在功能和使用的时候的问题。

本游戏程序选择使用白盒测试方法。当然,还有其他的测试方法:比如静态分析方法和动态测试方法等等。我们可以在综合的需求分析之后进行选择。

5.2 系统测试 5.2.1 游戏启动测试

运行Eclipse中的server项目和client项目或双击server文件夹和client文件夹下的Play.BAT文件来运行游戏,游戏启动成功,看到了游戏界面。如图3所示。

15

图3 启动测试图

5.2.2 页面按钮测试

(1)在服务器端,点击“建立主机”按钮,成功建立主机,并给出了提示。如图4所示。

图4 建立主机按钮测试图

(2)在客户端,在页面上方的文本框内输入IP地址:127.0.0.1,然后点击“连接主机”按钮。连接成功并给出提示,进入游戏。如图5所示。

图5 连接主机按钮测试图

(3)点击帮助按钮,成功在页面上显示游戏的方法。如图6所示。

图6 帮助按钮侧视图

(4)点击页面上方的暂停/继续按钮,若游戏正在进行,点击这个按钮就会暂停游戏,然后再点击,就会取消暂停,并且在页面上给出提示。在页面下方的文本框内输入对话消息,点击发送按钮,成功发送消息,并且在页面上显示了通话内容。如图7所示。

16

图7 暂停/继续与发送按钮测试图

5.2.3 玩家坦克测试

敲击方向键,坦克也成功向着相同的方向移动,点击“s”键,成功发射子弹。如图8所示。

图8 坦克测试图

5.2.4 超级武器测试

玩家坦克子弹打中敌方红色坦克,在地图上随机的位置生成了随机的图标,玩家坦克吃到各种图标后成功地获得了该图标所对应的功能。

5.2.5 胜利与失败测试

在游戏中击毁了所有敌方坦克,成功地显示了“过关了!”界面。

玩家坦克数量为0或基地被敌方坦克攻破了,成功地在页面上显示了“GAME OVER!想再玩一次吗(y/n)?”的消息。若游戏双方都选择都输入“y”,则游戏重新开始,并给出了提示。

5.3 测试分析和小结

经过测试,游戏正常运行,并实现了游戏的全部主要功能,系统稳定地处理了游戏相关数据,对错误给出提示,对异常进行捕获和处理。由此可见,本游戏程序安全性较好,没有特别大的漏

17


基于Java的坦克大战游戏的设计与实现毕业设计论文任务书+开题报(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:江苏省连云港市2013届高二第二学期期末模拟试题(三套)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: