java小程序死机_求解,刚写的小程序,一运行我机器就死机

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

this.speed = speed;

}

//创建坦克向4个方向运动的方法

public void goUp()

{

this.setDirect(0);

y -= speed;

}

public void goDown()

{

this.setDirect(1);

y += speed;

}

public void goLeft()

{

this.setDirect(2);

x -= speed;

}

public void goRight()

{

this.setDirect(3);

x += speed;

}

}

//开始定义详细的坦克类

class MyTank extends Tank

{

//坦克开火时创建一个子弹,并启动线程

Shot shot = null;

//构造函数,创建一个新对象

public MyTank(int x ,int y ,int color,int direct)

{

super(x,y,color,direct);

}

//开火的方法

public void fire()

{

//根据坦克的方向确定在哪个点画出子弹

switch(this.getDirect())

{

case 0:

shot = new Shot(this.getX()-1, this.getY()-23,0);

break;

case 1:

shot = new Shot(this.getX()-1, this.getY()+20,1);

break;

case 2:

shot = new Shot(this.getX()-23, this.getY()-1,2);

break;

case 3:

shot = new Shot(this.getX()+20, this.getY()-1,3);

break;

} //画出子弹后,启动子弹的线程

Thread t1 = new Thread(this.shot);

t1.start();

}

} //定义敌人类

class EnemyTank extends Tank

{

public EnemyTank(int x ,int y ,int color,int direct)

{

super(x,y,color,direct);

}

}

//开始定义JPanel类,开始画坦克

class MyJPanel extends JPanel

{

MyTank mt1 = null;

int size = 3;

Vector aa = new Vector();

//在构造方法里直接添加一个我的坦克对象,那么new panel时也吧new 坦克的任务完成了

public MyJPanel(MyTank mt1)

{

this.mt1=mt1;

//画敌人的坦克

for(int i=0;i

{

EnemyTank tmp = new EnemyTank((i+1)*50,50,0,1);

aa.add(tmp);

}

}

//重写paint方法,在里面初始化

public void paint(Graphics g)

{

//先初始化画笔,这句话必须写的

super.paint(g);

//开始画画了,先画出一块黑的屏幕出来,就是画出一个屏幕那么大的黑块

g.setColor(Color.BLACK);

g.fillRect(0, 0, 500, 500);

this.drawTank(mt1.getX(), mt1.getY(), g, mt1.getColor(), mt1.getDirect());

this.drawShot(g);

for(int i =0;i

{

this.drawTank(aa.get(i).getX(), aa.get(i).getY(), g,aa.get(i).getColor(),aa.get(i).getDirect());

}

}

//把话坦克的内容封装成一个方法,在这直接添加

//开始写画坦克的程序了

public void drawTank(int x,int y,Graphics g ,int color,int direct)

{

//选择颜色

switch(color)

{

case 0:

g.setColor(Color.BLUE);

break;

case 1:

g.setColor(Color.YELLOW);

break;

}

//0上 1下 2左 3右

switch(direct)

{

case 0:

g.fill3DRect(x-15, y-15, 5, 30,false);

g.fill3DRect(x-10,y-10,20,20,false);

g.fill3DRect(x+10, y-15, 5, 30, false);

g.fillOval(x-5, y-5, 10, 10);

g.drawLine(x,y,x,y-20);

break;

case 1:

g.fill3DRect(x-15, y-15, 5, 30,false);

g.fill3DRect(x-10,y-10,20,20,false);

g.fill3DRect(x+10, y-15, 5, 30, false);

g.fillOval(x-5, y-5, 10, 10);

g.drawLine(x,y,x,y+20);

break;

case 2:

g.fill3DRect(x-15, y-15, 30, 5,false);

g.fill3DRect(x-10,y-10,20,20,false);

g.fill3DRect(x-15, y+10, 30, 5, false);

g.fillOval(x-5, y-5, 10, 10);

g.drawLine(x,y,x-20,y);

break;

case 3:

g.fill3DRect(x-15, y-15, 30, 5,false);

g.fill3DRect(x-10,y-10,20,20,false);

g.fill3DRect(x-15, y+10, 30, 5, false);

g.fillOval(x-5, y-5, 10, 10);

g.drawLine(x,y,x+20,y);

break;

}

}

//画子弹

public void drawShot(Graphics g)

{

g.fill3DRect(mt1.shot.getX(), mt1.shot.getY(), 3, 3, false);

}

} //设计监听类

class MyListener implements KeyListener

{ private MyTank mt = null;

private MyJPanel mp =null;

public MyListener(MyTank mt,MyJPanel mp)

{

this.mt=mt;

this.mp=mp;

}

public void keyPressed(KeyEvent e) {

if(e.getKeyCode()==KeyEvent.VK_UP)

{

mt.goUp();

}else if(e.getKeyCode()==KeyEvent.VK_DOWN)

{

mt.goDown();

}else if(e.getKeyCode()==KeyEvent.VK_LEFT)

{

mt.goLeft();

}else if(e.getKeyCode()==KeyEvent.VK_RIGHT)

{

mt.goRight();

}

if(e.getKeyCode()==KeyEvent.VK_J)

{

mt.fire();

}

mp.repaint();

} @Override

public void keyReleased(KeyEvent e) {

// TODO Auto-generated method stub

} @Override

public void keyTyped(KeyEvent e) {

// TODO Auto-generated method stub

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值