呵呵,前一阵子忙着考试,好长时间没上BLOG了。今天贴一个我自己做的扫雷程序,提高下人气,^_^
因为刚写这个程序的时候没有想过会写的这么复杂,所以代码注释很少,抱歉。下面稍微说一下主要类的用途:
MainFrame:主程序
ImageFactory:图片管理
LevelInfo:级别设定
LevelLog:级别记录
MineGrid:格子
*Dialog:各种各样的对话框
swing:
AboutDialog:关于对话框,模仿windows制做
awt:
LedNumber:把数字格式化为液晶字体图像
源代码:
//file MainFrame.java:
package nicholas.game.mine;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
import nicholas.awt.LedNumber;
import nicholas.swing.AboutDialog;
public class MainFrame extends JFrame implements ActionListener {
//UI components
private JLabel mineLabel;
private JLabel timeLabel;
private JLabel statusButton;
private JPanel gridPanel;
private JPanel statusPanel;
private Dimension gpd;
private Dimension spd;
private MineGrid grid[][];
private boolean mode[][];
private final int margin = 7;
private final int titleh = 52;
private int xBound;
private int yBound;
private int mineCount;
private int showCount; //the amount of grids opened
private int leftCount; //the amount of mines not labeled
private int timepassed;
private boolean firstClick;
private boolean markCheck;
//Menu Components
private JMenuItem startItem;
private JMenuItem exitItem;
private JMenuItem logItem;
private JMenuItem aboutItem;
private JRadioButtonMenuItem levelItem[];
private JCheckBoxMenuItem markCheckItem;
//Game informations
private LevelInfo levelInfo;
private int currentLevel;
private LevelLog log[];
private LedNumber led;
private GridMouseAdapter gma;
private StatusMouseAdapter sma;
private TimeThread timeThread;
public MainFrame() {
super("扫雷");
//default
currentLevel = 0;
levelInfo = LevelInfo.DEFAULT_LEVEL[currentLevel];
log = new LevelLog[3];
for(int i=0;i<3;i++)
log[i] = new LevelLog();
//read from file
readLog();
led = new LedNumber();
gma = new GridMouseAdapter();
sma = new StatusMouseAdapter();
//setup menus
setMenuBar();
setStatusPanel();
resetPane();
addWindowListener(
new WindowAdapter() {
public void windowClosing(WindowEvent e) {
writeLog();
System.exit(0);
}
}
);
setIconImage(ImageFactory.getInstance().getImageicon(16).getImage());
setResizable(false);
}
//execution application






