疯狂连连看之开发游戏界面组件一

开发游戏界面组件

本游戏的界面组件采用了一个自定义View:GameView,它从View基类派生而出,这个自定义View的功能就是根据游戏状态来绘制游戏界面上的全部方块。

为了开发这个GameView,本程序还提供了一个Piece类,一个Piece对象代表游戏界面上的一个方块,它除了封装方块上的图片之外,还需要封装该方块代表二维数组中的哪个元素;也需要封装它的左上角在游戏界面中XY坐标。图18.4示意了方块左上角的XY坐标的作用。

方块左上角的XY坐标可决定它的绘制位置,GameView根据这两个坐标值绘制全部方块即可。下面是该程序中Piece类的代码。

程序清单:codes\18\Link\src\org\crazyit\link\view\Piece.java

public class Piece

{

// 保存方块对象的所对应的图片

    private PieceImage p_w_picpath;

// 该方块的左上角的x坐标

    private int beginX;

// 该方块的左上角的y坐标

    private int beginY;

// 该对象在Piece[][]数组中第一维的索引值

    private int indexX;

// 该对象在Piece[][]数组中第二维的索引值

    private int indexY;

// 只设置该Piece对象在棋盘数组中的位置

public Piece(int indexX , int indexY)

{

this.indexX = indexX;

this.indexY = indexY;

}

public int getBeginX()

{

return beginX;

}

public void setBeginX(int beginX)

{

this.beginX = beginX;

}

// 下面省略了各属性的setter和getter方法

...

// 判断两个Piece上的图片是否相同

    public boolean isSameImage(Piece other)

    {

        if (p_w_picpath == null)

        {

             if (other.p_w_picpath != null)

                 return false;

        }

        // 只要Piece封装图片ID相同,即可认为两个Piece相等

        return p_w_picpath.getImageId() == other.p_w_picpath.getImageId();

    }

}

上面的Piece类中封装的PieceImage代表了该方块上的图片,但此处并未直接使用Bitmap对象来代表方块上的图片——因为我们需要使用PieceImage来封装两个信息:

Ø  Bitmap对象。

Ø  图片资源的ID。

其中Bitmap对象用于在游戏界面上绘制方块;而图片资源的ID则代表了该Piece对象的标识,当两个Piece所封装的图片资源的ID相等时,即可认为这两个Piece上的图片相同。如以上程序中粗体字代码所示。

下面是PieceImage类的代码。

程序清单:codes\18\Link\src\org\crazyit\link\view\PieceImage.java

public class PieceImage

{

private Bitmap p_w_picpath;

private int p_w_picpathId;

// 有参数的构造器

public PieceImage(Bitmap p_w_picpath, int p_w_picpathId)

{

super();

this.p_w_picpath = p_w_picpath;

this.p_w_picpathId = p_w_picpathId;

}

// 省略了各属性的setter和getter方法

...

}

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

《疯狂Android讲义(含CD光盘1张)》一书已由电子工业出版社正式出版,本书由李刚编著。

当当:

http://product.dangdang.com/product.aspx?product_id=21099097&ref=search-1-pub

卓越:

http://www.amazon.cn/%E7%96%AF%E7%8B%82Android%E8%AE%B2%E4%B9%89-%E6%9D%8E%E5%88%9A/dp/B0055BH3PY/ref=sr_1_1?ie=UTF8&qid=1309491286&sr=8-1

互动:

http://product.china-pub.com/193974

转载于:https://blog.51cto.com/bvbroadview/604246

