天津市大学软件学院软件工程专业2013届本科生
图5-9 图形模块是设计
其中图一表示为{0,0,0,0, 1,1,1,1 , 0,0,0,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,0,0 , 0,1,1,1, 0,0,0,0} 其中图四表示为{0,0,0,0, 0,1,0,1 , 0,1,1,0, 0,0,1,0} 方块的旋转是通过绘制4个方向的方块,在不同旋转角度显示不同方向的方块来完成的。所以程序要控制方块的旋转方向,只要控制显示哪副图就可以了。
本游戏是用一个三维数组int[][][] store = new int[][][];作为存储方块的数据结构来保存方块的28种状态的
数据存储模块包括游戏中关卡数据的存储和的分数据的存储。游戏每一次启动都将全部删除上次启动时所产生的数据,重新进行新的数据存储。后台运行时重新进入游戏不算做重启游戏,故数据不会重置。
工具类模块将自身的静态成员或者方法提供给游戏中的其他类使用。
25
天津市大学软件学院软件工程专业2013届本科生
第六章 游戏中各个类中实现的功能
由于在本次游戏的开发中本人对代码的注释比较详尽,故对各个类所实现的功能在代码中都有较详细的注释。
(1)游戏的左、右、下的移动功能和上的变形功能的实现; 由TlieView和TetrisView类来实现代码功能的类: 右移功能实现
public boolean moveRightOnCourt(Court court) {
Log.i(\
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
if (mTile[i][j] != 0) {
if ( !court.isSpace(mOffsetX + i + 1, mOffsetY + j) ) {
}
左移功能实现
public boolean moveLeftOnCourt(Court court) {
int i,j;
for (i = 0; i < 4; i++) { }
26
}
}
}
}
return false;
++mOffsetX; return true;
for (j = 0; j < 4; j++) { }
if (mTile[i][j] != 0) {
if (!court.isSpace(mOffsetX + i - 1, mOffsetY + j)) { }
}
return false;
天津市大学软件学院软件工程专业2013届本科生
}
mOffsetX--; return true;
下移功能实现
public boolean moveDownOnCourt(Court court) {
int i,j;
for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++) {
if (mTile[i][j] != 0) {
if(!court.isSpace(mOffsetX+i,mOffsetY+j+1)||isUnderBaseline(mOffsetY+j+1) ){
}
变化功能实现
public boolean rotateOnCourt(Court court) {
tempShape = mShape; if (tempShape % 4 > 0) { }
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
tempTile[i][j]=
27
}
}
}
}
return false;
mOffsetY++; return true;
int tempX = 0, tempY = 0; int tempShape;
int[][] tempTile = new int[4][4];
tempShape--; tempShape += 3;
} else {
天津市大学软件学院软件工程专业2013届本科生
TileStore.store[tempShape][i][];
if( court.availableForTile(tempTile,tempX,tempY) ) { }
else if (court.availableForTile(tempTile,tempX-1,tempY) )
if (canTurn) {
mShape = tempShape; mOffsetX = tempX; mOffsetY = tempY;
28
}
}
tempX = mOffsetX; tempY = mOffsetY; boolean canTurn = false;
canTurn = true;
{ { { { }
canTurn = true; tempX += 2; canTurn = true; tempX++; canTurn =true; tempX -=2; canTurn = true; tempX--;
}else if(court.availableForTile(tempTile,tempX-2,tempY) )
}else if(court.availableForTile(tempTile,tempX+1,tempY) )
}else if(court.availableForTile(tempTile,tempX+2,tempY) )
相关推荐: