TankWar 单机(JAVA版)版本2.3~版本2.4 为坦克画血条

网友投稿 280 2022-09-06

TankWar 单机(JAVA版)版本2.3~版本2.4 为坦克画血条

运行结果:

为了在坦克上方画血条 。血条首先要有坐标x,y  宽和高width和height

血量的多少life也要有。

所以新建类Life要有这些参数

Life类如下:

package tankWar;import java.awt.Color;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Rectangle;import java.awt.geom.Rectangle2D;public class Life { private int x; private int y; private int width=40; private int height=10; private int life; public Life() { super(); // TODO Auto-generated constructor stub } public Life(int x, int y,int life) { super(); this.x = x; this.y = y; this.life=life; } public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { return y; } public void setY(int y) { this.y = y; } public void draw(Graphics g){ Graphics2D g2=(Graphics2D) g; //画外圈 Rectangle2D r2=new Rectangle2D.Double(x, y-height, width, height); g2.setColor(Color.YELLOW); g2.draw(r2); //根据血量比例画血条 Rectangle2D r=new Rectangle2D.Double(x+1, y-height+1, width*((double)life/100)-1, height-1); g2.setColor(Color.RED); g2.fill(r); }}

起初调试发现,坦克被击中一下  血量就为0  后来想了想  life/100这里。因为life是整形,除以100保留整数为0.所以强转为double

最后在Tank类中画坦克的时候画血条即可。

private void drawEnemyTanks(Graphics g) { // TODO Auto-generated method stub // 画敌方坦克 for (Tank t : enemyTanks) { if (t.isbLive()) { //画坦克 t.draw(g); //画血条 Life life=new Life(t.getX(), t.getY(), t.getLive()); life.draw(g); } else { // 坦克死亡 画爆炸 Bomb b = new Bomb(t.getX() - 50, t.getY() - 30); b.draw(g); enemyTanks.remove(t); } } }

因为我的坦克不在集合里面,自己写

// 画我的坦克 if (myTank.isbLive()) { myTank.draw(g); Life life=new Life(myTank.getX(), myTank.getY(), myTank.getLive()); life.draw(g); } else { // 游戏结束 isGameOn = false; }

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:张之臻成公开赛时代首位跻身温网正赛的中国内地男球员!
下一篇:矩阵连乘问题(动态规划)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~