?? mainframe.java~530~
字號(hào):
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; //方塊下落時(shí)間間隔控制類
private int nTime = 1000; //方塊下落速度
private Root root; //方塊
private GameTable gGameAreaTable; //方塊下落區(qū)
private PreviewTable gPreviewTable; //方塊預(yù)覽區(qū)
private int intGraph; //標(biāo)志創(chuàng)建哪一個(gè)要下落的方塊
private int intNextGraph; //標(biāo)志下一個(gè)要?jiǎng)?chuàng)建的方塊,即提前顯示下落塊
private int intTotalScore = 0; //用來記錄總分?jǐn)?shù)
private boolean bCanMove = false; //標(biāo)志是否響應(yīng)鍵盤
private int intSpeed = 1; //速度等級(jí)
private Panel jMainPanel = new Panel(); //添加鍵盤監(jiān)聽的Panel
private GameAreaPanel jGamePanel; //方塊下落區(qū)域
private PreviewPanel jNextGraphPanel; //方塊預(yù)覽區(qū)域
private XYLayout xyLayout = new XYLayout(); //界面布局
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 TitledBorder titledBorder1;
private TitledBorder titledBorder4;
private TitledBorder titledBorder5;
private TitledBorder titledBorder6;
private TitledBorder titledBorder7;
private TitledBorder titledBorder8;
public MainFrame() {
try {
setTitle("俄羅斯方塊游戲");
setLocation(200, 130);
setSize(600, 400);
jbInit();
getContentPane().add(jMainPanel, "North");
getContentPane().addKeyListener(new KeyAdapter() { //主窗口添加鍵盤監(jiān)聽器
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("分?jǐn)?shù)記錄");
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("下一個(gè)圖形");
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; //產(chǎn)生隨機(jī)方塊
switch (intGraph) { //初始化產(chǎn)生的方塊
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(); //占據(jù)桌子,詳見root類
intNextGraph = ( ( (int) Math.round(Math.random() * 12345)) % 8) + 1; //產(chǎn)生下一個(gè)提前顯示的方塊
intGraph = intNextGraph;
timer = new Timer(nTime, new MyRun()); //創(chuàng)建記時(shí)器,調(diào)用MyRun
addKeyListener(new KeyAdapter() { //主窗口添加鍵盤監(jiān)聽器
public void keyPressed(KeyEvent e) {
ProcessKeyEvent(e);
}
});
}
public class MyRun
implements ActionListener { //記時(shí)器調(diào)用的監(jiān)聽器
public void actionPerformed(ActionEvent e) {
if (!bCanMove)
return;
if (!root.down()) { //將方塊下落一格,如果不能再下降了,就調(diào)用下面語句
DeleteLine(); //消行
jNextGraphPanel.PreviewGraph(intGraph);
switch (intGraph) { //產(chǎn)生新的方塊
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()) { //如果失敗,游戲結(jié)束
jGamePanel.UpdateGraph(gGameAreaTable);
GameResetGamePara();
}
else
jGamePanel.UpdateGraph(gGameAreaTable);
}
else {
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -