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

📄 localdemo.java

📁 Java编写的小游戏扫雷代码,可以在多种环境下运行
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package org.nebula.games.go;

import org.nebula.media.*;
import org.nebula.cwt.*;
import org.nebula.cwt.grid.*;

import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;
import javax.swing.event.*;
import javax.swing.tree.*;
import javax.swing.*;
import java.io.File;
import java.net.URL;

/**
 *-----------------------------  Local Play  --------------------------------------------
 */
public class LocalDemo extends JFrame implements GridListener, ActionListener{
	ImageIcon icoSound, icoNoSound, icoShowNum, icoNotShow;
    JButton btNew, btOpen, btLoad, btClose, btSave,Undo,btSound,btShowNum, btHelp;
    JButton btFirst, btPrevious, btNext, btLast, btPreComment, btNextComment;
    JButton btResetComment, btEditComment, btSaveComment;

	JButton btCloseVar, btNextSib, btPreSib;
	JButton btDelStone;
	JToggleButton btAddStone, btTriangle, btSquare, btCircle, btCross, btChar;
	JComboBox cboChar;
	JTextArea txtComment;

	GoBoard board;
	DefaultBoardModel boardModel;
//	int curPos;

    Match match;
	Movement root, current;

	boolean play_music;

	SoundPlayer sp = new SoundPlayer(getResource("/resources/putstone.wav"));

    public LocalDemo() {
		super("手谈--棋谱演示");

    	boardModel = new DefaultBoardModel(GoBoardModel.DEFAULT_BOARD_SIZE);
	    board = new GoBoard(boardModel);
	    board.addGridListener(this);

        btResetComment = createToolButton("reset_comment.gif","重置注解");
        btSaveComment = createToolButton("save_comment.gif","保存注解");
        btEditComment = createToolButton("edit.gif","编辑注解");
        txtComment = new JTextArea();
        txtComment.setWrapStyleWord(true);
        txtComment.setLineWrap(true);

        JPanel infoPad = new JPanel();
        GridBagLayout gbl = new GridBagLayout();
        GridBagConstraints gc = new GridBagConstraints();
        gc.fill = GridBagConstraints.BOTH;
        gc.insets = new Insets(5,15,5,15);
        infoPad.setLayout(gbl);

        GUITools.addComponentTo(infoPad, btResetComment,    gbl, gc, 0, 0, 1, 1, 0.0, 0.0);
        GUITools.addComponentTo(infoPad, btEditComment,     gbl, gc, 1, 0, 1, 1, 0.0, 0.0);
        GUITools.addComponentTo(infoPad, btSaveComment,     gbl, gc, 2, 0, 1, 1, 0.0, 0.0);
        GUITools.addComponentTo(infoPad, new JScrollPane(txtComment),     gbl, gc, 0, 1, 3, 1, 0.0, 1.0);

		setBackground(Color.lightGray);
		getContentPane().setLayout(new BorderLayout());
        getContentPane().add("Center", board);
        getContentPane().add("East", infoPad);
        getContentPane().add("North", createBoardToolBar());
        getContentPane().add("South", createDemoToolBar());

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        pack();
        show();
//        this.setExtendedState(JFrame.MAXIMIZED_BOTH);

       	board.setNumberStart(0, 1);
		play_music = true;

        txtComment.setEditable(false);
        txtComment.setEnabled(false);

        initDemo(null);
    }

    private Component createBoardToolBar() {
        JButton b;
        JToolBar toolbar = new JToolBar();
        toolbar.setOrientation(JToolBar.HORIZONTAL);
        toolbar.setFloatable(false);
        toolbar.putClientProperty("JToolBar.isRollover", Boolean.TRUE);

        icoSound   = new ImageIcon(getResource("/resources/sound1.gif"));
        icoNoSound = new ImageIcon(getResource("/resources/sound2.gif"));
        icoShowNum = new ImageIcon(getResource("/resources/shownum1.gif"));
        icoNotShow = new ImageIcon(getResource("/resources/shownum2.gif"));

        btNew    = createToolButton("new.gif","新建棋谱");
        btOpen    = createToolButton("open.gif","打开棋谱");
        btLoad    = createToolButton("library.gif","打开棋谱库");
        btClose = createToolButton("close.gif","关闭演示");
        btSave     = createToolButton("save.gif","保存棋谱");
        btShowNum = createToolButton("shownum1.gif","棋子序号");
        btSound = createToolButton("sound2.gif","音效");
        btHelp = createToolButton("help.gif","帮助");

        btShowNum.setIcon(icoShowNum);

        toolbar.add(btNew);
        toolbar.add(btOpen);
        toolbar.add(btLoad);
        toolbar.add(btClose);
        toolbar.add(btSave);
        toolbar.add(Box.createHorizontalStrut(5));
        toolbar.add(btShowNum);
        toolbar.add(btSound);
        toolbar.add(Box.createHorizontalStrut(5));
        toolbar.add(btHelp);

        toolbar.setBorder(BorderFactory.createRaisedBevelBorder());
        return toolbar;
    }

