资源描述:
《Java练习_坦克大战3.0_线程.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Java练习_坦克大战3.0结构:类:属性:Hero我的坦克Ets敌人坦克数组Ensize敌人坦克数方法:构造敌我坦克Paint(画坦克、画子弹)画出敌我坦克runrepaint监听按键控制方向、移动、发射子弹属性:速度坐标方向颜色方法:构造方法设置坐标设置坐标设置颜色设置方向继承tank属性:子弹方法:发射子弹上下左右移动属性:坐标方向速度生存与否方法构造方法坐标、方向、速度Run根据方向移动子弹、判断子弹是否死亡属性:面板方法:构造方法启动面板加入线程并启动面板加入窗口面板作为监听者监听消息源窗口的事件设置窗口相关项代码:/***java练习_坦克大战3.0*有敌我
2、坦克,我方坦克可以移动,可以发射炮弹*引入多线程**/packageTankGame2;//packageMyTankGame2;importjava.awt.*;importjava.awt.event.KeyEvent;importjava.awt.event.KeyListener;importjava.util.*;importjavax.swing.*;publicclassMyTankGame2extendsJFrame{MyPanelmp=null;publicstaticvoidmain(String[]args){MyTankGame2mytankga
3、me1=newMyTankGame2();}publicMyTankGame2(){mp=newMyPanel();//启动mp线程Threadt=newThread(mp);t.start();this.add(mp);this.addKeyListener(mp);this.setSize(400,300);this.setVisible(true);this.setDefaultCloseOperation(EXIT_ON_CLOSE);}}classMyPanelextendsJPanelimplementsKeyListener,Runnable{//定义我的
4、坦克,成员变量Herohero=null;//定义敌人的坦克组Vectorets=newVector();intenSize=3;publicvoidpaint(Graphicsg){super.paint(g);g.fillRect(0,0,400,300);//画出自己的坦克this.drawTank(hero.getX(),hero.getY(),g,this.hero.direct,1);//画出子弹if(hero.s!=null&&hero.s.isLive==true){g.draw3DRect(hero.s.x,
5、hero.s.y,1,1,false);}//画出敌人的坦克for(inti=0;i6、llow);break;}//判断方向switch(direct){//向上case0://画出我的坦克(到时候再封装成一个函数)//1.画出左面的矩形//g.drawRect(hero.getX(),hero.getY(),5,30);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);//画出中间的圆g.fillOval(x+4,y+10,10,10);//画出线g.drawLine
7、(x+9,y+15,x+9,y);break;case1://炮筒向右//画出上面的矩形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;case2://向下g.fill3DRect(x,y,5,30,false);g.fill3DRect(x+15,y,5,30,fals