?? gameareapanel.java
字號:
package russiagame;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class GameAreaPanel extends Panel {
private Timer timer; //記時器,用于控制下落時間間隔
private int nTime = 1000; //速度,創建記時器是使用
private Root root; //要落下的方塊的引用,即根類
private GameTable gTable; //創建一個游戲桌
private int nWhich; //標志創建哪一個要下落的方塊
private int tempnWhich; //標志下一個要創建的方塊,即提前顯示下落塊
private int nScore = 0; //每消一行加10分,用來記錄總分數
private boolean canMove = false; //標志是否響應鍵盤
private Image myImage0, myImage1; //加載兩個圖片,用來覆蓋背景和組成方塊
private boolean isRun = true; //標志是開始還是暫停,一鈕兩用
public GameAreaPanel(GameTable gTable) {
myImage0 = getToolkit().getImage("b0.jpg");
myImage1 = getToolkit().getImage("b1.jpg");
gTable.myTable = new int[gTable.x][gTable.y];
for (int i = 0; i < gTable.x; i++)
for (int j = 0; j < gTable.y; j++)
gTable.myTable[i][j] = 0;
}
public void Init() {
for (int i = 0; i < gTable.x; i++) //重新給游戲桌置0標志
for (int j = 0; j < gTable.y; j++) {
gTable.myTable[i][j] = 0;
}
repaint();
}
public void paint(Graphics g) {
for (int i = 0; i < gTable.x; i++) //根據桌子上的標記決定是否畫方塊
for (int j = 0; j < gTable.y; j++) {
if (gTable.myTable[i][j] == 1) { //有,畫藍方塊
g.drawImage(myImage1, 0 + i * (15 + 2) + 2,
0 + j * (15 + 2) + 2, this);
}
else if (gTable.myTable[i][j] == 0) { //無,畫白方塊
g.drawImage(myImage0, 0 + i * (15 + 2) + 2,
0 + j * (15 + 2) + 2, this);
}
}
}
public void actionPerformed(ActionEvent e) {
if (isRun) { //是開始
timer.start();
isRun = !isRun;
canMove = true; //可以響應鍵盤
}
else { //是暫停
timer.stop();
isRun = !isRun;
canMove = false; //不可以響應鍵盤
}
}
public void UpdateGraph(GameTable gameTable) {
this.gTable = gameTable;
this.repaint();
}
public void update(Graphics g) {
paint(g); //防止閃爍
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -