chdyiboke的博客

只要你想做的事,全世界都会给你让路

java项目之——坦克大战14

上一个版本:坦克打出多发子弹;

功能:解决炮弹不消亡的问题,解决坦克出界问题。

           子弹打中对方坦克或者出界,定义一个控制生死的变量。

1.定义变量:live

private boolean live =true;      //炮弹是否在界面的变量
2.定义tc 并且判断islive, 如果 没有存在就调用移除方法。

  private TankClient tc;
  public boolean isLive() {          //调用isLive()来判断
         return live;
         }

public void draw(Graphics g){
        
		if(!live){
        	tc.missiles.remove(this);     //如果不在界面则移除
                return;
        }
		Color c = g.getColor();
		g.setColor(Color.BLACK);
		g.fillOval(x, y, WIDTH,HEIGHT);
		g.setColor(c);
		
		move();
	}
3.重写构造方法,tc来传入fire。	
public Missile(int x, int y,Tank.Direction dir,TankClient tc) {
		this.x = x;
		this.y = y;
		this.dir = dir;
		this.tc = tc;
	}
4.判断是否在界面内。
if(x<0||y<0||x>TankClient.GAME_WIDTH||y>TankClient.GAME_HEIGHT){         //数学上不在界面的表达
			live = false;
		}
5.坦克类中修改。
public Missile fire(){
		int x=this.x+Tank.WIDTH/2-Missile.HEIGHT/2;
		int y=this.y-Missile.WIDTH/2+Tank.HEIGHT/2;
		Missile m = new Missile(x, y, ptDir,this.tc);           //this.tc 是使用对方的引用,对子弹进行控制
		tc.missiles.add(m);
		return m;
	}

6.坦克的出界问题相对简单一些:不让坦克出界,在move中添加代码:
void move(){
	   switch(dir){
	   case L: x -= XSPEED;break;
	   case LU: x -= XSPEED; y -= XSPEED;break;
	   case U: y -= XSPEED;break;
	   case RU: x += XSPEED;y -= XSPEED;break;
	   case R: x += XSPEED;break;
	   case RD: x += XSPEED;y += XSPEED;break;
	   case D: y += XSPEED;break;
	   case LD: x -= XSPEED;y += XSPEED;break;
	   case STOP: break;
	   }	  
	   
	   if(this.dir!=Direction.STOP){
	       this.ptDir = dir;
	   }
	   //不让坦克出界代码
	   if(x < 0) x=0;
	   if(y<0) y=0;
	   if(x+Tank.WIDTH>TankClient.GAME_WIDTH) x=TankClient.GAME_WIDTH-Tank.WIDTH;
	   if(y+Tank.HEIGHT>TankClient.GAME_HEIGHT) y=TankClient.GAME_HEIGHT-Tank.HEIGHT;
   }

总结:子弹出界和坦克出界两个问题不同处理,再次理解持有对方引用的解决问题的方法。

下一版本:制造出敌方坦克。


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chdyiboke/article/details/52280990
文章标签: java 项目
个人分类: java后台--稳健
想对作者说点什么? 我来说一句

java坦克大战游戏源程序

2009年05月24日 140KB 下载

java版本坦克大战源代码

2012年10月12日 143KB 下载

JAVA坦克大战游戏源代码

2009年02月03日 160KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