本人也是刚看了一下坦克大战的JAVA开发游戏视频教程,但是自己总结了一下坦克大战子弹类的编写过程,总结10条
1:定义一个子弹类,并为其初始化X,Y,dome方向并实现线程
class show implements Runnable
{
int x;
int y;
int dome;
public show(int x,int y,int dome)
{
this.x=x;
this.y=y;
this.dome=dome;
}
}
2:子弹是一辆坦克的属性,我么可以再坦克类中初始化自己的子弹
public Tank
{
public void shouwEmp()
{
//初始化子弹
show s=null;
//定义开火的方向
switch(this.dome) //dome为方向
{
case 0:
//向上走
s=new show(x+10,y,0);
break;
case 1:
//向右走
s=new show(x+30,y+10,1);
break;
case 2:
//向下走
s=new show(x+30,y+50,2);
case 3:
//向左走
s=new show(x+10,y+10,3);
}
}
}
3;判断用户是否按下J键,如果按下则发出子弹
if(arg0.getKeyCode()==KeyEvent.VK_J)
{
//调用发射子弹方法
this.Thank.showEmp();
}
4;在paint方法中画出一个子弹,首先判断是否有子弹
if(s!=null)
{
g.draw3DRect(hero.s.x, hero.s.y, 1,1, false);
}
5:为子弹实现线程
6:在子弹的接口方法中循环并选择子弹的方向
while(true)
{
//让子弹停顿50毫秒
try {
Thread.sleep(50);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
switch(dome)
{
//向上走
case 0:
y-=speel;
break;
//向右走
case 1:
x+=speel;
break;
//向下走
case 2:
y+=speel;
break;
//向左走
case 3:
x-=speel;
break;
}
7:在发射子弹类中启动子弹的线程
8:在painr方法中使用重绘方法,但是容器组件必须实现线程接口
9:实现线程接口,在run()方法中重绘
10:判断子弹是否死亡