    private Component createDemoToolBar() {
        JButton b;
        JToolBar toolbar = new JToolBar();
        toolbar.setOrientation(JToolBar.HORIZONTAL);
        toolbar.setFloatable(false);
        toolbar.putClientProperty("JToolBar.isRollover", Boolean.TRUE);

        btFirst    = createToolButton("first.gif","第一步");
        btPrevious = createToolButton("previous.gif","上一步");
        btNext     = createToolButton("next.gif","下一步");
        btLast     = createToolButton("last.gif","最后一步");
        btPreComment= createToolButton("pre_comment.gif","上次评论");
        btNextComment= createToolButton("next_comment.gif","下次评论");

        btCloseVar  = createToolButton("to_parent.gif","关闭当前参考");
        btNextSib   = createToolButton("sib_next.gif","下一参考图");
        btPreSib    = createToolButton("sib_pre.gif","上一参考图");

        btSquare    = createToolToggleButton("square.gif","标记方块");
        btTriangle  = createToolToggleButton("triangle.gif","标记三角");
        btCircle    = createToolToggleButton("circle.gif","标记圆形");
        btCross     = createToolToggleButton("xxx.gif","标记X");
        btChar      = createToolToggleButton("char.gif","标记字符");
        btAddStone  = createToolToggleButton("addstone.gif", "添加棋子");
		ButtonGroup group = new ButtonGroup();
		group.add(btSquare);
		group.add(btTriangle);
		group.add(btCircle);
		group.add(btCross);
		group.add(btChar);
		group.add(btAddStone);

		cboChar = new JComboBox();
        for (int i = 0; i < 26; i++) {
            char c = (char) (97 + i);
            cboChar.addItem("" + c);
        }
        cboChar.setMaximumSize(cboChar.getPreferredSize());
        btDelStone    = createToolButton("sib_del.gif","删除棋子");

        toolbar.add(btFirst);
        toolbar.add(btPreComment);
        toolbar.add(btPrevious);
        toolbar.add(btNext);
        toolbar.add(btNextComment);
        toolbar.add(btLast);
		toolbar.add(new JLabel(new ImageIcon(getResource("/resources/separater.gif"))));
        toolbar.add(btCloseVar);
        toolbar.add(btNextSib);
        toolbar.add(btPreSib);
		toolbar.add(new JLabel(new ImageIcon(getResource("/resources/separater.gif"))));
        toolbar.add(btSquare);
        toolbar.add(btTriangle);
        toolbar.add(btCircle);
        toolbar.add(btCross);
        toolbar.add(btChar);
        toolbar.add(cboChar);
        toolbar.add(btAddStone);
        toolbar.add(btDelStone);

        toolbar.setBorder(BorderFactory.createRaisedBevelBorder());
        return toolbar;
    }

    private JButton createToolButton(String ico, String tip) {
        JButton bt;
        bt = new JButton(new ImageIcon(getResource("/resources/" + ico))) {
            public float getAlignmentY() { return 0.5f; }
        };
        bt.setRequestFocusEnabled(false);
        bt.setMargin(new Insets(1,1,1,1));
        bt.setToolTipText(tip);
        bt.addActionListener(this);
        return bt;
    }

    private JToggleButton createToolToggleButton(String ico, String tip) {
        JToggleButton bt;
        bt = new JToggleButton(new ImageIcon(getResource("/resources/" + ico))) {
            public float getAlignmentY() { return 0.5f; }
        };
        bt.setRequestFocusEnabled(false);
        bt.setMargin(new Insets(1,1,1,1));
        bt.setToolTipText(tip);
        //bt.addActionListener(this);
        return bt;
    }

    public void actionPerformed(ActionEvent e) {
		JButton bt = (JButton) e.getSource();
        if (bt == btOpen) {
            JFileChooser chooser = new JFileChooser();
            chooser.showOpenDialog(this);
            File openFile = chooser.getSelectedFile();
            if (openFile != null) {
                Match m = QipuManager.readMatchFromFile(openFile.getAbsolutePath(), QipuManager.SGF);
                initDemo(m);
            }
        } else if (bt == btLoad) {
            Match m = QipuLibrary.getMatch(new JFrame(), "选择棋谱");
            initDemo(m);
        } else if (bt == btSave) {
            JFileChooser chooser = new JFileChooser();
            chooser.showSaveDialog(this);
            File saveFile = chooser.getSelectedFile();
            if (saveFile.exists()) {
                String ss = "文件已存在,覆盖么?";
                if (JOptionPane.showConfirmDialog(btSave,ss,"",JOptionPane.YES_NO_OPTION) == JOptionPane.NO_OPTION){
                    return;
                }
            }
            System.out.println("try to save match......");
            QipuManager.saveMatchToFile(match, saveFile.getAbsolutePath(), QipuManager.SGF);

        } else if (bt == btShowNum) {
			if (board.isShowingNumber()){
				board.setShowingNumber(false);
				btShowNum.setIcon(icoShowNum);
			}
			else {
				board.setShowingNumber(true);
				btShowNum.setIcon(icoNotShow);
			}

		} else if (bt == btSound) {
			if (play_music){
				play_music = false;
				btSound.setIcon(icoSound);
			}
			else {
				play_music = true;
				btSound.setIcon(icoNoSound);
			}
		} else if (bt == btNext) {
			if (current.isLeaf()) {
				return;
			}

			showMovement((Movement) current.getFirstChild());

		} else if (bt == btPrevious) {
			if (current == root) {
				return;
			}

			undo();

		} else if (bt == btCloseVar) {
			Movement move = current;
			while (move != root) {

⌨️ 快捷键说明

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