初始化游戏状态数据

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

初始化游戏状态数据二相关推荐

  1. [Unity] 状态机事件流程框架 (二) 设计游戏状态的保存框架,存档功能 ScriptableObject、EasySave

    前文 : ​​​​​​​[Unity] 状态机事件流程框架 (一) 本期来设计一个游戏状态的怎么在游戏中表示和存储.保存游戏状态的目的一是方便根据玩家当前的游戏进度实行各种各样的逻辑分支,二是在存档时 ...

  2. 【Visual C++】游戏开发笔记二十七 Direct3D 11入门级知识介绍

    游戏开发笔记二十七 Direct3D 11入门级知识介绍 作者:毛星云    邮箱: happylifemxy@163.com    期待着与志同道合的朋友们相互交流 上一节里我们介绍了在迈入Dire ...

  3. Unity学习笔记2 简易2D横版RPG游戏制作(二)

    十二.敌人受攻击时的闪烁和Player的生命值的修正 上一篇中,我们利用Controller2D中的IEnumerator TakenDamage接口,使得我们的Player受到攻击时会进行闪烁,我们 ...

  4. 【Visual C++】游戏开发笔记二十七 Direct3D 11入门级知识介绍

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. http://blog.csdn.net/zhmxy555/article/details/7707628 作者:毛星云 邮箱: happ ...

  5. 【Visual C++】游戏开发笔记二十六 DirectX 11各组件的介绍 第一个DirectX 11 Demo的创建

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 本系列文 ...

  6. 【Visual C++】游戏开发笔记二十六 DirectX 11各组件的介绍第一个DirectX 11 Demo的创建

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. http://blog.csdn.net/zhmxy555/article/details/7688515 作者:毛星云    邮箱: h ...

  7. 游戏制作 RPGDreamer (二)--视觉小说游戏(仙剑奇侠传)

    仙剑的模板已整理完成,游戏包含仙剑第一幕盛渔村的剧情和战斗系统. 操作流程大致如下: 1.使用模板创建游戏工程. 2.导入游戏需要用到的图形.声音.视频等素材. 3.通过素材生成游戏用到的窗口.地图, ...

  8. 关于游戏架构设计(二)

    架构设计目录二 UI架构 基类BaseWindow Control控制类 State状态接口 窗口管理类 状态管理类 角色系统 角色系统设计的框架图 角色实体类父类 IEntity 有限状态机接口En ...

  9. 【Visual C++】游戏开发笔记二十六 DirectX 11各组件的介绍第一个DirectX 11 Demo的创建...

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. http://blog.csdn.net/zhmxy555/article/details/7688515 作者:毛星云 邮箱: happ ...

  10. 游戏服务器如何修改属性,游戏服务器数据修改

    游戏服务器数据修改 内容精选 换一换 当您在升级云服务器的配置的同时,还想要将云服务器迁移到其他的AZ或Region时,您可以使用华为云的整机镜像进行迁移,迁移流程如图1所示.这里以迁移HANA数据库 ...

最新文章

  1. 第20章 使用LNMP架构部署动态网站环境
  2. 欧盟如何运用AI之力推动社会创新
  3. Java 几种showMessageDialog的表示
  4. PUSH进栈指令和POP出栈指令
  5. 对new int[]()的理解(转载)
  6. 【软件测试】黑盒测试の边界值分析法
  7. ubuntu1604安装网卡驱动 联想g510
  8. 软件生命周期的八个阶段
  9. 终于来了!Win11 预览版镜像提前出世(附 ISO 下载)
  10. 【C++】数列求和-加强版
  11. 第一P2P收购中国典当联盟发力供应链金融模式
  12. 云栖社区Markdown指南【2018版】
  13. 数智化未来5大趋势——CDEC2020中国数字智能生态大会上海站生态伙伴发展状况调查...
  14. IDEA中怎么创建xml文件
  15. node安装指定版本 (LTS 长期稳定版本,Current 最新版本)
  16. [zz]从软件工程师到IT猎头:我的一点经历和感触zt
  17. 爱奇艺“帧绮映画”上线移动端,您的“私人影院”可以随身携带了!
  18. 计算机运维考核指标,信息中心考核指标库
  19. 全国淘宝村数量已超2100个 阿里巴巴打造乡村振兴新样本
  20. 【产品经理三节课】第2章 用户分析入门

热门文章

  1. Filter和interceptor比较
  2. thinkphp框架知识点
  3. Javascript位置 body之前、后执行顺序
  4. HDOJ 1420 Prepared for New Acmer(DP)
  5. 【UVA10537】The Toll! Revisited (逆推最短路)
  6. Linux中的权限管理命令-chmod
  7. JavaScript实现字符串的contains函数
  8. 两本关于sharepoint 2010的书值得参考
  9. svg绘图工具raphael.js的使用
  10. 二扩域元素与整数的转换