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

📄 mainframe.java

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

    public void ProcessKeyEvent(KeyEvent e) { //判断输入的是哪个键,并做出响应
        jNextGraphPanel.PreviewGraph(intGraph);
        switch (e.getKeyCode()) {
            case KeyEvent.VK_DOWN: //如果是向下键,就一下到底,并产生一个新的方块
                root.downTo();
                DeleteLine(); //消去添满的一行,并加10分
                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);
                }
                break;
            case KeyEvent.VK_LEFT:
                root.left();
                jGamePanel.UpdateGraph(gGameAreaTable);
                break; //详见root类
            case KeyEvent.VK_RIGHT:
                root.right();
                jGamePanel.UpdateGraph(gGameAreaTable);
                break;
            case KeyEvent.VK_UP:
                root.change();
                jGamePanel.UpdateGraph(gGameAreaTable);
                break;
            default:
                break;
        }
    }

    public void DeleteLine() { //消去添满的一行,并加10分
        boolean isCan; //标志是否循环消一行
        boolean isContinue = true; //标志是否还有待消的行
        int k = gGameAreaTable.y - 1;

        while (isContinue) {
            isCan = true;
            while (isCan) {
                for (int i = 0; i < gGameAreaTable.x; i++) {
                    if (gGameAreaTable.myTable[i][k] != 1)
                        isCan = false;
                }
                if (isCan) { //满足条件,开始消行
                    for (int i = 0; i < gGameAreaTable.x; i++)
                        gGameAreaTable.myTable[i][k] = 0;
                    for (int j = k - 1; j >= 0; j--)
                        for (int i = 0; i < gGameAreaTable.x; i++) {
                            if (gGameAreaTable.myTable[i][j] == 1) {
                                gGameAreaTable.myTable[i][j + 1] = 1;
                                gGameAreaTable.myTable[i][j] = 0;
                            }
                        }
                    jGamePanel.UpdateGraph(gGameAreaTable);
                    intTotalScore += 10; //加成绩
                    UpdateScore(intTotalScore);
                }
            }
            k--;
            if (k < 1)
                isContinue = false;
        }
    }

    public void GameResetGamePara() { //游戏结束
        timer.stop();
        bCanMove = false;
        JOptionPane anOptionPane = new JOptionPane(); //弹出对话框
        anOptionPane.showMessageDialog(this, "游戏结束,再来一次?", "Game Over!",
                                       JOptionPane.WARNING_MESSAGE);
        bCanMove = false;
        ResetGamePara(); //处理各个变量,以便重新开始
    }

//游戏结束后,处理各个变量,以便重新开始
    public void ResetGamePara() {
        timer.stop();
        for (int i = 0; i < gGameAreaTable.x; i++) //重新给游戏桌置0标志
            for (int j = 0; j < gGameAreaTable.y; j++) {
                gGameAreaTable.myTable[i][j] = 0;
            }
        jGamePanel.UpdateGraph(gGameAreaTable);

        bCanMove = false;
        intTotalScore = 0;
        jScoreTextField.setText( (new Integer(intTotalScore)).toString());
        nTime = 1000;
        intSpeed = 1;
        jSpeedSpinner.setValue(new Integer(intSpeed));

        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;
        jGamePanel.UpdateGraph(gGameAreaTable);
        root.begin();
    }

    void jStartButton_actionPerformed(ActionEvent e) {
        jStartButton.setFocusable(false);
        jRestartButton.setFocusable(false);
        jExitButton.setFocusable(false);
        this.getContentPane().setFocusable(true);
        this.getContentPane().setFocusCycleRoot(true);
        bCanMove = true;

        timer = new Timer(nTime, new MyRun()); //根据选择的nTime间隔重新设置记时器,以变换速度
        timer.start();
    }

    void jRestartButton_actionPerformed(ActionEvent e) {
        timer.stop();
        jGamePanel.Init();
        bCanMove = false;
    }

    void jExitButton_actionPerformed(ActionEvent e) {
        System.exit(0);
    }

    public class SpeedChangeListener
        implements ChangeListener { //速度控件监听器
        public void stateChanged(ChangeEvent e) {
            if (e.getSource() == jSpeedSpinner) {
                String strSpeed = new String(jSpeedSpinner.getValue().toString());
                intSpeed = Integer.parseInt(strSpeed);
                if (intSpeed < 1)
                    intSpeed = 1;
                if (intSpeed > 9)
                    intSpeed = 9;
                jSpeedSpinner.setValue(new Integer(intSpeed));
            }
            UpdateSpeed();
        }
    }

    public void UpdateSpeed() {
        jSpeedSpinner.setValue(new Integer(intSpeed));
        String strSpeed = new String(jSpeedSpinner.getValue().toString());
        intSpeed = Integer.parseInt(strSpeed);

        nTime = 1000 - (intSpeed * 110);
        timer = new Timer(nTime, new MyRun()); //根据选择的nTime间隔重新设置记时器,以变换速度
        if (bCanMove)
            timer.start();
    }

    public void UpdateScore(int intScore) {
        if (intScore > intSpeed * 10)
            intSpeed++;
        if (intSpeed > 9)
            intSpeed = 1;

        UpdateSpeed();
        jScoreTextField.setText( (new Integer(intScore)).toString());
    }
}

class MainFrame_jStartButton_actionAdapter
    implements java.awt.event.ActionListener {
    MainFrame adaptee;

    MainFrame_jStartButton_actionAdapter(MainFrame adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.jStartButton_actionPerformed(e);
    }
}

class MainFrame_jRestartButton_actionAdapter
    implements java.awt.event.ActionListener {
    MainFrame adaptee;

    MainFrame_jRestartButton_actionAdapter(MainFrame adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.jRestartButton_actionPerformed(e);
    }
}

class MainFrame_jExitButton_actionAdapter
    implements java.awt.event.ActionListener {
    MainFrame adaptee;

    MainFrame_jExitButton_actionAdapter(MainFrame adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.jExitButton_actionPerformed(e);
    }
}

⌨️ 快捷键说明

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