坦克大战源码

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

坦克大战源码根据韩顺平老师视频所作/**坦克大战4.0*防重叠*/packagecom.TankGame5;importjava.awt.*;importjavax.imageio.ImageIO;importjavax.swing.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.KeyEvent;importjava.awt.event.KeyListener;importjava.io.File;importjava.io.IOException;importjava.util.Vector;publicclassMyTankGame5extendsJFrameimplementsActionListener{//提示面板MyStartPanelmsp=null;//游戏面板MyPanelmp=null;//游戏菜单//开始游戏JMenuBarjmb=null;JMenujm1=null;//开始游戏JMenuItemjmi1=null;//退出游戏JMenuItemjmi2=null;//存盘退出JMenuItemjmi3=null;//继续上一局JMenuItemjmi4=null;publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubMyTankGame5bn=newMyTankGame5();}//构造函数publicMyTankGame5(){//创建菜单栏选项jmb=newJMenuBar();jm1=newJMenu(游戏(G));//创建快捷方式jm1.setMnemonic('G');jmi1=newJMenuItem(开始新游戏(N));jmi1.setMnemonic('N');//注册监听jmi1jmi1.addActionListener(this);jmi1.setActionCommand(newgame);jmi2=newJMenuItem(退出该局游戏(Q));jmi2.setMnemonic('Q');//注册监听jmi2jmi2.addActionListener(this);jmi2.setActionCommand(exit);jmi3=newJMenuItem(存盘退出游戏(C));jmi3.setMnemonic('C');//注册监听jmi3jmi3.addActionListener(this);jmi3.setActionCommand(saveExit);jmi4=newJMenuItem(继续上一局(R));jmi4.setMnemonic('R');//注册监听jmi4jmi4.addActionListener(this);jmi4.setActionCommand(continue);jm1.add(jmi1);jm1.add(jmi4);//添加的顺序就是菜单的顺序jm1.add(jmi3);jm1.add(jmi2);jmb.add(jm1);this.setJMenuBar(jmb);//先启动提示框msp=newMyStartPanel();this.add(msp);Threadt1=newThread(msp);t1.start();//mp=newMyPanel();//this.add(mp);////注册监听//this.addKeyListener(mp);//////启动mp线程//Threadt2=newThread(mp);//t2.start();//窗口大小this.setSize(MyPanel.bx1+230,MyPanel.by1+150);this.setTitle(坦克横行);ImageIconicon=newImageIcon(Images/yan.png);this.setIconImage(icon.getImage());this.setLocation(250,150);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}@OverridepublicvoidactionPerformed(ActionEventarg0){//TODOAuto-generatedmethodstubif(arg0.getActionCommand().equals(newgame)){//System.out.println(英雄的到来);//创建战场mp=newMyPanel(newgame);this.add(mp);//注册监听this.addKeyListener(mp);//启动mp线程Threadt2=newThread(mp);t2.start();this.remove(msp);this.setVisible(true);}//简单退出elseif(arg0.getActionCommand().equals(exit)){//用户点击退出//保存击毁的敌人Recorder.keepRecording();System.exit(0);}//存盘退出处理elseif(arg0.getActionCommand().equals(saveExit)){//System.out.print(111);//获取当前值Recorder.setEts(mp.ets);//保存击毁的敌人和敌人的坐标Recorder.keepRecAndEnemyTank();//退出System.exit(0);}//继续上一局elseif(arg0.getActionCommand().equals(continue)){//创建战场mp=newMyPanel(continue);this.add(mp);//注册监听this.addKeyListener(mp);//启动mp线程Threadt2=newThread(mp);t2.start();this.remove(msp);this.setVisible(true);}}}//开始提示面板classMyStartPanelextendsJPanelimplementsRunnable{inttimes=0;publicvoidpaint(Graphicsg){super.paint(g);g.fillRect(0,0,MyPanel.bx1,MyPanel.by1);if(times%2==0&×=30){//提示信息FontmyFont=newFont(华文新魏,Font.BOLD,30);g.setFont(myFont);g.setColor(Color.YELLOW);g.drawString(READY?GO!,100,120);}}@Overridepublicvoidrun(){//TODOAuto-generatedmethodstubwhile(true){try{Thread.sleep(500);}catch(Exceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}times++;//重画闪烁效果this.repaint();}}}//我的面板classMyPanelextendsJPanelimplementsKeyListener,Runnable{staticinth=300;//坦克初始位置staticintz=200;//暂停开始开关staticintpower=2;//背景区域大小staticintbx1=400;staticintby1=300;//声音控制staticintaudio=0;//定义一个我的坦克Herohero=null;//定义地方的坦克组VectorEnemyTankets=newVectorEnemyTank();staticintensize=10;//敌人个数//定义炸弹集合VectorBombbombs=newVectorBomb();//信息集合VectorNodenodes=newVectorNode();//定义2个图片,一起组成爆炸效果Imageimage1=null;Imageimage2=null;Imageimage3=null;//构造函数publicMyPanel(Stringflag){//恢复记录Recorder.getRecording();//播放声音AePlayWaveap=newAePlayWave(D:\\CHEN\\ks.wav);ap.start();//构造我的坦克hero=newHero(h,z);//构造初始敌人this.startEnemyTank(flag);//初始化图片//下面的方法第一个爆炸效果不明显image1=Toolkit.getDefaultToolkit().getImage(Panel.class.getResource(/beng.png));image2=Toolkit.getDefaultToolkit().getImage(Panel.class.getResource(/beng2.png));image3=Toolkit.getDefaultToolkit().getImage(Panel.class.getResource(/beng3.png));//try{//image1=ImageIO.read(newFile(shanshui.jpg));//image2=ImageIO.read(newFile(beng2.png));//image3=ImageIO.read(newFile(beng3.png));//}catch(Exceptione){////TODOAuto-generatedcatchblock//e.printStackTrace();//}}publicvoidstartEnemyTank(Stringflag){if(flag.equals(newgame)){//构造敌方坦克for(inti=0;iensize;i++){//创建敌方坦克敌人的初始位置EnemyTanket=newEnemyTank((i+1)*35,0);et.setColor(0);//???et.setDirect(2);//将MyPanel创建的坦克交给该敌人et.setEts(ets);//加入向量组ets.add(et);//给敌人添加子弹Shots=newShot(et.x+10,et.y+30,2);et.ss1.add(s);Threadt2=newThread(s);t2.start();//启动敌人坦克Threadt=newThread(et);t.start();}}else{nodes=newRecorder().getNodesAndEnemy();//构造敌方坦克for(inti=0;inodes.size();i++){//取出NodeNodenode=nodes.get(i);//创建敌方坦克敌人的初始位置EnemyTanket=newEnemyTank(node.x,node.y);et.setColor(0);//???et.setDirect(node.direct);//将MyPanel创建的坦克交给该敌人et.setEts(ets);//加入向量组ets.add(et);//给敌人添加子弹Shots=newShot(et.x+10,et.y+30,2);et.ss1.add(s);Threadt2=newThread(s);t2.start();//启动敌人坦克Threadt=newThread(et);t.start();}}}//函数的重载,用于重复产生敌人(int

1 / 46
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功