Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1488824
  • 博文数量: 465
  • 博客积分: 8915
  • 博客等级: 中将
  • 技术积分: 6365
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-30 15:05
文章分类

全部博文(465)

文章存档

2017年(33)

2016年(2)

2015年(4)

2014年(29)

2013年(71)

2012年(148)

2011年(178)

分类: IT业界

2011-07-28 17:27:07

初始化游戏状态数据

下面为该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)》一书。

图书详细信息:http://blog.chinaunix.net/space.php?uid=13164110&do=blog&id=1704751

阅读(660) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~