第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

JAVA坦克小游戲運(yùn)行一會兒就卡死

JAVA坦克小游戲運(yùn)行一會兒就卡死

D許咚 2017-05-17 11:05:06
不知道有沒有前輩遇到過,怎么解決的,實(shí)在不明白怎么就卡死了。import?java.awt.*; import?java.awt.event.KeyEvent; import?java.awt.event.KeyListener; import?java.util.Random; import?java.util.Vector; import?javax.swing.*; public?class?Tank?extends?JFrame?{ MyPanel?mypanel; public?Tank(){ mypanel=new?MyPanel();//面板實(shí)例化 Thread?p=new?Thread(mypanel);//啟動(dòng)面板線程 p.start(); this.addKeyListener(mypanel); this.add(mypanel);//添加面板 this.setTitle("坦克小游戲"); this.setIconImage((new?ImageIcon("Image/tank.gif").getImage())); this.setBounds(200,?100,?920,?600); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public?static?void?main(String[]?args)?{ Tank?tank=new?Tank(); } } class?Tank1{ int?x,y; int?direct=0; int?color=0; int?speed=3; public?Tank1(int?x,int?y){ this.x=x; this.y=y; } 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?int?getDirect()?{ return?direct; } public?void?setDirect(int?direct)?{ this.direct?=?direct; } public?int?getClolor()?{ return?color; } public?void?setClolor(int?clolor)?{ this.color?=?clolor; } public?int?getSpeed()?{ return?speed; } public?void?setSpeed(int?speed)?{ this.speed?=?speed; } public?void?moveUp(){ y-=speed; } public?void?moveDown(){ y+=speed; } public?void?moveLeft(){ x-=speed; } public?void?moveRight(){ x+=speed; } } class?MyPanel?extends?JPanel?implements?KeyListener,Runnable{ MyTank?me=null; MyPanel?mypanel=null; Vector?<EnemyTank>?enemys=new?Vector<EnemyTank>?(); int?size=5; //炸彈圖片 Image?image1=null; Image?image2=null; Image?image3=null; Image?image4=null; Image?image5=null; Image?image6=null; Image?image7=null; Image?image8=null; Image?image9=null; //炸彈集合 Vector?<Bomb>??bombs=new?Vector<Bomb>(); public?MyPanel(){ //初始化圖片 image1=Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/11.gif")); image2=Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/12.gif")); image3=Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/13.gif")); image4=Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/11.gif")); image5=Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/12.gif")); image6=Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/13.gif")); image7=Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/11.gif")); image8=Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/12.gif")); image9=Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/13.gif")); //我方Tank的初始位置 me=new?MyTank(435,420); //初始化敵方坦克 for(int?i=0;i<size;i++){ EnemyTank?enemy=new?EnemyTank(i*100+70,10); Thread?tenemy=new?Thread(enemy); tenemy.start(); enemy.setClolor(1); enemy.setDirect(1); enemys.add(enemy); } } public?void?paintComponent(Graphics?g){ super.paintComponent(g); g.fillRect(0,?0,?900,?560); mypanel=new?MyPanel(); //畫我方坦克 mypanel.drawTank(me.getX(),me.getY(),g,me.getDirect(),me.getClolor()); //畫敵方坦克 for(int?i=0;i<enemys.size();i++){ EnemyTank?enemy=enemys.get(i); if?(enemy.islive){ this.drawTank(enemy.getX(),?enemy.getY(),?g,?enemy.getDirect(),?enemy.getClolor()); } else?if(!enemy.islive){ enemys.remove(enemy); } } //畫我方子彈 for(int?i=0;i<me.bullets.size();i++){ Bullet?b2=me.bullets.get(i); if(b2.islive==true){ mypanel.drawBullet(me.b.x-1,?me.b.y-1,?g,?3,?3,false); } if(b2.islive==false){ me.bullets.remove(b2); } } //畫爆炸效果 for(int?i=0;i<bombs.size();i++){ Bomb?bomb=bombs.get(i); if(bomb.life>8){ g.drawImage(image1,?bomb.x-15,bomb.y-15,?30,?30,?this); } else?if(bomb.life>7){ g.drawImage(image2,?bomb.x-15,?bomb.y-15,30,?30,?this); } else?if(bomb.life>6){ g.drawImage(image3,?bomb.x-15,?bomb.y-15,30,?30,?this); } else?if(bomb.life>5){ g.drawImage(image4,?bomb.x-15,?bomb.y-15,30,?30,?this); } else?if(bomb.life>4){ g.drawImage(image5,?bomb.x-15,?bomb.y-15,30,?30,?this); } else?if(bomb.life>3){ g.drawImage(image6,?bomb.x-15,?bomb.y-15,30,?30,?this); } else?if(bomb.life>2){ g.drawImage(image7,?bomb.x-15,?bomb.y-15,30,?30,?this); } else?if(bomb.life>1){ g.drawImage(image8,?bomb.x-15,?bomb.y-15,30,?30,?this); } else?if(bomb.life>0){ g.drawImage(image9,?bomb.x-15,?bomb.y-15,30,?30,?this); } bomb.LifeDown(bomb.islive); if(bomb.life==0){ bombs.remove(bomb); } } } //函數(shù)hitTank判斷是否擊中坦克 public?void?hitTank(Bullet?bu,EnemyTank?en){ switch(en.direct){ case?0: case?1: if(bu.x>en.x&&bu.x<en.x+26&&bu.y>en.y&bu.y<en.y+30){ en.islive=false; bu.islive=false; Bomb?bomb=new?Bomb(bu.x,bu.y); bombs.add(bomb); } //System.out.println("攻擊坦克被調(diào)用了"); break; case?3: case?4: if(bu.x>en.x&&bu.x<en.x+30&&bu.y>en.y&bu.y<en.y+26){ en.islive=false; bu.islive=false; Bomb?bomb=new?Bomb(bu.x,bu.y); bombs.add(bomb); } //System.out.println("攻擊坦克被調(diào)用了"); break; default: break; } } //畫子彈 public?void?drawBullet(int?x,int?y,Graphics?g,int?a,int?b,boolean?forr){ g.setColor(Color.RED); g.fill3DRect(x,?y,?a,?b,?forr); } //畫坦克 public?void?drawTank(int?x,int?y,Graphics?g,int?direct,int?color){ switch(color){ case?0:? g.setColor(Color.YELLOW); break; case?1:? g.setColor(Color.CYAN); break; default:? g.setColor(Color.GRAY); } switch(direct){ case?0://上 g.fill3DRect(x,?y,?5,?30,?true); g.fill3DRect(x+5,?y+5,?16,?20,?false); g.fill3DRect(x+20,?y,?5,?30,?true); g.fillOval(x+8,?y+10,?10,?10); g.drawLine(x+13,?y+15,?x+13,?y-5); break; case?1://下 g.fill3DRect(x,?y,?5,?30,?true); g.fill3DRect(x+5,?y+5,?16,?20,?false); g.fill3DRect(x+20,?y,?5,?30,?true); g.fillOval(x+8,?y+10,?10,?10); g.drawLine(x+13,?y+15,?x+13,?y+35); break; case?2://左 g.fill3DRect(x,?y,?30,?5,?true); g.fill3DRect(x+5,?y+5,?20,?16,?false); g.fill3DRect(x,?y+21,?30,?5,?true); g.fillOval(x+10,?y+8,?10,?10); g.drawLine(x+15,?y+13,?x+35,?y+13); break; case?3://右 g.fill3DRect(x,?y,?30,?5,?true); g.fill3DRect(x+5,?y+5,?20,?16,?false); g.fill3DRect(x,?y+21,?30,?5,?true); g.fillOval(x+10,?y+8,?10,?10); g.drawLine(x+15,?y+13,?x-5,?y+13); break; } } //監(jiān)聽鍵盤 public?void?keyPressed(KeyEvent?e)?{ if(e.getKeyCode()==KeyEvent.VK_W){//上 if(me.getY()>5){ me.setDirect(0); me.moveUp(); } } else?if(e.getKeyCode()==KeyEvent.VK_S){//下 if(me.getY()<525){ me.setDirect(1); me.moveDown(); } } else?if(e.getKeyCode()==KeyEvent.VK_A){//左 if(me.getX()>0){ me.setDirect(3); me.moveLeft(); } } else?if(e.getKeyCode()==KeyEvent.VK_D){//右 if(me.getX()<865){ me.setDirect(2); me.moveRight(); } } else?if(e.getKeyCode()==KeyEvent.VK_J?){//空格射擊 if(me.bullets.size()<5){ me.shotEnemy(); } } repaint(); } public?void?keyReleased(KeyEvent?arg0)?{ //?TODO?Auto-generated?method?stub } public?void?keyTyped(KeyEvent?arg0)?{ //?TODO?Auto-generated?method?stub } //添加線程run public?void?run()?{ while(true){ try?{ Thread.sleep(100); }?catch?(InterruptedException?e)?{ e.printStackTrace(); } for(int?i=0;i<me.bullets.size();i++){ Bullet?b=me.bullets.get(i); if(b.islive){ for(int?j=0;j<enemys.size();j++){ EnemyTank?e=enemys.get(j); if(e.islive) { hitTank(b,e); } } } } repaint(); } } } //我方坦克類 class?MyTank?extends?Tank1{ Bullet?b=null; Vector?<Bullet>?bullets=new?Vector<Bullet>(); public?MyTank(int?x,?int?y)?{ super(x,?y); } public?void?shotEnemy(){ switch(direct){ case?0: b=new?Bullet(x+13,y-5,0); bullets.add(b); break; case?1: b=new?Bullet(x+13,y+35,1); bullets.add(b); break; case?2: b=new?Bullet(x+35,y+13,2); bullets.add(b); break; case?3: b=new?Bullet(x-5,y+13,3); bullets.add(b); break; default:? break; } Thread?t=new?Thread(this.b); t.start(); } } //敵方坦克類 class?EnemyTank?extends?Tank1?implements?Runnable{ Random?r=new?Random(); boolean?islive=true; int?speed=8; Vector<Bullet>?enemyBullet=new?Vector<Bullet>(); public?EnemyTank(int?x,?int?y)?{ super(x,?y); } public?void?run()?{ while(true){ try?{ Thread.sleep(50); }?catch?(InterruptedException?e)?{ //?TODO?Auto-generated?catch?block e.printStackTrace(); } direct=r.nextInt(4); switch(direct){ case?0: for(int?i=0;i<20;i++){ if(y>10) moveUp(); if(y==10) break; try?{ Thread.sleep(100); }?catch?(Exception?e)?{ e.printStackTrace(); } } break; case?1: for(int?i=0;i<20;i++){ if(y<550)? moveDown(); if(y==550) break; try?{ Thread.sleep(100); }?catch?(Exception?e)?{ e.printStackTrace(); } } break; case?2: for(int?i=0;i<20;i++){ if(x<890) moveRight(); if(x==890) break; try?{ Thread.sleep(100); }?catch?(Exception?e)?{ e.printStackTrace(); } } break; case?3: for(int?i=0;i<20;i++){ if(x>15) moveLeft(); if(x==13) break; try?{ Thread.sleep(100); }?catch?(Exception?e)?{ e.printStackTrace(); } } break; //for }//switch if(islive==false){ break; } }//while }//run }//類體 //子彈類 class?Bullet?implements?Runnable{ int?x; int?y; int?speed=10; int?direct; boolean?islive=true; public?Bullet(int?x,int?y,int?direct){ this.x=x; this.y=y; this.direct=direct; } public?void?run()?{ while(true){ try?{ Thread.sleep(50); }?catch?(InterruptedException?e)?{ e.printStackTrace(); } switch(direct){ case?0: y-=speed; break; case?1: y+=speed; break; case?2: x+=speed; break; case?3: x-=speed; break; default:? break; } if(x<0||x>920||y<0||y>600){ islive=false; break; } } } } //爆炸類 class?Bomb?{ int?x; int?y; int?life=9; boolean?islive=true; public?Bomb(int?x,int?y){ this.x=x; this.y=y; } public??void?LifeDown(boolean?islive){ if(life>0){ life--; } if(life<=0){ islive=false; } } }
查看完整描述
  • 3 回答
  • 4 關(guān)注
  • 2161 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號