?? mainframe.java~525~
字號:
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 + -