⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jmine.java

📁 用java实现的全真模拟windows下的扫雷程序。不过目前实现以button方式实现。改进可以考虑以位图形式实现
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*
 * JMine.java 1.0 2003-06-25
 *
 * Copyleft (c) 2003 RatKing.
 */

/*
<applet archive="JMine.jar" code="jmine.JMine.class" width="500" height="400">
</applet>
*/

package jmine;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

/**
 * 扫雷游戏
 *
 * @author <a href="ratking@ynet.com">RatKing</a>
 * @version 1.0
 */
public class JMine extends JApplet {
    public static final Font defaultFont = new Font("Dialog", Font.PLAIN, 12);
    public static MineProps mineProps;

    /** 本程序以Java Application模式独立运行则为true,以Applet模式运行则为false */
    public boolean isStandalone = false;
    public JMine instance = null;
    public JFrame frame = null;

    private JMenuBar menubar;
    private MinePanel minePanel;

    public int gameLevel;

    /** Construct the JMine applet */
    public JMine() {
        this(mineProps.gameLevel);
    }

    public JMine(int gameLevel) {
        this.gameLevel =gameLevel;
    }

    /** Initialize the applet */
    public void init() {
        instance = this;

        //Component initialization

        // 添加菜单栏
        JMenuBar menubar = createMenuBar();
        setJMenuBar(menubar);

        // 添加总面板
        minePanel = new MinePanel(this, gameLevel);
        minePanel.isMark  = mineProps.isMark;
        minePanel.isColor = mineProps.isColor;
        minePanel.isSound = mineProps.isSound;
        //getRootPane().setDefaultButton(minePanel.faceButton);
        getContentPane().add(minePanel, BorderLayout.CENTER);
    }

    /** Start the applet */
    public void start() {
        minePanel.resume();
        if (!isStandalone) {
            showStatus(getAppletInfo());
        }
    }

    /** Stop the applet */
    public void  stop() {
        minePanel.pause();
    }

    /** Destroy the applet */
    public void  destroy() {
    }

    /** Get a parameter value */
    public String getParameter(String key, String def) {
        return isStandalone ? System.getProperty(key, def) :
            (getParameter(key) != null ? getParameter(key) : def);
    }

    /** Get Applet information */
    public String getAppletInfo() {
        return "JMine v1.0 by RatKing 2003.06.25";
    }

    /** Get parameter info */
    public String[][] getParameterInfo() {
        return null;
    }

    /**
     * 创建菜单栏
     * @return 创建的菜单栏
     */
    public JMenuBar createMenuBar() {
        // 定义菜单栏
        JMenuBar menuBar = new JMenuBar();

        // 定义主菜单
        JMenu mFile = new JMenu("游戏(G)");
        JMenu mHelp = new JMenu("帮助(H)");

        // 定义菜单项
        JMenuItem            miNew        = new JMenuItem("开局(N)");
        JRadioButtonMenuItem miLowRank    = new JRadioButtonMenuItem("初级(B)", true);
        JRadioButtonMenuItem miMiddleRank = new JRadioButtonMenuItem("中级(I)");
        JRadioButtonMenuItem miHighRank   = new JRadioButtonMenuItem("高级(E)");
        JRadioButtonMenuItem miCustomRank = new JRadioButtonMenuItem("自定义(C)...");
        JCheckBoxMenuItem    miMark       = new JCheckBoxMenuItem("标记(?)(M)", true);
        JCheckBoxMenuItem    miColor      = new JCheckBoxMenuItem("颜色(L)", true);
        JCheckBoxMenuItem    miSound      = new JCheckBoxMenuItem("声音(S)", true);
        JMenuItem            miTopList    = new JMenuItem("扫雷英雄榜(T)...");
        JMenuItem            miExit       = new JMenuItem("退出(X)");

        JMenuItem miContent = new JMenuItem("目录(C)");
        JMenuItem miSearch  = new JMenuItem("查找帮助主题(S)...");
        JMenuItem miShowHelp= new JMenuItem("使用帮助(H)");
        JMenuItem miAbout   = new JMenuItem("关于扫雷(A)...");

        miLowRank.setSelected(mineProps.gameLevel == MinePanel.LOW_LEVEL);
        miMiddleRank.setSelected(mineProps.gameLevel == MinePanel.MIDDLE_LEVEL);
        miHighRank.setSelected(mineProps.gameLevel == MinePanel.HIGH_LEVEL);
        miCustomRank.setSelected(mineProps.gameLevel == MinePanel.CUSTOM_LEVEL);  // 永远不可能发生
        miMark.setSelected(mineProps.isMark);
        miColor.setSelected(mineProps.isColor);
        miSound.setSelected(mineProps.isSound);

        // 指定助记键、快捷键
        mFile.setMnemonic(KeyEvent.VK_G);
        mHelp.setMnemonic(KeyEvent.VK_H);

        miNew.setMnemonic(KeyEvent.VK_N);
        miNew.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F2, 0));
        miLowRank.setMnemonic(KeyEvent.VK_B);
        miMiddleRank.setMnemonic(KeyEvent.VK_I);
        miHighRank.setMnemonic(KeyEvent.VK_E);
        miCustomRank.setMnemonic(KeyEvent.VK_C);
        miMark.setMnemonic(KeyEvent.VK_M);
        miColor.setMnemonic(KeyEvent.VK_L);
        miSound.setMnemonic(KeyEvent.VK_S);
        miTopList.setMnemonic(KeyEvent.VK_T);
        miExit.setMnemonic(KeyEvent.VK_X);

        miContent.setMnemonic(KeyEvent.VK_C);
        miContent.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0));
        miSearch.setMnemonic(KeyEvent.VK_S);
        miShowHelp.setMnemonic(KeyEvent.VK_H);
        miAbout.setMnemonic(KeyEvent.VK_A);

        // 将4个游戏级别单选菜单归为一组
        ButtonGroup buttonGroup = new ButtonGroup();
        buttonGroup.add(miLowRank);
        buttonGroup.add(miMiddleRank);
        buttonGroup.add(miHighRank);
        buttonGroup.add(miCustomRank);

        // 设置菜单项对应的功能
        miNew.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                minePanel.replay();
                if (!isStandalone) {
                    setSize(getPreferredSize());
                    validate();
                }
                else if (frame != null) {
                    frame.pack();
                }
            }
        });
        miLowRank.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                minePanel.setGameLevel(MinePanel.LOW_LEVEL);
                mineProps.gameLevel = MinePanel.LOW_LEVEL;
                if (isStandalone) {
                    if (frame != null) {
                        //frame.pack();
                        Utils.packPlaceShow(frame);
                    }
                }
                else {
                    setSize(getPreferredSize());
                    validate();
                }
            }
        });
        miMiddleRank.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                minePanel.setGameLevel(MinePanel.MIDDLE_LEVEL);
                mineProps.gameLevel = MinePanel.MIDDLE_LEVEL;
                if (isStandalone) {
                    if (frame != null) {
                        //frame.pack();
                        Utils.packPlaceShow(frame);
                    }
                }
                else {
                    setSize(getPreferredSize());
                    validate();
                }
            }
        });
        miHighRank.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                minePanel.setGameLevel(MinePanel.HIGH_LEVEL);
                mineProps.gameLevel = MinePanel.HIGH_LEVEL;
                if (isStandalone) {
                    if (frame != null) {
                        //frame.pack();
                        Utils.packPlaceShow(frame);
                    }
                }
                else {
                    setSize(getPreferredSize());
                    validate();
                }
            }
        });
        miCustomRank.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                int rows = minePanel.getMineRows();
                int columns = minePanel.getMineColumns();
                int mines = minePanel.getTotalMines();

                CustomDialog dlg = new CustomDialog(frame);
                dlg.setRows(rows);
                dlg.setColumns(columns);
                dlg.setMines(mines);

                //dlg.show();
                Utils.packCenterShow(frame, dlg);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -