初始化游戏状态数据
下面为该AbstractBoard实现3个子类。
1.矩阵排列的方块
矩阵排列的方块会填满二维数组的每个数组元素,只是把四周留空即可,该子类的代码如下。
程序清单:codes\18\Link\src\org\crazyit\link\board\impl\FullBoard.java
public class FullBoard extends
AbstractBoard
{
@Override
protected
List<Piece> createPieces(GameConf config,
Piece[][]
pieces)
{
//
创建一个Piece集合, 该集合里面存放初始化游戏时所需的Piece对象
List<Piece>
notNullPieces = new ArrayList<Piece>();
for
(int i = 1; i < pieces.length - 1; i++)
{
for
(int j = 1; j < pieces[i].length - 1; j++)
{
//
先构造一个Piece对象, 只设置它在Piece[][]数组中的索引值
//
所需要的PieceImage由其父类负责设置
Piece
piece = new Piece(i, j);
//
添加到Piece集合中
notNullPieces.add(piece);
}
}
return
notNullPieces;
}
}
该子类初始化的游戏界面如图18.7所示。
2.竖向排列的方块
竖向排列的方块以垂直的空列分隔开,该子类的代码如下。
程序清单:codes\18\Link\src\org\crazyit\link\board\impl\VerticalBoard.
java
public class VerticalBoard extends
AbstractBoard
{
protected
List<Piece> createPieces(GameConf config,
Piece[][]
pieces)
{
//
创建一个Piece集合, 该集合里面存放初始化游戏时所需的Piece对象
List<Piece>
notNullPieces = new ArrayList<Piece>();
for
(int i = 0; i < pieces.length; i++)
{
for
(int j = 0; j < pieces[i].length; j++)
{
//
加入判断, 符合一定条件才去构造Piece对象,
并加到集合中
if (i % 2 == 0)
{
//
如果x能被2整除, 即单数列不会创建方块
//
先构造一个Piece对象, 只设置它在Piece[][]数组中的索引值
// 所需要的PieceImage由其父类负责设置
Piece piece = new Piece(i, j);
//
添加到Piece集合中
notNullPieces.add(piece);
}
}
}
return
notNullPieces;
}
}
上面的程序中粗体字代码控制了只设置i % 2 ==
0的列,也就是只设置索引为偶数的列,该子类初始化的游戏界面如图18.8所示。

3.横向排列的方块
竖向排列的方块以水平的空行分隔开,该子类的代码如下。
程序清单:codes\18\Link\src\org\crazyit\link\board\impl\HorizontalBoard.java
public class HorizontalBoard extends
AbstractBoard
{
protected
List<Piece> createPieces(GameConf config,
Piece[][]
pieces)
{
//
创建一个Piece集合, 该集合里面存放初始化游戏时所需的Piece对象
List<Piece>
notNullPieces = new ArrayList<Piece>();
for
(int i = 0; i < pieces.length; i++)
{
for
(int j = 0; j < pieces[i].length; j++)
{
//
加入判断, 符合一定条件才去构造Piece对象,
并加到集合中
if (j % 2 == 0)
{
//
如果j能被2整除, 即单数行不会创建方块
//
先构造一个Piece对象, 只设置它在Piece[][]数组中的索引值
//
所需要的PieceImage由其父类负责设置
Piece piece = new Piece(i, j);
//
添加到Piece集合中
notNullPieces.add(piece);
}
}
}
return
notNullPieces;
}
}
上面的程序中粗体字代码控制了只设置j % 2 ==
0的行,也就是只设置索引为偶数的行,该子类初始化的游戏界面如图18.9所示。
本文节选自《疯狂Android讲义(含CD光盘1张)》一书。
图书详细信息:http://www.cnblogs.com/broadview/archive/2011/07/15/2107603.html