zoukankan      html  css  js  c++  java
  • 初始化游戏状态数据二

    初始化游戏状态数据

    下面为该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

  • 相关阅读:
    SQL Server的AlwaysOn错误19456和41158
    kvm上的Linux虚拟机使用virtio磁盘
    利用HAProxy代理SQL Server的AlwaysOn辅助副本
    KVM安装部署
    ola.hallengren的SQL Server维护脚本
    在单链表的第i个位置后插入一个节点(阿里+腾讯等面试题总结)
    怎么发现RAC环境中&#39;library cache pin&#39;等待事件的堵塞者(Blocker)?
    php unserialize 返回false的解决方法
    千万别让这些举动断送了你的职业前程-好文共分享
    Android开发:仿美团下拉列表菜单,帮助类,复用简单
  • 原文地址:https://www.cnblogs.com/broadview/p/2119770.html
Copyright © 2011-2022 走看看