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

2019-04-16 18:16

drawingPanel()和setBackground(Color c)创建一个面板并设置背景颜色,再通过setBounds()和setLayout()方法定义了页面的大小并将页面布局定义为空。通过add()方法向页面添加按钮和文本框。使用setColor(Color c)方法设置面板颜色为指定颜色,再通过继承自java.awt.Graphics类中的drawString(String,int,int)方法向面板添加并输出当前关数及剩余敌人数,通过if判断语句进行判断,如果消灭坦克数量大于敌方坦克数量则输出胜利场景。

4.2子弹功能设计

该模块用setColor()方法设置子弹颜色为浅灰色,使用g.fillRect(int,int,int,int)方法设置子弹水平或垂直发射时的形状,子弹和什么东西相交通过if()判断语句和equals()方法来鉴定,然后再处理相交时子弹和其他对象的属性变化。具体代码如下:

public void draw(Graphics g) { }

if(!border.intersects(map)){

8

g.setColor(Color.lightGray); if(direction == 0 || direction == 1)

g.fillRect(border.x + 1, border.y +1, 3, 9); g.fillRect(border.x +1, border.y + 1, 9, 3); if(direction == 2 || direction == 3)

gameModel.removeActor(this); notifiyOwner(); makeBomb(); writeToOutputLine(); return;

if(gameModel.actors[i].getType().equals(\

Steelwall temp =(Steelwall)gameModel.actors[i];

if(!temp.walldestoried){

temp.damageWall(border,bulletpower,direction);

}

wall temp = (wall)gameModel.actors[i]; if(!temp.walldestoried){ }

bullet temp = (bullet)gameModel.actors[i]; if(temp.owner.getType().equals(\hitTarget = true;

if(temp.bulletdestoried)

hitTarget = true;

hitTarget = true;

if(temp.bulletdestoried)

}else if(gameModel.actors[i].getType().equals(\

temp.damageWall(border,bulletpower,direction);

}else if(gameModel.actors[i].getType().equals(\

} }

gameModel.removeActor(this); notifiyOwner(); makeBomb(); writeToOutputLine(); return; }

}

}

gameModel.removeActor(gameModel.actors[i]); temp.notifiyOwner(); }

if(owner.getType().equals(\

player temp = (player)gameModel.actors[i]; temp.hurt(); }else{ }

hitTarget = true;

}else if(gameModel.actors[i].getType().equals(\

}else if }

enemy temp = (enemy)gameModel.actors[i]; player tempe = (player)owner; if(temp.health == 0)

tempe.scores+=temp.type*100; temp.hurt(); hitTarget = true;

base temp = (base)gameModel.actors[i]; temp.doom(); hitTarget = true;

gameModel.gameOver = true;

(gameModel.actors[i].getType().equals(\

}else if(gameModel.actors[i].getType().equals(\

if(hitTarget){

4.3坦克功能设计

坦克吃掉了什么特殊武器图标通过if()判断语句和equals()方法来鉴定,如果吃到TNT图标,则已经出现了的敌方坦克全部被炸毁;如果吃到坦克图标,玩家坦克加一条生命;如果吃到五角星图标,则提升玩家坦克子弹火力并且速度加快,可以打破铁墙;若是头盔图标,则玩家坦克获得防护盾且免疫敌方子弹;如果吃到铁墙图标,则基地由普通墙变为铁墙,如果吃到钟表图标,

9

则时间停止,所有敌方坦克静止。具体代码如下:

if(gameModel.actors[i].getType().equals(\

scores+=50;powerUp temp = (powerUp)gameModel.actors[i]; int function = temp.function; if(function == 0){ upgrade();

}else if(function == 1){ base tempe = (base)gameModel.actors[4];tempe.steelWallTime = 600; }else if(function == 2){

for(int j = 0; j < gameModel.actors.length; j++)

if(gameModel.actors[j] != null)

if(gameModel.actors[j].getType().equals(\

enemy tempe = (enemy)gameModel.actors[j];

gameModel.addActor(new bomb(tempe.xPos, tempe.yPos, \

gameModel));

gameModel.removeActor(gameModel.actors[j]);}

level.NoOfEnemy = 0;level.deathCount = 20 - level.enemyLeft;}else if(function == 3){ InvulnerableTime = 300 + (int)Math.random()*400; }else if(function == 4){

enemy.freezedTime = 300 + (int)Math.random()*400;

enemy.freezedMoment = ServerModel.gameFlow;

}else if(function == 5){

if(status < 3)numberOfBullet++;

status =4;health = 2;if(type.equals(\else

for(int j = 0; j < 4; j ++)

for(int j = 0; j < 4; j ++)textures[j] = gameModel.textures[66+j];

textures[j] = gameModel.textures[84+j];

}else if(function == 6){ life++;} 4.4服务器设计 4.4.1 ServerModel类

在ServerModel类,实现了ActionListener接口,具备了监听功能。创建了一些连接变量和游戏变量,设置了布尔类型的服务器状态变量,使用构造器完成了消息队列信息的设置,使用createServer(){}方法建立主机,当布尔变量serverCreated的值为true时,主机创建成功,还设置了一个端口号,用try{}catch{}语句处理代码执行时发生的异常,并给出错误提示,服务器通过accept()方法与客户端建立连接,当端口号没有被其他应用程序占用并IP地址正确,则成功完成连接,载入游戏,如若不然,就会显示相应的错误提示。使用addMessage()在屏幕上显示消息,使用removeMessage()方法删除屏幕上的消息,通过addActor()和remove()方法完成了向地图中增添新的物体对象和清除已经不存在了的物体对象的操作。具体代码如下:

public void createServer(){

10

addMessage(\正在建立主机(端口9999)\try {

serverSocket = new ServerSocket(9999); serverCreated = true;

} catch (Exception e) {

addMessage(\无法建立主机,请确认端口9999没有被别的程序使用\ System.out.println(e); t.stop();

return;

}

addMessage(\建立完成,等待玩家连接\ try {

clientSocket = serverSocket.accept();

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

clientSocket.getInputStream()));

} catch (Exception e) {

addMessage(\连接中出现错误,请重新建立主机\ serverCreated = false; clientConnected = false; t.stop(); try{ serverSocket.close(); clientSocket.close(); out.close();

in.close();

}catch(Exception ex){}

return;

}

view.messageField.setEnabled(true);

addMessage(\玩家已连接上,开始载入游戏\ out.println(\ textures = new Image[88];

for(int i = 1; i < textures.length+1; i++)

textures[i-1] = Toolkit.getDefaultToolkit().getImage(\ actors = new Actor[400]; level.loadLevel(this); P1 = new player(\ addActor(P1);

P2 = new player(\

addActor(P2);

11

}

public void addMessage(String message){

}

if(messageIndex < 8){ } else{ }

if(messageIndex == 0)

return; messageIndex--;

for(int i = 0; i < messageIndex; i++)

messageQueue[i] = messageQueue[i+1]; messageQueue[messageIndex] = null; if(!gameStarted)

view.mainPanel.repaint(); for(int i = 0; i < 7; i++)

messageQueue[i] = messageQueue[i+1]; messageQueue[7] = message;

messageQueue[messageIndex] = message; messageIndex++;

}

for(int i = 0; i < actors.length; i ++ ) }

if(actors[i] == actor){

actors[i] = null; break;

gameStarted = true;

view.mainPanel.actors = actors; view.mainPanel.gameStarted = true;

addMessage(\载入完毕,游戏开始了!\

public void removeActor(Actor actor){

public void removeMessage(){

4.4.2 feedbackHandler类

feedbackHandler类从客户端程序解码指令字符串,然后将字符串转换为真正的指令。通过while(!instruction.substring(i, i+1).equals(\?\语句来判断其指令,并根据其指令来完成相对性的操作。

4.4.3 其他各类设计

Lever类设置了不同的关卡,通过if(1+ (currentLevel-1)%8 == num){}判断语句来加入关卡,在进入下一关卡时,上一个关卡的所有东西都会被系统清理,并且增加了游戏难度。同时还设置了胜利场景。

12


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

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

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

马上注册会员

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