?? tetrisblock.java
字號:
package game.tetris;
import javax.microedition.lcdui.*;
import java.util.Random;
public class TetrisBlock {
//各種磚塊,1-7為活動磚塊顏色,8為墻磚顏色
public static final int[] BRICK_COLORS = {
0x00FF0000, 0x0000FF00, 0x00FFFF00, 0x000000FF, 0x00FF00FF, 0x0000FFFF,
0x00C0DCC0, 0x00808080};
/**
* blockpattern的編碼規(guī)則:blockpattern表示一個下墜物體的形狀,一種下墜物的顏色是固定的。
* 對于一個下墜物,用一個三維數(shù)組表示,第一維用rot表示(旋轉(zhuǎn)值),第二維用x(也就是行),第三維用y表示(也就是列)。
* 所以 blockpattern1:田字及四種旋轉(zhuǎn)形狀
* blockpattern2:反L字及四種旋轉(zhuǎn)形狀
* blockpattern3:L字及四種旋轉(zhuǎn)形狀
* blockpattern4:1字及四種旋轉(zhuǎn)形狀
* ........................
* 第一維最重要:rot,旋轉(zhuǎn)值
*/
protected int blockpattern1[][][] = {
{
{
0, 0, 0, 0}
,
{
0, 1, 1, 0}
,
{
0, 1, 1, 0}
,
{
0, 0, 0, 0}
}
//1,0,0
, {
{
0, 0, 0, 0}
, {
0, 1, 1, 0}
, {
0, 1, 1, 0}
, {
0, 0, 0, 0}
}
, {
{
0, 0, 0, 0}
, {
0, 1, 1, 0}
, {
0, 1, 1, 0}
, {
0, 0, 0, 0}
}
, {
{
0, 0, 0, 0}
, {
0, 1, 1, 0}
, {
0, 1, 1, 0}
, {
0, 0, 0, 0}
}
};
protected int blockpattern2[][][] = {
{
{
0, 0, 1, 0}
, {
0, 0, 1, 0}
, {
0, 1, 1, 0}
, {
0, 0, 0, 0}
}
, {
{
0, 0, 0, 0}
, {
0, 1, 0, 0}
, {
0, 1, 1, 1}
, {
0, 0, 0, 0}
}
, {
{
0, 0, 0, 0}
, {
0, 1, 1, 0}
, {
0, 1, 0, 0}
, {
0, 1, 0, 0}
}
, {
{
0, 0, 0, 0}
, {
1, 1, 1, 0}
, {
0, 0, 1, 0}
, {
0, 0, 0, 0}
}
};
protected int blockpattern3[][][] = {
{
{
0, 1, 0, 0}
, {
0, 1, 0, 0}
, {
0, 1, 1, 0}
, {
0, 0, 0, 0}
}
, {
{
0, 0, 0, 0}
, {
0, 1, 1, 1}
, {
0, 1, 0, 0}
, {
0, 0, 0, 0}
}
, {
{
0, 0, 0, 0}
, {
0, 1, 1, 0}
, {
0, 0, 1, 0}
, {
0, 0, 1, 0}
}
, {
{
0, 0, 0, 0}
, {
0, 0, 1, 0}
, {
1, 1, 1, 0}
, {
0, 0, 0, 0}
}
};
protected int blockpattern4[][][] = {
{
{
0, 0, 1, 0}
, {
0, 0, 1, 0}
, {
0, 0, 1, 0}
, {
0, 0, 1, 0}
}
, {
{
0, 0, 0, 0}
, {
0, 0, 0, 0}
, {
1, 1, 1, 1}
, {
0, 0, 0, 0}
}
, {
{
0, 0, 1, 0}
, {
0, 0, 1, 0}
, {
0, 0, 1, 0}
, {
0, 0, 1, 0}
}
, {
{
0, 0, 0, 0}
, {
0, 0, 0, 0}
, {
1, 1, 1, 1}
, {
0, 0, 0, 0}
}
};
protected int blockpattern5[][][] = {
{
{
0, 0, 0, 0}
, {
1, 1, 0, 0}
, {
0, 1, 1, 0}
, {
0, 0, 0, 0}
}
, {
{
0, 0, 1, 0}
, {
0, 1, 1, 0}
, {
0, 1, 0, 0}
, {
0, 0, 0, 0}
}
, {
{
0, 0, 0, 0}
, {
1, 1, 0, 0}
, {
0, 1, 1, 0}
, {
0, 0, 0, 0}
}
, {
{
0, 0, 1, 0}
, {
0, 1, 1, 0}
, {
0, 1, 0, 0}
, {
0, 0, 0, 0}
}
};
protected int blockpattern6[][][] = {
{
{
0, 0, 0, 0}
, {
0, 1, 1, 0}
, {
1, 1, 0, 0}
, {
0, 0, 0, 0}
}
, {
{
0, 1, 0, 0}
, {
0, 1, 1, 0}
, {
0, 0, 1, 0}
, {
0, 0, 0, 0}
}
, {
{
0, 0, 0, 0}
, {
0, 1, 1, 0}
, {
1, 1, 0, 0}
, {
0, 0, 0, 0}
}
, {
{
0, 1, 0, 0}
, {
0, 1, 1, 0}
, {
0, 0, 1, 0}
, {
0, 0, 0, 0}
}
};
protected int blockpattern7[][][] =
{
{
{0, 0, 0, 0},
{1, 1, 1, 0},
{0, 1, 0, 0},
{0, 0, 0, 0}
},
{
{0, 1, 0, 0},
{1, 1, 0, 0},
{0, 1, 0, 0},
{0, 0, 0, 0}
},
{
{0, 1, 0, 0},
{1, 1, 1, 0},
{0, 0, 0, 0},
{0, 0, 0, 0}
},
{
{0, 1, 0, 0},
{0, 1, 1, 0},
{0, 1, 0, 0},
{0, 0, 0, 0}
}
};
private int blockpattern[][][]; /* 當(dāng)前墜物形狀,為以上定義的七個下墜物之一 */
private int blockNextpattern[][]; /* 下一個墜物形狀,顯示在游戲容器的右邊 */
private int x; //blockpattern左上角x坐標(biāo),x=i表示左上角距離游戲容器左上角x軸上i個小磚塊單位
private int y; //blockpattern左上角y坐標(biāo),y=i表示左上角距離游戲容器左上角y軸上i個小磚塊單位
private int oldx; //x的舊值
private int oldy; //y的舊值
private int rot; //旋轉(zhuǎn)值,0-3
private int oldrot; //旋轉(zhuǎn)舊值
private int pattern; /* 組成當(dāng)前墜物所用小磚塊id(1-7),同時也表示一種下墜物形狀 */
private int next; /* 組成下一個墜物所用小磚塊id(1-7),同時也表示一種下墜物形狀 */
private final int UNDEFINED = 99;
private TetrisMap map;
protected Random rand;
public int gamearea_x;
public int gamearea_y;
public int brick_Width;
/* 構(gòu)造,保存map,初始化blockimage,rand,next */
//把ketrisBlock中pattern,next的隨機(jī)數(shù)生成放到構(gòu)造方法中,(便于編程)
public TetrisBlock(TetrisMap map , boolean isMaster) {
this.map = map;
if(isMaster)
{
rand = new Random();
//隨機(jī)生成的pattern和next在1~7之間,8為墻
next =Math.abs(rand.nextInt()) % 7 + 1;
pattern = next;
next = Math.abs(rand.nextInt()) % 7 + 1;
}
else
{
//如果本TetrisBlock代表的是附屏,
//則當(dāng)前下墜方塊和下一個下墜方塊由遠(yuǎn)端設(shè)備決定
pattern = UNDEFINED;
next = UNDEFINED;
}
setParameter();
}
public void setPN(int pattern_2, int next_2)
{
// bug.println(" KetrisBlock_2.setPN()");
// bug.println("pattern_2 = "+ pattern_2 );
// bug.println("next_2 = " + next_2);
//
pattern = pattern_2;
next = next_2;
}
public void setParameter()
{
gamearea_x = map.gamearea_x;
gamearea_y = map.gamearea_y;
brick_Width = map.brick_Width;
}
/* 初始化 */
protected void init() {
// pattern = next;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -