Java坦克大战10版源代码.docx
- 文档编号:2129714
- 上传时间:2022-10-27
- 格式:DOCX
- 页数:30
- 大小:42.28KB
Java坦克大战10版源代码.docx
《Java坦克大战10版源代码.docx》由会员分享,可在线阅读,更多相关《Java坦克大战10版源代码.docx(30页珍藏版)》请在冰豆网上搜索。
Java坦克大战10版源代码
packageTankGame;
/**
*坦克大战
*
*@author杨伟
*
*@version1.0
*
*
*/
一、主程序
//直接【Ctrl+Shift+O】导入所有用到的类
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjavax.swing.ImageIcon;
importjavax.swing.JFrame;
importjavax.swing.JMenu;
importjavax.swing.JMenuBar;
importjavax.swing.JMenuItem;
publicclassTankGameextendsJFrameimplementsActionListener{//主程序启动
MyPanelmyPanel=null;
LevelPanellevelPanel=null;
JMenuBarmenuBar=null;//菜单栏
JMenumenu1=null;//菜单
JMenuItemmenuItem1=null;//子菜单
JMenuItemmenuItem2=null;
JMenuItemmenuItem3=null;
JMenuItemmenuItem4=null;
publicstaticvoidmain(String[]args){
TankGamet=newTankGame();
}
publicTankGame(){
menuBar=newJMenuBar();
menu1=newJMenu("游戏(G)");
menu1.setMnemonic('G');
menuItem1=newJMenuItem("新游戏(N)");
menuItem2=newJMenuItem("继续游戏(C)");
menuItem3=newJMenuItem("存盘退出(S)");
menuItem4=newJMenuItem("退出游戏(E)");
menuItem1.addActionListener(this);
menuItem2.addActionListener(this);
menuItem3.addActionListener(this);
menuItem4.addActionListener(this);
menuItem1.setActionCommand("newGame");
menuItem2.setActionCommand("conGame");
menuItem3.setActionCommand("saveExit");
menuItem4.setActionCommand("exit");
menu1.add(menuItem1);
menu1.add(menuItem2);
menu1.add(menuItem3);
menu1.add(menuItem4);
menuBar.add(menu1);
levelPanel=newLevelPanel();
Threadthread=newThread(levelPanel);
thread.start();
this.setJMenuBar(menuBar);
this.add(levelPanel);
this.setTitle("坦克大战");
this.setIconImage((newImageIcon("./TankGame/tank2.png")).getImage());
this.setSize(640,520);
this.setLocation(100,100);
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
publicvoidactionPerformed(ActionEvente){
if(e.getActionCommand().equals("newGame")){
myPanel=newMyPanel("newGame");
this.remove(levelPanel);//删除关卡面板
this.add(myPanel);
this.addKeyListener(myPanel);
Threadthread=newThread(myPanel);
thread.start();
this.setVisible(true);//开显示
}elseif(e.getActionCommand().equals("conGame")){
myPanel=newMyPanel("conGame");
Threadthread=newThread(myPanel);
thread.start();
this.remove(levelPanel);
this.add(myPanel);
this.addKeyListener(myPanel);
this.setVisible(true);
}elseif(e.getActionCommand().equals("saveExit")){
Record.seteTankVec(myPanel.eTankVec);//是静态方法所以不用new对象
Record.saveGame();
System.exit(0);
}elseif(e.getActionCommand().equals("exit")){
System.exit(0);
}
}
}
二、关卡面板类
Importjava.awt.Color;
importjava.awt.Font;
importjava.awt.Graphics;
importjavax.swing.JPanel;
classLevelPanelextendsJPanelimplementsRunnable{//关卡面板类
inttimes=0;
publicvoidpaint(Graphicsg){
super.paint(g);
g.fillRect(0,0,400,360);
if(times%2==0){
g.setColor(Color.yellow);
FontmyFont=newFont("楷体",Font.BOLD,40);
g.setFont(myFont);
g.drawString("第一关",140,200);
}
}
publicvoidrun(){
while(true){
try{
Thread.sleep(600);//控制闪烁时间
}catch(Exceptione){}
times++;
this.repaint();
}
}
}
三、我的面板类
importjava.awt.Color;
importjava.awt.Font;
importjava.awt.Graphics;
importjava.awt.Image;
importjava.awt.Panel;
importjava.awt.Toolkit;
importjava.awt.event.KeyEvent;
importjava.awt.event.KeyListener;
importjava.util.Vector;
importjavax.swing.JOptionPane;
importjavax.swing.JPanel;
classMyPanelextendsJPanelimplementsKeyListener,Runnable{//我的面板类
MyTankmyTank=null;
//MyTankmyTank1=null;//用于双人玩
EnemyTankenemyTank=null;
Tanktank;
Bulletbullet=null;
Explosionexplo=null;
inttankNum=3;//敌人坦克数量
Vector
//有了泛型,我们在集合类中添加对象的时候,就不用再强转了
Vector
Vector
//爆炸效果图片初始化
Imagepicture1=null;
Imagepicture2=null;
Imagepicture3=null;
publicMyPanel(Stringstr){
if(str.equals("newGame")){
myTank=newMyTank(150,327);//设定玩家坦克出现的位置、方向和颜色
//myTank1=newMyTank(300,330);
myTank.setDirection(0);
myTank.setColor(0);
for(inti=0;i enemyTank=newEnemyTank((i)*181+9,3);//设定敌方坦克出场位置、方向和颜色 enemyTank.setDirection (1); enemyTank.setColor (1); eTankVec.add(enemyTank);//将敌方坦克加入敌方坦克集合、并传回敌方坦克集合方法中 enemyTank.eTankSet(eTankVec); bullet=newBullet(enemyTank.x+10,enemyTank.y+30,1);//设定敌方坦克出场位置 Threadthread1=newThread(enemyTank); Threadthread2=newThread(bullet); thread1.start();//敌人坦克线程开启 thread2.start();//敌人子弹线程开启 } }elseif(str.equals("conGame")){ myTank=newMyTank(150,327);//设定玩家坦克出现的位置、方向和颜色 //myTank1=new
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 坦克 大战 10 源代码