疯狂连连看之开发游戏界面组件一相关推荐

  1. 项目开发-疯狂连连看游戏开发

    疯狂连连看游戏开发 游戏简介:疯狂连连看,是一款简单易玩的手机休闲游戏,界面布局简单,玩法简单,适合广大年龄层的用户进行休闲.放松.该游戏,应用于Android手机操作系统,Android1.6以上. ...

  2. 疯狂连连看之开发界面布局

    开发界面布局 本程序将会使用一个RelativeLayout作为整体的界面布局元素,界面布局的上面是一个自定义组件,下面是一个水平排列的LinearLayout. 程序清单:codes\18\Link ...

  3. android游戏开发组件,Android实现疯狂连连看游戏之开发游戏界面(二)

    连连看的游戏界面十分简单,大致可以分为两个区域: --游戏主界面区 --控制按钮和数据显示区 1.开发界面布局 本程序使用一个RelativeLayout作为整体的界面布局元素,界面布局上面是一个自定 ...

  4. Android疯狂连连看游戏

    今天看完了李刚老师的<疯狂Android讲义>一书中的第18章<疯狂连连看>,从而学会了如何编写一个简单的Android疯狂连连看游戏. 开发这个流行的小游戏,难度适中,而且能 ...

  5. 我的Android进阶之旅------gt;Android疯狂连连看游戏的实现之游戏效果预览(一)

    今天看完了李刚老师的<疯狂Android讲义>一书中的第18章<疯狂连连看>,从而学会了如何编写一个简单的Android疯狂连连看游戏. 开发这个流行的小游戏,难度适中,而且能 ...

  6. 疯狂ios讲义之疯狂连连看游戏简介

    <连连看>是一款广受玩家欢迎的小游戏,它具有玩法简单.耗时少等特征,尤其适合广大白领女性在办公室里休闲娱乐.图13.1显示了该游戏的游戏界面. 从图13.1可以看出,在<连连看> ...

  7. 038——VUE中组件之WEB开发中组件使用场景与定义组件的方式

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...

  8. UI组件库从1到N开发心得-组件篇

    正文 距离第一篇UI组件库文章发布已经过去3个月了,在此期间利用零零散散的时间持续更新owl-ui组件库,目前owl-ui移动端组件库已经更新3大类(基础.表单.弹出层)9种组件(Button.Tab ...

  9. 安卓开发.四大组件.activity.1

    安卓开发.四大组件.activity.1 转载于:https://www.cnblogs.com/motadou/p/3534056.html

最新文章

  1. mysql字段中去掉括号
  2. noip2010关押罪犯
  3. EasyUI DataGrid 合并单元格
  4. jquery的closest方法和parents方法的区别
  5. ArcGIS 10.0 ArcGIS 9.3.1数据生成实验--个人地理数据库
  6. SOLIDWORKS——参数化建模
  7. nssl1470-X【并查集,素数】
  8. c++ socket学习(1.2)
  9. 带有emplace开头的STL为何优于其它插入函数
  10. Android的布局
  11. 【codevs1281】Xn数列,矩阵乘法练习
  12. Linux 远程和本地的一些解决方案
  13. 计算机cmd复制粘贴指令,win7系统使用CMD命令复制和删除文件夹的方法
  14. 借贷记账思考2015.12.28
  15. java 工作流 实例_Activiti工作流的应用示例
  16. matlab中基于十字形窗口的滤波算法,×字形滤波窗口在Matlab自适应中值滤波算法中的应用...
  17. CASS删除分幅后图框内部十字丝
  18. unb计算机科学,【加拿大新布伦瑞克大学】加拿大UNB_University of New Brunswick - 加拿大大学 - 加拿大留学云...
  19. 深入理解模型视图、自定义模型
  20. 广告行业中那些趣事系列51:超牛的kaggle比赛Favorita Grocery Sales Forecasting冠军方案...

热门文章

  1. 大数据之-Hadoop三大发行版本---大数据之hadoop工作笔记0010
  2. ES6新特性_ES6生成器函数实例_第二个实例---JavaScript_ECMAScript_ES6-ES11新特性工作笔记023
  3. 终止运行线程的注意事项
  4. 打开帧率显示_2K165hz IPS屏,微星MAG274QRF-QD显示器
  5. 嵌入式电路设计(从电路到系统)
  6. 嵌入式电路设计(电路仿真)
  7. 随想录(用好自己的时间)
  8. html轮播图淡入淡出,一个简洁的Jquery效果 banner轮播(1) 淡入淡出效果
  9. jsp下拉列表java_java – JSP:下拉列表2取决于下拉列表1
  10. 关于电脑的基础知识_改装小白必看的汽车音响改装基础知识!