Java游戏开发之坦克大战代码(七)

2014-11-24 08:49:44 ? 作者: ? 浏览: 12
ect) {
case 0://向上
s = new shot(x + 10 , y ,0);
ss.add(s);
break;
case 1://向下
s = new shot(x + 10 , y + 30 , 1);
ss.add(s);
break;
case 2://向左
s = new shot(x , y + 10 , 2);
ss.add(s);
break;
case 3://右
s = new shot(x + 30 , y + 10 , 3);
ss.add(s);
break;
default:
break;
}
Thread t = new Thread(s);
t.start();
}
}

}


//}
// //随机改变方向
// public void changeDirect(){
//
// }
if(isdirects){
this.direct = (int) (Math.random() * 4);
}
if(this.isLive == false){
break;
}
if(ss.size() < 3){

}

}

}
public void setEts(Vector ets) {
this.ets = ets;

}


// @Override
// public void run() {
// while(true){
// try {
// Thread.sleep(50);
// } catch (InterruptedException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
//
// y ++ ;
// System.out.println(y);
// }
//
// }
}


class Hero extends Tank{
//
public Hero(int x , int y, int direct
, int type,int speed, boolean isLive){
super(x, y, direct, type,speed , isLive);
}
Vector ss = new Vector();
shot s = null;
//开火
public void shotEnemy(){
//System.out.println("shotEnemy");
if(Recoder.getMyLife() > 0){//生命没有了,不能发子弹

switch (this.direct) {
case 0://向上
s = new shot(x + 10 , y ,0);
ss.add(s);
break;
case 3://右
s = new shot(x + 30 , y + 10 , 3);
ss.add(s);
break;
case 1://向下
s = new shot(x + 10 , y + 30 , 1);
ss.add(s);
break;
case 2://向左
s = new shot(x , y + 10 , 2);
ss.add(s);
break;
default:
break;
}
Thread t = new Thread(s);
t.start();

}
}

//向上,下,左,右
public void MoveUp(){
if(y - this.speed > 0){
y -= speed;
}
}
public void MoveDown(){
if(y + this.speed < 300 -30){
y += speed;
}
}
public void MoveLeft(){
if(x - this.speed > 0){
x -= speed;
}
}
public void MoveRight(){
if(x + this.speed < 400 -30){
x += speed;
}
}
}
class shot implements Runnable{
int x ,y;
int direct;
int speed = 20; //子弹速度
boolean isShot = true;
boolean isLive = true;//子弹是否活着
public shot(int x,int y, int direct){
this.x = x;
this.y = y;
this.direct = direct;


}


@Override
public void run() {
while(true){
try {
Thread.sleep(50);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(isShot){
switch (direct) {
case 0://向上
y -= speed;
break;
case 1://下
y += speed;
break;
case 2://右
x -= speed;
break;
case 3://左
x += speed;
break;

default:
break;

}
}
//System.out.println(x + " " + y);
if(x < 0 || x > 400 || y < 0 || y > 300){
//System.out.println("this.islive = false");
this.isLive = false;
break;
}
}

}
}


-->

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: