【实例简介】
【实例截图】
【核心代码】
/**
* 功能:坦克游戏的5.0[]
* 1.画出坦克.
* 2.我的坦克可以上下左右移动
* 3.可以发射子弹,子弹连发(最多5)
* 4.当我的坦克击中敌人坦克时,敌人就消失(爆炸的效果)
* 5.我被击中后,显示爆炸效果
* 6.防止敌人坦克重叠运动(*)
* 6.1决定把判断是否碰撞的函数写到EnemyTank类
* 7.可以分关(*)
* 7.1做一个开始的Panle,它是一个空的
* 7.2闪烁效果
* 8.可以在玩游戏的时候暂停和继续(*)
* 8.1当用户点击暂停时,子弹的速度和坦克速度设为0,并让坦克的方向不要变化
* 9.可以记录玩家的成绩(*)
* 9.1用文件流.
* 9.2单写一个记录类,完成对玩家记录
* 9.3先完成保存共击毁了多少辆敌人坦克的功能.
* 9.4存盘退出游戏,可以记录当时的敌人坦克坐标,并可以恢复
* 10.java如何操作声音文件(*)
* 10.1对声音文件的操作
*/
package com.test3;
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;
public class MyTankGame3 extends JFrame implements ActionListener {
MyPanel mp=null;
//定义一个开始面板
MyStartPanel msp=null;
//作出我需要的菜单
JMenuBar jmb=null;
//开始游戏
JMenu jm1=null;
JMenuItem jmil=null;
//退出系统
JMenuItem jmi2=null;
//存盘退出
JMenuItem jmi3=null;
JMenuItem jmi4=null;
public static void main(String[] args) {
// TODO Auto-generated method stub
MyTankGame3 mtg=new MyTankGame3();
}
//构造函数
public MyTankGame3()
{
//mp=new MyPanel();
//启动mp线程
//Thread t=new Thread(mp);
//t.start();
//this.add(mp);
//注册监听
//this.addKeyListener(mp);
//创建菜单及菜单选项
jmb=new JMenuBar();
jm1 =new JMenu("游戏(G)");
//设置快捷方式
jm1.setMnemonic('G');
jmil =new JMenuItem("开始新游戏(N)");
jmi2 =new JMenuItem("退出游戏(E)");
jmi3 =new JMenuItem("存盘退出游戏(C)");
jmi4 =new JMenuItem("继续上局游戏(S)");
//注册监听
jmi4.addActionListener(this);
jmi4.setActionCommand("conGame");
//注册监听
jmi3.addActionListener(this);
jmi3.setActionCommand("saveExit");
jmi2.addActionListener(this);
jmi2.setActionCommand("exit");
jmi2.setMnemonic('E');
//对jmil相应
jmil.addActionListener(this);
jmil.setActionCommand("newgame");
jm1.add(jmil);
jm1.add(jmi2);
jm1.add(jmi3);
jm1.add(jmi4);
jmb.add(jm1);
msp=new MyStartPanel();
Thread t=new Thread(msp);
t.start();
this.setJMenuBar(jmb);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.add(msp);
this.setSize(600, 500);
this.setVisible(true);
}
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
//对用户不同的点击作出不同的处理
if(arg0.getActionCommand().equals("newgame"))
{
//创建战场面板
mp=new MyPanel("newGame");
//启动mp线程
Thread t=new Thread(mp);
t.start();
//先删除旧的开始面板
t