ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 初始化游戏状态数据二

初始化游戏状态数据二

原创 Linux操作系统 作者:broadviewbj 时间:2011-07-28 17:18:22 0 删除 编辑

初始化游戏状态数据

下面为该AbstractBoard实现3个子类。

1.矩阵排列的方块

矩阵排列的方块会填满二维数组的每个数组元素,只是把四周留空即可,该子类的代码如下。

程序清单:codes\18\Link\src\org\crazyit\link\board\impl\FullBoard.java

public class FullBoard extends AbstractBoard

{

    @Override

    protected List createPieces(GameConf config,

          Piece[][] pieces)

    {

          // 创建一个Piece集合, 该集合里面存放初始化游戏时所需的Piece对象

          List notNullPieces = new ArrayList();

          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 createPieces(GameConf config,

          Piece[][] pieces)

    {

          // 创建一个Piece集合, 该集合里面存放初始化游戏时所需的Piece对象

          List notNullPieces = new ArrayList();

          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 createPieces(GameConf config,

          Piece[][] pieces)

    {

          // 创建一个Piece集合, 该集合里面存放初始化游戏时所需的Piece对象

          List notNullPieces = new ArrayList();

          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)》一书。

图书详细信息:

1.jpg

2.jpg

3.jpg

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13164110/viewspace-703352/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-02-22

  • 博文量
    1030
  • 访问量
    1617918