上代码前的图片:(爆炸效果)



请按这三张图片的顺序插入

上代码!

MyTankGame8.java

/*** 功能:坦克游戏的7.0      * 1.画出坦克(√)* 2.我的坦克可以上下左右移动(√)* 3.可以连发子弹(最多5).(√)* 4.当我的坦克击中敌人的坦克时,敌人就消失(爆炸的效果)(√)* 5.我被击中后,显示爆炸效果(√)* 6.防止敌人坦克重叠运动(√)*   6.1.判断是否碰撞的函数写到EnemyTank类* 7.可以分关(√)*   7.1.做一个开始的Panel,他是一个空的*   7.2.闪烁效果* 8.可以在玩游戏的时候暂停和继续(√)*   8.1.暂停的时候,坦克和子弹速度为0,并且坦克方向不变* 9.可以记录玩家的成绩(√)*   9.1.用文件流*   9.2.单写一个纪录类,完成玩家记录*   9.3.先完成保存共击毁了多少辆敌人的坦克的功能*   9.4.存盘退出游戏,可以记录当时的敌人的坦克的坐标,并可以修复* 10.java如何操作声音文件(√)*/
package lesson_49;import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
import javax.imageio.*;
import java.io.*;
@SuppressWarnings({"serial","unused"})
public class MyTankGame8 extends JFrame implements ActionListener {MyPanel mp =null;//定义一个开始面板MyStartPanel msp =null;//做出我需要的菜单JMenuBar jmb =null;//开始游戏JMenu jm1 =null;JMenuItem jmi1 =null;//退出系统JMenuItem jmi2 =null;//存盘退出JMenuItem jmi3 =null;public static void main(String[] args) {// TODO 自动生成的方法存根MyTankGame8 mtg =new MyTankGame8();}//构造函数public MyTankGame8(){     //创建菜单及菜单选项jmb =new JMenuBar();jm1 =new JMenu("游戏(G)");jmi1 =new JMenuItem("开始新游戏(N)");jmi2 =new JMenuItem("退出游戏(E)");jmi3 =new JMenuItem("存盘退出游戏(C)");jm1.add(jmi1);jm1.add(jmi2);jm1.add(jmi3);jmb.add(jm1);//设置快捷方式jm1.setMnemonic('G');jmi1.setMnemonic('N');jmi2.setMnemonic('E');jmi3.setMnemonic('C');//对jmi响应jmi1.addActionListener(this);jmi1.setActionCommand("newgame");jmi2.addActionListener(this);jmi2.setActionCommand("exit");jmi3.addActionListener(this);jmi3.setActionCommand("saveExit");msp =new MyStartPanel();this.add(msp);Thread th =new Thread(msp);th.start();this.setJMenuBar(jmb);this.setSize(600,500);this.setVisible(true);this.setTitle("坦克大战");this.setResizable(false);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}public void actionPerformed(ActionEvent e) {//对用户不同的点击做出不同的管理if(e.getActionCommand().equals("newgame")){mp =new MyPanel();//jp1 =new JPanel();//删除老的面板this.remove(msp);this.add(mp);//注册监听this.addKeyListener(mp);//启动mp线程Thread t =new Thread(mp);t.start();this.setVisible(true);}else if(e.getActionCommand().equals("exit")){//用户点击了退出系统的菜单//保存击毁敌人数量Recorder.keepRecording();System.exit(0);}else if(e.getActionCommand().equals("saveExit")){//工作new Recorder().setEts(mp.ets);//保存击毁敌人的数量和敌人的坐标new Recorder().keepRecAndEnemyTank();//退出System.exit(0);}}
}@SuppressWarnings({"serial"})
//就是一个提示的作用
class MyStartPanel extends JPanel implements Runnable
{int times =0;public void paint(Graphics g){super.paint(g);g.fillRect(0,0,416,339);if(times%2==0){g.setColor(Color.YELLOW);//开关信息的字体Font myFont =new Font("微软雅黑",Font.BOLD,30);g.setFont(myFont);//提示信息g.drawString("stage:1",150,150);}}public void run() {while(true){//休眠try {Thread.sleep(500);}catch (InterruptedException e){e.printStackTrace();}times++;this.repaint();}}
}//我的面板
@SuppressWarnings({"serial"})
class MyPanel extends JPanel implements KeyListener,Runnable
{//定义一个我的坦克Hero hero =null;//定义敌人的坦克组Vector<EnemyTank> ets =new Vector<EnemyTank>();//定义炸弹Vector<Bomb> bombs =new Vector<Bomb>();int enSize=3;//定义三张图片,三张图片才能组成一颗炸弹Image image1 =null;Image image2 =null;Image image3 =null;//构造函数public MyPanel(){//恢复记录Recorder.getRecoring();hero =new Hero(100,100);//初始化敌人的坦克for(int i=0;i<enSize;i++){//创建一辆敌人的坦克对象EnemyTank et =new EnemyTank((i+1)*50,0);et.setColor(0);et.setDirect(2);//将MyPanel的敌人坦克向量交给该敌人坦克et.setEts(ets);//启动敌人的坦克Thread t =new Thread(et);t.start();//给敌人坦克添加子弹Shot s =new Shot(et.x+10,et.y+30,2);//把子弹给敌人et.ss.add(s);Thread t2 =new Thread(s);t2.start();//加入ets.add(et);}try{image1 =ImageIO.read(new File("bemb_1.gif"));image2 =ImageIO.read(new File("bemb_2.gif"));image3 =ImageIO.read(new File("bemb_3.gif"));}catch(Exception e){e.printStackTrace();}//初始化图片
//      image1 =Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/bemb_1.gif"));
//      image2 =Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/bemb_2.gif"));
//      image3 =Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/bemb_3.gif"));}//画出提示信息public void showInfo(Graphics g){  //画出提示信息坦克(该坦克不参与战斗)this.drawTank(80,330,g,0,0);g.setColor(Color.BLACK);g.drawString(Recorder.getEnNum()-3+"",105,350);this.drawTank(150,330,g,0,1);g.setColor(Color.BLACK);g.drawString(Recorder.getMyLife()+"",175,350);//画出玩家的总成绩Font f =new Font("宋体",Font.BOLD,20);g.setFont(f);g.setColor(Color.BLACK);g.drawString("您的总成绩",420,30);this.drawTank(420,60,g,0,0);g.setColor(Color.BLACK);g.drawString(Recorder.getAllEnNum()+"",455,80);}//重新paintpublic void paint(Graphics g){super.paint(g);g.setColor(Color.BLACK);g.fillRect(0,0,400,300);//画出提示信息this.showInfo(g);//画出自己的坦克if(hero.isLive){this.drawTank(hero.getX(),hero.getY(),g,this.hero.direct,1);}//从ss中取出每颗子弹,并画出for(int i=0;i<hero.ss.size();i++){Shot myShot =hero.ss.get(i);//画出子弹,if(myShot!=null&&myShot.isLive==true){g.draw3DRect(myShot.x,myShot.y,1,1,false);}if(myShot.isLive==false){//从ss中删除掉该子弹hero.ss.remove(myShot);}}//画出炸弹for(int i=0;i<bombs.size();i++){//System.out.println("bombs.size()="+bombs.size());//取出炸弹Bomb b =bombs.get(i);if(b.life>6){g.drawImage(image1,b.x,b.y,30,30,this);}else if(b.life>3){g.drawImage(image2,b.x,b.y,30,30,this);}else{g.drawImage(image3,b.x,b.y,30,30,this);}//让b的生命减小b.lifeDown();//如果炸弹生命值为0,就把该炸弹从bombs去掉if(b.life==0){bombs.remove(b);}}//画出敌人坦克for(int i=0;i<ets.size();i++){EnemyTank et =ets.get(i);if(et.isLive){this.drawTank(et.getX(),et.getY(),g,et.getDirect(),0);//在画出敌人的子弹for(int j=0;j<et.ss.size();j++){//取出一个子弹Shot enemyTank =et.ss.get(j);if(enemyTank.isLive){g.draw3DRect(enemyTank.x,enemyTank.y,1,1,false);}else{//如果敌人的坦克死亡就从Vector中删掉et.ss.remove(enemyTank);}}}}}//敌人的子弹是否击中我public void hieMe(){//取出每一个敌人的坦克for(int i=0;i<ets.size();i++){//取出坦克EnemyTank et =ets.get(i);//取出每一颗子弹for(int j=0;j<et.ss.size();j++){//取出子弹Shot enemyShot =et.ss.get(j);if(hero.isLive){if(this.hitTank(enemyShot,hero)){//Recorder.reduceEnNum();//Recorder.addEnNumRec();}}}}}//判断我的坦克是否击中敌人的坦克public void hitEnemyTank(){for(int i=0;i<hero.ss.size();i++){//取出子弹Shot myShot =hero.ss.get(i);//判断子弹是否有效if(myShot.isLive){//取出每一个子弹,与他判断for(int j=0;j<ets.size();j++){//取出坦克EnemyTank et =ets.get(j);if(et.isLive){if(this.hitTank(myShot,et)){Recorder.reduceEnNum();Recorder.addEnNumRec();}}}}}}//写一个函数,专门判断子弹是否击中敌人坦克public boolean hitTank(Shot s,Tank et){boolean b2 =false;//判断该坦克的方向switch(et.direct){//如果敌人的坦克方向是上或下case 0:case 2:if(s.x>et.x&&s.x<et.x+20&&s.y>et.y&&s.y<et.y+30){//击中//子弹死亡s.isLive=false;//敌人坦克死亡et.isLive=false;b2=true;//创建一颗炸弹,放入VectorBomb b =new Bomb(et.x,et.y);//放入Vectorbombs.add(b);}break;case 1:case 3:if(s.x>et.x&&s.x<et.x+30&&s.y>et.y&&s.y<et.y+20){//击中//子弹死亡s.isLive=false;//敌人坦克死亡et.isLive=false;b2=true;//创建一颗炸弹,放入VectorBomb b =new Bomb(et.x,et.y);//放入Vectorbombs.add(b);}break;}return b2;}//画出坦克的函数(扩展)public void drawTank(int x,int y,Graphics g,int direct,int type){//判断是什么坦克switch(type){case 0:g.setColor(Color.CYAN);break;case 1:g.setColor(Color.YELLOW);break;}//判断方向switch(direct){//向上case 0://画出我的坦克(到时在封装成函数)//1.画出左边的矩形g.fill3DRect(x,y,5,30,false);//2.画出右边的矩形g.fill3DRect(x+15,y,5,30,false);//3.画出中间矩形g.fill3DRect(x+5,y+5,10,20,false);//4.画出圆形g.fillOval(x+5,y+10,10,10);//5.画出线g.drawLine(x+10,y+15,x+10,y);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+30,y+10);break;case 2://向下//1.画出左边的矩形g.fill3DRect(x,y,5,30,false);//2.画出右边的矩形g.fill3DRect(x+15,y,5,30,false);//3.画出中间矩形g.fill3DRect(x+5,y+5,10,20,false);//4.画出圆形g.fillOval(x+5,y+10,10,10);//5.画出线g.drawLine(x+10,y+15,x+10,y+30);break;case 3://向左//1.画出左边的矩形g.fill3DRect(x,y,30,5,false);//2.画出右边的矩形g.fill3DRect(x,y+15,30,5,false);//3.画出中间矩形g.fill3DRect(x+5,y+5,20,10,false);//4.画出圆形g.fillOval(x+10,y+5,10,10);//5.画出线g.drawLine(x+15,y+10,x,y+10);break;}}//键按下 a表示向左,s表示向下,w表示向上,d表示向右public void keyPressed(KeyEvent e) {if(e.getKeyCode()==KeyEvent.VK_W){//设置我的坦克的方向this.hero.setDirect(0);this.hero.moveUp();}else if(e.getKeyCode()==KeyEvent.VK_D){//向右this.hero.setDirect(1);this.hero.moveRight();}else if(e.getKeyCode()==KeyEvent.VK_S){//向下this.hero.setDirect(2);this.hero.moveDown();}else if(e.getKeyCode()==KeyEvent.VK_A){//向左this.hero.setDirect(3);this.hero.moveLeft();}//判断玩家是否按下j键if(e.getKeyCode()==KeyEvent.VK_J){//开火if(this.hero.ss.size()<=4){this.hero.shotEnemy();    }}//必须重绘MyPanelthis.repaint();}public void keyReleased(KeyEvent e) {}public void keyTyped(KeyEvent e) {}public void run(){//每隔一百毫秒刷新一次while(true){try{Thread.sleep(100);}catch(Exception e){e.printStackTrace();}this.hitEnemyTank();//判断敌人的坦克有没有击中我的坦克this.hieMe();//重绘repaint();}}
}

Members.java

package lesson_49;import java.util.*;
import java.io.*;
//纪录类,同时也可以保存玩家的
class Recorder
{//记录每关有多少个敌人private static int enNum=23;//设置我有多少可用的人private static int myLife=3;//记录总共消灭了多少辆坦克private static int allEnNum=0;private static FileWriter fw =null;private static BufferedWriter bw =null;private static FileReader fr =null;private static BufferedReader br =null;private Vector<EnemyTank> ets = new Vector<EnemyTank>();//保存击毁敌人的数量和敌人坦克坐标,方向public void keepRecAndEnemyTank(){try{fw =new FileWriter("d:\\myRecording1.txt");bw =new BufferedWriter(fw);bw.write(allEnNum+"\r\n");//保存当前活的敌人坦克的坐标和方向for(int i=0;i<ets.size();i++){//取出第一个坦克EnemyTank et =ets.get(i);if(et.isLive){//活的就保存String recode =et.x+" "+et.y+" "+et.direct;//写入bw.write(recode+"\r\n");}}}catch(Exception e){e.printStackTrace();}finally{try{bw.close();fw.close();}catch(Exception e){e.printStackTrace();}}}//从文件中读取,记录public static void getRecoring(){try{fr =new FileReader("d:\\myRecording.txt");br =new BufferedReader(fr);String n =br.readLine();allEnNum =Integer.parseInt(n);}catch(Exception e){e.printStackTrace();}finally{try{br.close();fr.close();}catch(Exception e){e.printStackTrace();}}}//把玩家击毁敌人坦克数量保存到文件中public static void keepRecording() {try{fw =new FileWriter("d:\\myRecording.txt");bw =new BufferedWriter(fw);bw.write(allEnNum+"\r\n");}catch(Exception e){e.printStackTrace();}finally{try{bw.close();fw.close();}catch(Exception e){e.printStackTrace();}}}public static int getAllEnNum() {return allEnNum;}public static void setAllEnNum(int allEnNum) {Recorder.allEnNum = allEnNum;}public static int getEnNum() {return enNum;}public static void setEnNum(int enNum) {Recorder.enNum = enNum;}public static int getMyLife() {return myLife;}public static void setMyLife(int myLife) {Recorder.myLife = myLife;}//减少敌人数量public static void reduceEnNum(){enNum--;}//消灭敌人public static void addEnNumRec(){allEnNum++;}public Vector<EnemyTank> getEts(){return ets;}public void setEts(Vector<EnemyTank> ets1){//this.ets =ets;System.out.println("ok");}
}//炸弹类
class Bomb
{//定义炸弹的坐标int x,y;//炸弹的生命int life=9;boolean isLive=true;public Bomb(int x,int y){this.x=x;this.y=y;}//减少生命public void lifeDown(){if(life>0){life--;}else{this.isLive=false;}}
}//子弹类
class Shot implements Runnable
{int x;int y;int direct;int speed=1;//是否还活着boolean isLive =true;public Shot(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(Exception e){e.printStackTrace();}switch(direct){case 0://向上y-=speed;break;case 1://左x+=speed;break;case 2://下y+=speed;break;case 3://右x-=speed;break;}//子弹何时死亡[???思考题???]//判断该子弹是否碰到边缘if(x<0||x>400||y<0||y>300){this.isLive=false;break;}}}
}//坦克类
class Tank
{//表示坦克的横坐标int x=0;//坦克纵坐标int y=0;//坦克方向//0表示上,1表示右,2表示下,3表示左int direct=0;int color;boolean isLive =true;public int getColor() {return color;}public void setColor(int color) {this.color = color;}//坦克的速度int speed=1;public int getSpeed() {return speed;}public void setSpeed(int speed) {this.speed = speed;}public int getDirect() {return direct;}public void setDirect(int direct) {this.direct = direct;}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){this.x=x;this.y=y;}
}//敌人的坦克,把敌人做成线程类
class EnemyTank extends Tank implements Runnable
{//boolean isLive=true;//定义一个向量,可以访问到MyPanel上所有敌人的坦克Vector<EnemyTank> ets =new Vector<EnemyTank>(); //定义一个向量,可以存放敌人的子弹Vector<Shot> ss =new Vector<Shot>();//敌人添加子弹,应当在刚刚创建的坦克和敌人的坦克死亡的过后int times =0;public EnemyTank(int x,int y){super(x,y);}//得到MyPanel的敌人坦克向量public void setEts(Vector<EnemyTank> vv){this.ets=vv;//isTouchOtherEnemy();}//判断是否碰到了别的敌人坦克public boolean isTouchOtherEnemy(){boolean b=false;switch(this.direct){case 0://我的坦克在上//取出所有敌人的坦克for(int i=0;i<ets.size();i++){//取出第一个坦克EnemyTank et =ets.get(i);//如果不是自己if(et!=this){//如果敌人的方向是向下或向上if(et.direct==0||et.direct==2){if(this.x>=et.x&&this.x<=et.x+20&&this.y>=et.y&&this.y<=et.y+30){return true;}if(this.x+20>=et.x&&this.x+20<et.x+20&&this.y>=et.y&&this.y<=et.y+30){return true;}}//向左或向右if(et.direct==3||et.direct==1){if(this.x>=et.x&&this.x<=et.x+30&&this.y>=et.y&&this.y<=et.y+20){return true;}if(this.x+20>=et.x&&this.x+20<et.x+30&&this.y>=et.y&&this.y<=et.y+20){return true;}}}}break;case 1://我的坦克在右//取出所有敌人的坦克for(int i=0;i<ets.size();i++){//取出第一个坦克EnemyTank et =ets.get(i);//如果不是自己if(et!=this){//如果敌人的方向是向下或向上if(et.direct==0||et.direct==2){if(this.x+30>=et.x&&this.x+30<=et.x+20&&this.y>=et.y&&this.y<=et.y+30){return true;}if(this.x+30>=et.x&&this.x+30<=et.x+20&&this.y+20>=et.y&&this.y+20<=et.y+30){return true;}}//向左或向右if(et.direct==3||et.direct==1){if(this.x+30>=et.x&&this.x+30<=et.x+30&&this.y>=et.y&&this.y<=et.y+20){return true;}if(this.x+30>=et.x&&this.x+30<=et.x+30&&this.y+20>=et.y&&this.y+20<=et.y+20){return true;}}}}break;case 2://我的坦克在下//取出所有敌人的坦克for(int i=0;i<ets.size();i++){//取出第一个坦克EnemyTank et =ets.get(i);//如果不是自己if(et!=this){//如果敌人的方向是向下或向上if(et.direct==0||et.direct==2){if(this.x>=et.x&&this.x<=et.x+20&&this.y+30>=et.y&&this.y+30<=et.y+30){return true;}if(this.x+20>=et.x&&this.x+20<=et.x+20&&this.y+30>=et.y&&this.y+30<=et.y+30){return true;}}//向左或向右if(et.direct==3||et.direct==1){if(this.x>=et.x&&this.x<=et.x+30&&this.y+30>=et.y&&this.y+30<=et.y+20){return true;}if(this.x+20>=et.x&&this.x+20<=et.x+30&&this.y+30>=et.y&&this.y+30<=et.y+20){return true;}}}} break;case 3://我的敌人坦克向左  //取出所有敌人的坦克for(int i=0;i<ets.size();i++){//取出第一个坦克EnemyTank et =ets.get(i);//如果不是自己if(et!=this){//如果敌人的方向是向下或向上if(et.direct==0||et.direct==2){if(this.x>=et.x&&this.x<=et.x+20&&this.y>=et.y&&this.y+30<=et.y+30){return true;}if(this.x>=et.x&&this.x<=et.x+20&&this.y+20>=et.y&&this.y+20<=et.y+30){return true;}}//向左或向右if(et.direct==3||et.direct==1){if(this.x>=et.x&&this.x<=et.x+30&&this.y>=et.y&&this.y<=et.y+20){return true;}if(this.x>=et.x&&this.x<=et.x+30&&this.y+20>=et.y&&this.y+20<=et.y+20){return true;}}}}break;}return b;}public void run(){while(true){try{Thread.sleep(50);}catch(Exception e){e.printStackTrace();}switch(this.direct){case 0://说明坦克正在向上for(int i=0;i<30;i++){if(y>0&&!this.isTouchOtherEnemy()){y-=speed;}try{Thread.sleep(50);}catch(Exception e){e.printStackTrace();}}break;case 1://向右for(int i=0;i<30;i++){//保证坦克不出边界if(x<400&&!this.isTouchOtherEnemy()){x+=speed;}try{Thread.sleep(50);}catch(Exception e){e.printStackTrace();}}break;case 2://向下for(int i=0;i<30;i++){if(y<300&&!this.isTouchOtherEnemy()){y+=speed;}try{Thread.sleep(50);}catch(Exception e){e.printStackTrace();}}break;case 3://向左for(int i=0;i<30;i++){if(x>0&&!this.isTouchOtherEnemy()){x-=speed;}try{Thread.sleep(50);}catch(Exception e){e.printStackTrace();}}break;}this.times++;if(times%2==0){if(isLive){if(ss.size()<5){Shot s =null;switch(direct){case 0:s =new Shot(x+10,y,0);ss.add(s);break;case 1:s =new Shot(x+30,y+10,1);ss.add(s);break;case 2:s =new Shot(x+10,y+30,2);ss.add(s);break;case 3:s =new Shot(x+10,y+10,3);ss.add(s);break;}Thread t =new Thread(s);t.start();}}}//让坦克随机长生一个新的方向this.direct=(int)(Math.random()*4);//判断敌人坦克是否死亡if(this.isLive==false){//让坦克死亡后,退出线程break;}}}
}//定义我的坦克
class Hero extends Tank
{   //子弹//Shot s=null;Vector<Shot>ss =new Vector<Shot>();Shot s =null;public Hero(int x,int y){super(x,y);}//开火public void shotEnemy(){switch(this.direct){case 0://创建一颗子弹s =new Shot(x+10,y,0);//把子弹加入变量ss.add(s);break;case 1://创建一颗子弹s =new Shot(x+30,y+10,1);ss.add(s);break;case 2://创建一颗子弹s =new Shot(x+10,y+30,2);ss.add(s);break;case 3://创建一颗子弹s =new Shot(x,y+10,3);ss.add(s);break;}//启动子弹线程Thread t =new Thread(s);t.start();}//坦克向上移动public void moveUp(){y-=speed;}//坦克向右移动public void moveRight(){x+=speed;}//坦克向下移动public void moveDown(){y+=speed;}//坦克向左移动public void moveLeft(){x-=speed;}
}

完结

Java坦克大战代码相关推荐

  1. java坦克大战代码脚本之家,javascript制作坦克大战全纪录(1)

    本文写作的目的是巩固一下自己最近学习的js知识, 这个教程适合熟悉js基本语法和面向对象语法的小伙伴学习.由于自己也是刚学js不久,所以难免出现错误.如果发现希望给予指正. PS:这个坦克大战是在网上 ...

  2. java 坦克大战_java课程设计之坦克大战

    本文实例为大家分享了java坦克大战的具体代码,供大家参考,具体内容如下 环境要求: 操作系统:Windows 10 JAVA虚拟机:JDK1.8以上 开发环境:Eclipse(4.5以上) 功能提示 ...

  3. java坦克大战课设报告_java课程设计之坦克大战

    本文实例为大家分享了java坦克大战的具体代码,供大家参考,具体内容如下 环境要求: 操作系统:Windows 10 JAVA虚拟机:JDK1.8以上 开发环境:Eclipse(4.5以上) 功能提示 ...

  4. java坦克大战总体功能设计_Java坦克大战设计报告.doc

    Java坦克大战设计报告.doc <语言设计> 设计报告 信息工程学院专业班级:::指导老师:2011年7月22日 目录 目录2 题目一 坦克大战4 1.1题目简介4 1.2设计的内容.要 ...

  5. Java坦克大战,基于Swing编写很哇塞的小游戏,可以做课程设计毕业设计

    Java坦克大战,基于Swing编写很哇塞的小游戏,可以做课程设计毕业设计 有图有真相 操作方法:ASDW控制移动,鼠标控制炮筒旋转,鼠标左键开枪,空格发射炮弹, 开发思路是标准的游戏开发思路,单线程 ...

  6. Java坦克大战游戏源码(java坦克大战)

    Java坦克大战游戏源码(java坦克大战) public Swingtest002() {// 设置标题setTitle("请登陆");// 绝对布局setLayout(null ...

  7. java坦克大战登录界面设计_基于JAVA的坦克大战设计和实现-代码.doc

    JISHOU UNIVERSITY 本科生毕业设计 题 目:基于JAVA的坦克大战设计与实现作 者:学 号:所属学院:专业年级:指导教师:职 称:完成时间:2012年5月7日 吉首大学 基于JAVA的 ...

  8. 坦克大战代码_坦克大战系列文章-坦克大战简介

    前言 本篇主要对坦克大战Robocode做一个简单的介绍,对java最初的人工智能算法演练工具做一个了解 坦克大战简介 今天我们要谈的是java 最初的基于人工智能算法的仿真模拟坦克大战,全称Robo ...

  9. Java坦克大战(四)

    这是我的坦克游戏大战的最后一版,里面添加很多新的功能.这个坦克大战的有很多不足之处,但是对于初学者来说依然是一个很好的练习项目,从中我们可以学习Java基础知识,将知识与项目结合,学习面向对象编程思想 ...

  10. java 坦克大战画坦克_java简易坦克大战(2)

    public class Tank1 extends JFrame implements ActionListener { MyPanel mp = null; GuanKaPanel gkmb = ...

最新文章

  1. MaxCompute动态更新表中某个(多个)字段的数据
  2. Beta冲刺提交-星期四
  3. python paramiko 问题总结
  4. HTML5_1 笔记
  5. .实现 linkedlist 类java_面试官:兄弟,说说 ArrayList 和 LinkedList 有什么区别
  6. 静态链表和动态链表 区别
  7. java 传递intent_java – 如何将泛型类作为param传递给Intent构造函数
  8. android内容协调,理清Android协调布局CoordinatorLayout的摆放位置及特殊属性。
  9. jenkinsapi操作Jenkins,提示:No valid crumb was included in the request
  10. jquery获取php生成的元素,jquery怎么生成元素
  11. C#中的几个线程同步对象
  12. 数据库设计案例(1)
  13. nginx正向代理反向代理负载均衡
  14. Python简单99例-训练每天
  15. 宋星专访:一条特立独行的数据私有化之路
  16. CSS - 禁止手机移动端网页缩放(meta)
  17. 12、MInio文件系统的使用小记一
  18. Linux 如何设置代理
  19. 四分之一A4纸大小的相纸打印该怎么选择
  20. Synopsys VCS工具介绍

热门文章

  1. access转换MySQL教程,如何将Access数据库转换为SQL Server
  2. Matlab晶闸管单相全桥电路仿真
  3. win8计算机修改密码,Win8如何设置开机密码?Win8开机密码设置方法
  4. 网维大师icafe网吧管理软件 v6.0.3.3 官方
  5. plcst语言编程教程_这样高效学PLC编程,掌握ST语言运算符号编写控制程序无压力...
  6. Python—2022 |已有文章汇总 | 持续更新,直接看这篇就够了
  7. xp系统之家官网纯净版系统下载
  8. java scjp 试题_SCJP(JAVA)试题一套!求答案...
  9. 小米 MIUI 主题制作
  10. MSN网页上点击连接