初始化游戏状态数据二

初始化游戏状态数据

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

1.矩阵排列的方块

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

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

public class FullBoard extendsAbstractBoard

{

    @Override

    protectedList<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由其父类负责设置

                    Piecepiece = new Piece(i, j);

                    //添加到Piece集合中

                    notNullPieces.add(piece);

               }

          }

          returnnotNullPieces;

    }

}

该子类初始化的游戏界面如图18.7所示。

 

 
2.竖向排列的方块

竖向排列的方块以垂直的空列分隔开,该子类的代码如下。

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

public class VerticalBoard extendsAbstractBoard

{

    protectedList<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);

                 }

               }

          }

          returnnotNullPieces;

    }

}

上面的程序中粗体字代码控制了只设置i % 2 ==0的列,也就是只设置索引为偶数的列,该子类初始化的游戏界面如图18.8所示。

 

 
3.横向排列的方块

竖向排列的方块以水平的空行分隔开,该子类的代码如下。

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

public class HorizontalBoard extendsAbstractBoard

{

    protectedList<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);

                 }

               }

          }

          returnnotNullPieces;

    }

}

上面的程序中粗体字代码控制了只设置j % 2 ==0的行,也就是只设置索引为偶数的行,该子类初始化的游戏界面如图18.9所示。

 

 

 

 

本文节选自《疯狂Android讲义(含CD光盘1张)》一书。

图书详细信息:http://blog.csdn.net/broadview2006/article/details/6609027

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值