//添加到地图中
addBrickToMap();
//产生新的方块
gernerateBrick();
//清除满行
clearAllFullRow();
}
}
}
/**
* 随机产生方块
*/
public void gernerateBrick(){
//把下一个方块的类型赋值给当前方块
brickType = nextBrickType;
//生成下一个的类型
nextBrickType = Math.abs(r.nextInt() % brick.length);
//初始化数据
index = 0;
//位置
cRow = -3;
cCol = 3;
}
/**
* 判断方块是否下落到游戏区域底部
* @return true代表下落到底部
*/
private boolean reachBottom(){
int tempRow = getBottomNotEmptyRow();
//是否是最后一行
if(cRow + tempRow >= MAXROW - 1){
return true;
}else{
return false;
}
}
/**
J2ME游戏代码示例——俄罗斯方块(2)(3)
时间:2011-01-11 陈跃峰
* 添加方块到地图数据
*/
private void addBrickToMap(){
for(int i = 0;i < 4;i++){
for(int j = 0;j < 4;j++){
//判断数据未超出地图边界
if(((cCol+j) >= 0) &&
((cCol + j < MAXCOL)) &&
((cRow + i < MAXROW))){
//不添加0的数据
if(brick[brickType][index][i][j] == 1){
map[cRow + i][cCol + j] =
brick[brickType][index][i][j];
}
}
}
}
}
/**
* 方块变形
*/
public void changeShape(){
//变形到下一种形状
index++;
if(index == brick[brickType].length){
index = 0;
}
//变形以后的位置是否超出边界
if(testNewPosition()){
index--;//退回原来的形状
}
if(index < 0){
index = brick[brickType].length - 1;
}
}
/**
* 方块向左移动
* 原则是:方块左侧的第一行非空列贴近边界
*/
public void moveToLeft(){
cCol--;
//如果新的位置不可用
if(testNewPosition()){
cCol++;
}
}
/**
J2ME游戏代码示例——俄罗斯方块(2)(4)
时间:2011-01-11 陈跃峰
* 获得方块左侧的非空列的序号
* @return
*/
private int getLeftNotEmptyLine(){
for(int col = 0;col &l
|