破惑解自惑 破惑解自惑
关注数: 5 粉丝数: 67 发帖数: 7,770 关注贴吧数: 15
求大神帮我看看 为啥我做的坦克大战 被击中不会消失 界面 import javax.swing.*; import java.awt.*; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.util.Vector; //面板类 public class TanKe_1 extends JFrame { MyPanel huabi=null;//创建 画笔类对象 public static void main(String[] agr) { TanKe_1 t1=new TanKe_1(); } public TanKe_1() { huabi=new MyPanel();//设置画笔类对象 add(huabi);//添加画笔对象 到 界面 addKeyListener(huabi); setSize(400,300);//设置横纵 setLocation(300,280);//设置显示位置 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置关闭 setVisible(true);//设置显示为真 } }//配置画笔类 class MyPanel extends JPanel implements KeyListener,Runnable { MyTank mt=null;//创建 我的坦克对象 Vector<Baozha> bzjh=new Vector<Baozha>(); Vector<DiTank> dtk=new Vector<DiTank>();//泛型引用敌坦克类 int diren=3;//设置敌人坦克数量 Image tp1=null,tp2=null,tp3=null; public MyPanel()//设置画板方法 { mt=new MyTank(100,100);//设置坦克出现位置 for(int x=0;x<diren;x++)//循环创建敌对唐克 { DiTank dt=new DiTank((x)*181+5,0);//出现的坐标 dtk.add(dt);//放进集合 } tp1=Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("")); tp2=Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("")); tp3=Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("")); } public void jzdf(Zidan zd,DiTank dt) { switch(dt.fangxiang) { case 0: case 2: if(zd.x>dt.x && zd.x<dt.x+20 && zd.y>dt.y && zd.y<dt.y+30) { zd.shengming=false; dt.shengming=false; } break; case 1: case 3: if(zd.x>dt.x && zd.x<dt.x+30 && zd.y>dt.y && zd.y<dt.y+20) { zd.shengming=false; dt.shengming=false; } } } //设置画笔方法 public void paint(Graphics g) { super.paint(g);//继承画笔 g.fillRect(0, 0, 400, 300);//上下左右 画布大小布局 this.drawTank(mt.getX(), mt.getY(), g, mt.fangxiang, 0);//设置坦克的移动和转动 for(int x=0;x<dtk.size();x++) { this.drawTank(dtk.get(x).getX(), dtk.get(x).getY(), g, 2, 1);//创建敌对坦克的出现位置 } for(int i=0;i<mt.aa.size();i++)//设置坦克的攻击 和弹药 { Zidan zd=mt.aa.get(i);//设置子弹 if(zd!=null&&zd.shengming==true)//设置子弹的间断 { g.setColor(Color.red);//设置子弹颜色 g.fill3DRect(zd.x,zd.y,3,3, false);//绘制子弹 } if(zd.shengming==false) mt.aa.remove(zd); } for(int i=0;i<bzjh.size();i++) { Baozha bz=bzjh.get(i); if(bz.shengmingqi>6) { g.drawImage(tp1,bz.x,bz.y,30,30,this); }else if(bz.shengmingqi>3) { g.drawImage(tp2,bz.x,bz.y,30,30,this); }else { g.drawImage(tp3,bz.x,bz.y,30,30,this); } bz.suqsd(); if(bz.shengmingqi==0) { bzjh.remove(bz); } } } //设置 坦克的方向和颜色的基本信息 public void drawTank(int x,int y,Graphics g,int FX,int LX) { switch(LX) { case 0://我的坦克 g.setColor(Color.yellow); break; case 1://敌人的坦克 g.setColor(Color.green); break; } switch(FX) { case 0://冲上的方向 g.fill3DRect(x, y, 5, 30, false);//设置3D坦克的左边矩形3D显示为false g.fill3DRect(x+15, y, 5, 30, false);//设置3D坦克右边的矩形 g.fill3DRect(x+5, y+5, 10, 20, false);//设置3d坦克的中间的矩形 g.fillOval(x+5, y+10, 10, 10);//设置3D坦克上面的圆 g.drawLine(x+10,y+15,x+10, y-3);//设置坦克的炮管 break; case 1://冲左的方向 g.fill3DRect(x, y, 30, 5, false);//设置3D坦克的左边矩形3D显示为false g.fill3DRect(x, y+15, 30, 5, false);//设置3D坦克右边的矩形 g.fill3DRect(x+5, y+5, 20, 10, false);//设置3d坦克的中间的矩形 g.fillOval(x+10, y+5, 10, 10);//设置3D坦克上面的圆 g.drawLine(x+15, y+10,x-3, y+10);//设置坦克的炮管 break; case 2://冲下的方向 g.fill3DRect(x, y, 5, 30, false);//设置3D坦克的左边矩形3D显示为false g.fill3DRect(x+15, y, 5, 30, false);//设置3D坦克右边的矩形 g.fill3DRect(x+5, y+5, 10, 20, false);//设置3d坦克的中间的矩形 g.fillOval(x+5, y+10, 10, 10);//设置3D坦克上面的圆 g.drawLine(x+10, y+15,x+10, y+33);//设置坦克的炮管 break; case 3://冲右的方向 g.fill3DRect(x, y, 30, 5, false);//设置3D坦克的左边矩形3D显示为false g.fill3DRect(x, y+15, 30, 5, false);//设置3D坦克右边的矩形 g.fill3DRect(x+5, y+5, 20, 10, false);//设置3d坦克的中间的矩形 g.fillOval(x+10, y+5, 10, 10);//设置3D坦克上面的圆 g.drawLine(x+15,y+10,x+33, y+10);//设置坦克的炮管 break; } } //设置按键 public void keyPressed(KeyEvent e) { if(e.getKeyCode()==KeyEvent.VK_W) { this.mt.setFangxiang(0); this.mt.Shang(); } if(e.getKeyCode()==KeyEvent.VK_A) { this.mt.setFangxiang(1); this.mt.Zuo(); } if(e.getKeyCode()==KeyEvent.VK_S) { this.mt.setFangxiang(2); this.mt.Xia(); } if(e.getKeyCode()==KeyEvent.VK_D) { this.mt.setFangxiang(3); this.mt.You(); } if(e.getKeyCode()==KeyEvent.VK_J) { if(this.mt.aa.size()<8) this.mt.fszd(); } this.repaint(); } @Override public void keyReleased(KeyEvent arg0) { // TODO 自动生成的方法存根 } @Override public void keyTyped(KeyEvent e) { } //设置线程状态 public void run() { while(true) { try { Thread.sleep(100); } catch (InterruptedException e) {} for(int i=0;i<mt.aa.size();i++) { Zidan zd=mt.aa.get(i); if(zd.shengming) { for(int j=0;j<dtk.size();j++) { DiTank dt=dtk.get(j); if(dt.shengming) { this.jzdf(zd,dt); } } } this.repaint(); } } } }
1 下一页