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

📄 mainframe.java~527~

📁 Java课程设计案例精编源代码,非常经典的教材,非常经典的源代码.大家互相学习一下!
💻 JAVA~527~
📖 第 1 页 / 共 2 页
字号:
package russiagame;

import javax.swing.*;
import com.borland.jbcl.layout.*;
import java.awt.*;
import java.awt.Toolkit;
import javax.swing.border.*;
import java.awt.event.*;
import javax.swing.event.*;

/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2003</p>
 * <p>Company: </p>
 * @author not attributable
 * @version 1.0
 */

public class MainFrame
    extends JFrame {
    private Timer timer;      //方块下落时间间隔控制类
    private int nTime = 1000; //方块下落速度
    private Root root;        //方块
    private GameTable gGameAreaTable; //方块下落区
    private PreviewTable gPreviewTable; //方块预览区

    private int intGraph;             //标志创建哪一个要下落的方块
    private int intNextGraph;         //标志下一个要创建的方块,即提前显示下落块
    private int intTotalScore = 0;    //用来记录总分数
    private boolean bCanMove = false; //标志是否响应键盘

    private Panel jMainPanel = new Panel(); //添加键盘监听的Panel
    private GameAreaPanel jGamePanel;       //方块下落区域
    private PreviewPanel jNextGraphPanel;   //方块预览区域

    private XYLayout xyLayout = new XYLayout();   //界面布局
    private TitledBorder titledBorder1;
    private JButton jStartButton = new JButton();
    private JButton jRestartButton = new JButton();
    private JButton jExitButton = new JButton();
    private JLabel jSpeedLabel = new JLabel();
    private JSpinner jSpeedSpinner = new JSpinner();
    private JLabel jScoreLabel = new JLabel();
    private JTextField jScoreTextField = new JTextField();
    private JLabel jNextGraphLabel = new JLabel();
    private TitledBorder titledBorder3;
    private JLabel jCopyRightLabel = new JLabel();
    private int intSpeed = 1; //速度等级

    TitledBorder titledBorder4;
    TitledBorder titledBorder5;
    TitledBorder titledBorder6;
    TitledBorder titledBorder7;
    TitledBorder titledBorder8;

    public MainFrame() {
        try {
            setTitle("俄罗斯方块游戏");
            setLocation(200, 130);
            setSize(600, 400);
            jbInit();
            getContentPane().add(jMainPanel, "North");
            getContentPane().addKeyListener(new KeyAdapter() { //主窗口添加键盘监听器
                public void keyPressed(KeyEvent e) {
                    ProcessKeyEvent(e);
                }
            });

            addWindowListener(new WindowAdapter() {
                public void windowClosing(WindowEvent e) {
                    dispose();
                }
            });

        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        MainFrame objMainFrame = new MainFrame();
        objMainFrame.pack();
        objMainFrame.setVisible(true);
        objMainFrame.validate();
        objMainFrame.setResizable(false);
    }

    private void jbInit() throws Exception {
        jMainPanel.setBackground(new Color(72, 112, 112));
        jMainPanel.setForeground(UIManager.getColor(
            "TextArea.selectionBackground"));
        jMainPanel.setLayout(xyLayout);

        gGameAreaTable = new GameTable(15, 26);
        gPreviewTable = new PreviewTable(5, 4);

        jGamePanel = new GameAreaPanel(gGameAreaTable);
        jNextGraphPanel = new PreviewPanel(gPreviewTable);

        jStartButton.setBackground(Color.pink);
        jStartButton.setFont(new java.awt.Font("Dialog", 0, 14));
        jStartButton.setForeground(SystemColor.desktop);
        jStartButton.setBorder(titledBorder1);
        jStartButton.setBorderPainted(true);
        jStartButton.setText("开始游戏");
        jStartButton.addActionListener(new MainFrame_jStartButton_actionAdapter(this));

        jRestartButton.setBackground(Color.pink);
        jRestartButton.setFont(new java.awt.Font("Dialog", 0, 14));
        jRestartButton.setForeground(SystemColor.desktop);
        jRestartButton.setBorder(titledBorder1);
        jRestartButton.setText("重新游戏");
        jRestartButton.addActionListener(new
                                         MainFrame_jRestartButton_actionAdapter(this));

        jExitButton.setBackground(Color.pink);
        jExitButton.setFont(new java.awt.Font("Dialog", 0, 14));
        jExitButton.setForeground(SystemColor.desktop);
        jExitButton.setBorder(titledBorder1);
        jExitButton.setText("退出游戏");
        jExitButton.addActionListener(new MainFrame_jExitButton_actionAdapter(this));
        jExitButton.addActionListener(new MainFrame_jExitButton_actionAdapter(this));

        jSpeedLabel.setFont(new java.awt.Font("SansSerif", 0, 14));
        jSpeedLabel.setForeground(Color.orange);
        jSpeedLabel.setBorder(titledBorder6);
        jSpeedLabel.setText("速度选择");
        jSpeedSpinner.setValue(new Integer(1));
        jSpeedSpinner.addChangeListener(new SpeedChangeListener());

        jScoreLabel.setText("分数记录");
        jScoreLabel.setForeground(Color.orange);
        jScoreLabel.setBorder(titledBorder6);
        jScoreLabel.setDebugGraphicsOptions(0);
        jScoreLabel.setFont(new java.awt.Font("SansSerif", 0, 14));
        jScoreTextField.setBackground(Color.pink);
        jScoreTextField.setBorder(null);
        jScoreTextField.setEditable(false);
        jScoreTextField.setText("0");
        jNextGraphLabel.setFont(new java.awt.Font("SansSerif", 0, 14));
        jNextGraphLabel.setForeground(Color.orange);
        jNextGraphLabel.setBorder(titledBorder6);
        jNextGraphLabel.setText("下一个图形");

        jGamePanel.setBackground(new Color(0, 118, 125));
        jCopyRightLabel.setText("Savage制作,2003-2010 Copyright...");
        jCopyRightLabel.setForeground(Color.orange);
        jCopyRightLabel.setFont(new java.awt.Font("SansSerif", 0, 14));

        xyLayout.setWidth(407);
        xyLayout.setHeight(504);
        jSpeedSpinner.setBackground(SystemColor.desktop);
        jSpeedSpinner.setBorder(BorderFactory.createLoweredBevelBorder());
        jMainPanel.add(jGamePanel, new XYConstraints(20, 21, 257, 447));
        jMainPanel.add(jNextGraphLabel, new XYConstraints(299, 159, 78, 28));
        jMainPanel.add(jCopyRightLabel, new XYConstraints(62, 472, 246, 28));
        jMainPanel.add(jRestartButton, new XYConstraints(299, 367, 88, 30));
        jMainPanel.add(jStartButton, new XYConstraints(299, 311, 88, 30));
        jMainPanel.add(jNextGraphPanel, new XYConstraints(299, 183, 78, 88));
        jMainPanel.add(jScoreLabel, new XYConstraints(299, 79, 68, 28));
        jMainPanel.add(jSpeedLabel, new XYConstraints(299, 7, 78, 28));
        jMainPanel.add(jExitButton, new XYConstraints(299, 419, 88, 31));
        jMainPanel.add(jScoreTextField, new XYConstraints(299, 110, 68, 24));
        jMainPanel.add(jSpeedSpinner, new XYConstraints(300, 32, 69, 25));

        intGraph = ( ( (int) Math.round(Math.random() * 12345)) % 8) + 1; //产生随机方块
        switch (intGraph) { //初始化产生的方块
            case 1:
                root = new One();
                break;
            case 2:
                root = new Two();
                break;
            case 3:
                root = new Three();
                break;
            case 4:
                root = new Four();
                break;
            case 5:
                root = new Five();
                break;
            case 6:
                root = new Six();
                break;
            case 7:
                root = new Seven();
                break;
            case 8:
                root = new Eight();
                break;
            default:
                break;
        }

        jNextGraphPanel.PreviewGraph(intGraph);
        root.begin(); //占据桌子,详见root类
        intNextGraph = ( ( (int) Math.round(Math.random() * 12345)) % 8) + 1; //产生下一个提前显示的方块
        intGraph = intNextGraph;
        timer = new Timer(nTime, new MyRun()); //创建记时器,调用MyRun

        addKeyListener(new KeyAdapter() { //主窗口添加键盘监听器
            public void keyPressed(KeyEvent e) {
                ProcessKeyEvent(e);
            }
        });
    }

    public class MyRun
        implements ActionListener { //记时器调用的监听器
        public void actionPerformed(ActionEvent e) {
            if (!bCanMove)
                return;

            if (!root.down()) { //将方块下落一格,如果不能再下降了,就调用下面语句
                DeleteLine(); //消行

                jNextGraphPanel.PreviewGraph(intGraph);
                switch (intGraph) { //产生新的方块
                    case 1:
                        root = new One();
                        break;
                    case 2:
                        root = new Two();
                        break;
                    case 3:
                        root = new Three();
                        break;
                    case 4:
                        root = new Four();
                        break;
                    case 5:
                        root = new Five();
                        break;
                    case 6:
                        root = new Six();
                        break;
                    case 7:
                        root = new Seven();
                        break;
                    case 8:
                        root = new Eight();
                        break;
                    default:
                        break;
                }
                intNextGraph = ( ( (int) Math.round(Math.random() * 12345)) % 8) +
                    1;
                intGraph = intNextGraph;
                if (!root.begin()) { //如果失败,游戏结束
                    jGamePanel.UpdateGraph(gGameAreaTable);
                    GameResetGamePara();
                }
                else
                    jGamePanel.UpdateGraph(gGameAreaTable);
            }
            else {

⌨️ 快捷键说明

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