初始化游戏状态数据二

 

初始化游戏状态数据

下面为该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://bvbroadview.blog.51cto.com/3227029/612167

 

你可能感兴趣的:(android,职场,休闲)