<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                我方坦克可以發射移動的子彈 Test.java ~~~ package tkdz; import javax.swing.*; import java.awt.*; public class Test extends JFrame{ MyPanel mp =null; public static void main(String[] args){ Test t1 =new Test(); } public Test(){ mp =new MyPanel();//面板 this.add(mp); this.addKeyListener(mp);//添加鍵盤監聽 this.setSize(400,300); this.setLocation(300, 280); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } } ~~~ Tank.java ~~~ package tkdz; public class Tank { int x=0,y=0; int fangxiang=0;//方向 int sudu=1;//速度 public int getFangxiang() { return fangxiang; } public void setFangxiang(int fangxiang) { this.fangxiang = fangxiang; } public int getSudu() { return sudu; } public void setSudu(int sudu) { this.sudu = sudu; } public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { return y; } public void setY(int y) { this.y = y; } public Tank(int x, int y) { super(); this.x = x; this.y = y; } } ~~~ MyTank.java ~~~ package tkdz; public class MyTank extends Tank{ Zidan zd=null; public MyTank(int x, int y) { super(x, y); } public void xiangshang() { y-=sudu; } public void xiangzuo() { x-=sudu; } public void xiangxia() { y+=sudu; } public void xiangyou() { x+=sudu; } //子彈定義在我的坦克里,因為子彈是隨著我的坦克走的 public void fszd(){ switch(this.fangxiang){ case 0: zd=new Zidan(x+10,y,0);//0控制的子彈方向 break; case 1: zd=new Zidan(x,y+10,1); break; case 2: zd=new Zidan(x+10,y+30,2); break; case 3: zd=new Zidan(x+30,y+10,3); break; } Thread t=new Thread(zd);//啟動線程,發射子彈 t.start(); } } ~~~ DiTank.java ~~~ package tkdz; public class DiTank extends Tank{ public DiTank(int x, int y) { super(x, y); } } ~~~ Zidan.java ~~~ package tkdz; //由于敵人的子彈是隨意動的,直接把子彈做成線程,繼承Runnable接口 public class Zidan implements Runnable{ int x; int y; int fangxiang; int sudu=2; public Zidan(int x, int y,int fangxiang) { super(); this.x = x; this.y = y; this.fangxiang=fangxiang; } @Override public void run() {//讓子彈動起來 //凡是線程下面的死循環里都要有個睡眠 while(true){ try{ Thread.sleep(50);//睡眠 }catch(Exception e){} switch(this.fangxiang){ case 0: y-=sudu; break; case 1: x-=sudu; break; case 2: y+=sudu; break; case 3: x+=sudu; break; } } } } ~~~ MyPanel.java ~~~ package tkdz; import java.awt.*; import java.awt.event.*; import java.util.Vector; import javax.swing.*; public class MyPanel extends JPanel implements KeyListener,Runnable{ MyTank mt=null; Vector<DiTank> dtk =new Vector<DiTank>();//敵坦克集合,多線程用Vector int tksl =3;//敵人坦克的數量 public MyPanel(){ mt=new MyTank(140,232);//我的坦克,1輛 for(int i=0;i<tksl;i++){//敵坦克數量,3輛 DiTank dt=new DiTank((i)*181+5,0); dtk.add(dt); } } public void paint(Graphics g){ super.paint(g); g.fillRect(0, 0, 400, 300);//黑色400*300畫布 this.drawTank(mt.getX(), mt.getY(), g, mt.fangxiang, 0);//繪制我方坦克 for(int i = 0; i < dtk.size(); i++){//繪制敵方坦克 this.drawTank(dtk.get(i).getX(), dtk.get(i).getY(), g, 2, 1); } if(mt.zd!=null){//繪制子彈 g.setColor(Color.white); g.fill3DRect(mt.zd.x, mt.zd.y, 3, 3, false); } } public void drawTank(int x,int y,Graphics g,int fangxiang,int leixing) { switch(leixing) { case 0://我的坦克 g.setColor(Color.yellow); break; case 1://敵人的坦克 g.setColor(Color.green); break; } switch(fangxiang) { case 0://上 g.fill3DRect(x, y, 5, 30,false); g.fill3DRect(x+15,y , 5, 30,false); g.fill3DRect(x+5,y+5 , 10, 20,false); g.fillOval(x+5, y+10, 10, 10); g.drawLine(x+10, y+15, x+10, y-3); break; case 1://左 g.fill3DRect(x, y, 30, 5,false); g.fill3DRect(x, y+15, 30, 5, false); g.fill3DRect(x+5, y+5, 20, 10, false); g.fillOval(x+10, y+5, 10, 10); g.drawLine(x+15, y+10, x-3, y+10); break; case 2://下 g.fill3DRect(x, y, 5, 30,false); g.fill3DRect(x+15,y , 5, 30,false); g.fill3DRect(x+5,y+5 , 10, 20,false); g.fillOval(x+5, y+10, 10, 10); g.drawLine(x+10, y+15, x+10, y+33); break; case 3://右 g.fill3DRect(x, y, 30, 5,false); g.fill3DRect(x, y+15, 30, 5, false); g.fill3DRect(x+5, y+5, 20, 10, false); g.fillOval(x+10, y+5, 10, 10); g.drawLine(x+15, y+10, x+33, y+10); break; } this.repaint(); } @Override public void keyTyped(KeyEvent e) { // TODO Auto-generated method stub } @Override public void keyPressed(KeyEvent e) { if(e.getKeyCode()==KeyEvent.VK_W) { this.mt.setFangxiang(0);//方向為0 this.mt.xiangshang();//啟動函數向上 }else if(e.getKeyCode()==KeyEvent.VK_A) { this.mt.setFangxiang(1); this.mt.xiangzuo(); }else if(e.getKeyCode()==KeyEvent.VK_S) { this.mt.setFangxiang(2); this.mt.xiangxia(); }else if(e.getKeyCode()==KeyEvent.VK_D) { this.mt.setFangxiang(3); this.mt.xiangyou(); } //子彈 if(e.getKeyCode()==KeyEvent.VK_J){ this.mt.fszd();//發射子彈 } this.repaint(); } @Override public void keyReleased(KeyEvent e) { // TODO Auto-generated method stub } @Override public void run() { while(true){ try { Thread.sleep(100); } catch (Exception e) { this.repaint(); } } } } ~~~ ![](https://box.kancloud.cn/b6745e10476ea9c788aea65f744e9677_394x296.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看