糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > tankwar的java坦克子弹撞墙_TankWar 单机(JAVA版)版本2.0.5 坦克撞墙的处理

tankwar的java坦克子弹撞墙_TankWar 单机(JAVA版)版本2.0.5 坦克撞墙的处理

时间:2020-11-02 14:57:42

相关推荐

tankwar的java坦克子弹撞墙_TankWar 单机(JAVA版)版本2.0.5 坦克撞墙的处理

首先附上运行结果:

从图中可以看完无论是我的坦克 还是敌方坦克都不能通过石头墙 土墙 水池。可以通过灌木丛

道理和子弹击中坦克一样。获取地图的矩形位置,坦克的矩形位置,判断两个矩形是否相交。如果相交再根据地形是否为灌木丛

等,让坦克回到移动前的位置。

首先在wall类中求出各种地形的宽和高

public void setWidthAndHeight(Image img)

{

width=img.getWidth(TankClient.tc);

height=img.getHeight(TankClient.tc);

}

然后返回该墙体的矩形位置的方法

public Rectangle getRec()

{

return new Rectangle(x, y, width, height);

}

最后别忘了变量id的get 方法

public int getId() {

return id;

}

做完了这些 ,就要在Tank类中判断坦克是否和墙体相交

//判断坦克是否撞墙

public boolean tankHitWall(Wall wall)

{

if(this.getRec().intersects(wall.getRec()))

{

int id=wall.getId();

if(id==2||id==3||id==4||id==6)

{

return true;

}

}

return false;

}

翻译成中文:

如果当前坦克和wall墙体相交(Rectangle.intersects(Rectangle))这个方法就是判断两个矩形是否相交的

id=墙体的类别

如果wall是石头墙或者土墙或者水池

撞墙了

没有撞墙

如果坦克撞墙了怎么回到之前的位置?

所以我又定义了两个整形变量oldX,oldY 。

// 坦克位移前坐标

private int oldX;

private int oldY;

在Tank类的move方法中存贮坦克移动之前的位置

oldX=x;

oldY=y;

然后就是遍历墙体集合 判断坦克是否撞墙。在哪里判断呢?肯定要在move方法里~

坦克移动就是在这里嘛

for(Wall wall:TankClient.wallsList)

{

if(tankHitWall(wall))

{

x=oldX;

y=oldY;

}

}

如果撞墙了就回到之前的位置~

ok了~~加油哦

如果觉得《tankwar的java坦克子弹撞墙_TankWar 单机(JAVA版)版本2.0.5 坦克撞墙的处理》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。