J2SE坦克大战(Demo学习总结)(二)

2014-11-24 10:09:32 · 作者: · 浏览: 5
}; //爆破物的直径(由小到大,然后再由大到小,爆破物逐渐消失)


private boolean live = true;



public void draw(Graphics g) {


if(!live) {


tc.explodes.remove(this);


return;


}



if(step == diameter.length) {


live = false;


step = 0;


return;


}



Color c = g.getColor();


g.setColor(Color.ORANGE);


g.fillOval(x, y, diameter[step], diameter[step]);


g.setColor(c);



step ++;


}


这样通过一个数组,就可以不通过线程来控制,以后这种方法值得借鉴



而下面的血块也是借用了上面一种写法,知识稍微改动了点地方:


int step = 0;


private boolean live = true;



//指明血块运动的轨迹,由pos中各个点构成.(目的是让血块按指定的路线动起来)


private int[][] pos = {


{350, 300}, {360, 300}, {375, 275}, {400, 200}, {360, 270}, {365, 290}, {340, 280}


};



private void move() {


step ++;


if(step == pos.length){


step = 0;


}


x = pos[step][0];


y = pos[step][1];


}


这个也是给明了运动轨迹,只不过是循环多次,直到为死亡状态时循环才结束.