***************************************转载请注明出处:http://blog.csdn.net/lttree******************************************

Ok,大家十一快乐~。

~

2048开发第二篇,有点慢了= =。

恩,这次要讲述的是  游戏界面的 布局及绘制。

之前,我们做了 主界面,做了跳转到主界面的文字button。还有退出的图片button。

这次。我们要做的就是一件事,

绘制游戏界面的网格

游戏网格原理非常easy,

就是两个LayerColor层的堆叠,

先在原来游戏界面加入一个大的LayerColor层,

然后在这个LayerColor层,加入16个小LayerColor层。

在游戏界面的init函数里进行绘制。

绘制的时候。要知道颜色设置:

Color3B 有三个元素,三个元素就是RGB。每一个值从0到255

Color4B 有四个元素,前三个和3B一样。最后一个设置的是透明度,相同0到255,0全透明,255不透明

并且,要如今游戏内的宏定义中加入 每一个格子大小。和行列数目:

#define GAME_ROWS 4
#define GAME_COLS 4
#define GAME_TILED_WIDTH 64
#define GAME_TILED_HEIGHT 64
#define GAME_TILED_BOARD_WIDTH 4

最后一个。就是格子间的 分界线 的宽度。

然后。我们先在GameScene.h中。加入一个LayerColor指针

LayerColor* colorBack;

然后,在init中,加入那个大的LayerColor层:(注意调用GAME_ROWS这些时。要包括GameDefine.h呀~)

// 初始化 游戏网格
colorBack = LayerColor::create
( Color4B(170,170,170,255),
GAME_TILED_WIDTH*GAME_COLS+GAME_TILED_BOARD_WIDTH*(GAME_COLS+1),
GAME_TILED_HEIGHT*GAME_ROWS+GAME_TILED_BOARD_WIDTH*(GAME_ROWS+1)
);
// 这个的锚点在左下角 0,0 点,所以要改锚点到中间
colorBack->ignoreAnchorPointForPosition(false);
colorBack->setAnchorPoint(Point(0.5,0.5)); colorBack->setPosition(Point(GAME_SCREEN_WIDTH/2,GAME_SCREEN_HEIGHT/2 ));
this->addChild(colorBack);

LayerColor::create 内有三个參数:——颜色(包含透明度),宽,高

为什么宽和高设置成这样呢?

——宽度 是 每一个格子宽度*格子数目+分界线宽度*(格子数目+1)

由于两边的分界线也要算上哟,

高度同宽度。也要这么计算。

然后,对于LayerColor层,它的锚点默认是在左下角的,

这个,详细能够看。我之前发表过的一篇文章->http://blog.csdn.net/lttree/article/details/39317329

所以。我们先对锚点进行开锁,然后设置成中央位置。

再进行setPosition

再次执行,我们就能够看到,游戏界面中央。出现了一块灰色的正方形,

(为什么是灰色的?——看RGB去= =。

接下来,须要加小的layercolor层啦:

// 初始化每个网格
for( int row = 0 ; row < GAME_ROWS ; ++row )
{
for( int col = 0 ; col < GAME_COLS ; ++col )
{
auto layerTiled = LayerColor::create(
Color4B(70,70,70,80),
GAME_TILED_WIDTH,
GAME_TILED_HEIGHT);
layerTiled->setPosition(
Point(GAME_TILED_WIDTH*col+GAME_TILED_BOARD_WIDTH*(col+1),
GAME_TILED_HEIGHT*row+GAME_TILED_BOARD_WIDTH*(row+1)));
colorBack->addChild(layerTiled);
}
}

恩。两层循环,一个个格子加入,

注意一下,addChild语句,这些小层是加入在  大LayerColor层中,并不是是加入在底层中的哟。

再次执行,我们能够清楚看到。这些格子咯:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHR0cmVl/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

然后,要在GameScene.h中加入一个二维数组,map

用来保存每一个格子的状况哟~

这个map是逻辑中的网格数组。

由于我们尽管画出来网格的样子,但是电脑内部,对每一个格子位置,是未定义的,

所以。我们要借助一个二维数组,能够定位每一个格子的位置,以后也能够确定格子的内容哟:

GameScene.h:(注意调用GAME_ROWS这些时,要包括GameDefine.h呀~)

int map[GAME_ROWS][GAME_COLS];

当然也要在.cpp进行初始化哟:

// 初始化  逻辑网格数组
for( int i = 0 ; i < GAME_ROWS ; ++i )
{
for( int j = 0 ; j < GAME_COLS ; ++j )
{
map[i][j] = 0;
}
}

恩,这次,先到这里。

下篇就要进行。数字块类的建立了~

本篇文章代码下载:http://pan.baidu.com/s/1pJujrDL

***************************************转载请注明出处:http://blog.csdn.net/lttree******************************************

cocos2d-x 3.2 之 2048 —— 第二篇的更多相关文章

  1. cocos2d-x 3.2 之 2048 —— 第一篇

    ***************************************转载请注明出处:http://blog.csdn.net/lttree************************** ...

  2. [转]Android开源项目第二篇——工具库篇

    本文为那些不错的Android开源项目第二篇--开发工具库篇,主要介绍常用的开发库,包括依赖注入框架.图片缓存.网络相关.数据库ORM建模.Android公共库.Android 高版本向低版本兼容.多 ...

  3. Android开源项目第二篇——工具库篇

    本文为那些不错的Android开源项目第二篇——开发工具库篇,**主要介绍常用的开发库,包括依赖注入框架.图片缓存.网络相关.数据库ORM建模.Android公共库.Android 高版本向低版本兼容 ...

  4. linux-0.11分析:boot文件 setup.s 第二篇随笔

    boot文件 setup.s 第二篇随笔 参考 [github这个博主的][ https://github.com/sunym1993/flash-linux0.11-talk ] 中断获取光标的位置 ...

  5. [ 高并发]Java高并发编程系列第二篇--线程同步

    高并发,听起来高大上的一个词汇,在身处于互联网潮的社会大趋势下,高并发赋予了更多的传奇色彩.首先,我们可以看到很多招聘中,会提到有高并发项目者优先.高并发,意味着,你的前雇主,有很大的业务层面的需求, ...

  6. 从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)

    从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www ...

  7. (转)从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)

    原文地址:  http://www.cnblogs.com/lyhabc/p/4682028.html 这一篇是从0开始搭建SQL Server AlwaysOn 的第二篇,主要讲述如何搭建故障转移集 ...

  8. 深入理解javascript对象系列第二篇——属性操作

    × 目录 [1]查询 [2]设置 [3]删除[4]继承 前面的话 对于对象来说,属性操作是绕不开的话题.类似于“增删改查”的基本操作,属性操作分为属性查询.属性设置.属性删除,还包括属性继承.本文是对 ...

  9. 前端工程师技能之photoshop巧用系列第二篇——测量篇

    × 目录 [1]测量信息 [2]实战 [3]注意事项 前面的话 前端工程师使用photoshop进行的大量工作实际上是测量.本文是photoshop巧用系列第二篇——测量篇 测量信息 在网页制作中需要 ...

随机推荐

  1. JavaScript ES 数组系列

    正文从这开始- ECMAScript 5.1 中提供的数组方法 其中部分方法,ECMAScript 3 就出现了,但是本文不再细分. ECMA-262/5.1 规范:https://www.ecma- ...

  2. sysbench_mysql

    ref http://seanlook.com/2016/03/28/mysql-sysbench/ 测试 当执行下面这个sysbench测试mysql的时候,你不知道的可能可能是: 这到底是在测试读 ...

  3. uva1584 Circular Sequence(Uva-1584)

    vj:https://vjudge.net/problem/UVA-1584 这个题讲的是一个圆环,圆环上面有一堆字母,找出字典序最小的那一圈 这个题我觉得直接用c语言的strcmp那一套感觉真是用不 ...

  4. 4.几个「不难但却很有用」的 Git 技能点

    阅读 Git 原理详解及实用指南 记录 tag:不可移动的 branch tag 是一个和 branch 非常相似的概念,它和 branch 最大的区别是:tag 不能移动.所以在很多团队中,tag ...

  5. Swoole 源码分析——Server模块之TaskWorker事件循环

    swManager_start 创建进程流程 task_worker 进程的创建可以分为三个步骤:swServer_create_task_worker 申请所需的内存.swTaskWorker_in ...

  6. Windows环境下flask+Apache+mod_wsgi部署及爬坑

    文章目录 安装python Windows 环境使用virtualenv和virtualenvwrapper 安装mod_wsgi 安装nginx 安装Apache 遇到的坑 安装Apache遇到的坑 ...

  7. hdu 5182 PM2.5

    问题描述 目前,我们用PM2.5的含量来描述空气质量的好坏.一个城市的PM2.5含量越低,它的空气质量就越好.所以我们经常按照PM2.5的含量从小到大对城市排序.一些时候某个城市的排名可能上升,但是他 ...

  8. python基础综合题----选自python二级考试

    <笑傲江湖>是金庸的重要武侠作品之一.这里给出一个<笑傲江湖>的网络版本, 文件名为“笑傲江湖-网络版.txt”.‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭ ...

  9. Beetl学习总结(2)——基本用法

    2.1. 安装 如果使用maven,使用如下坐标 <dependency> <groupId>com.ibeetl</groupId> <artifactId ...

  10. Linux学习总结(13)——在阿里云的ubuntu上部署个人服务

    作为一个IT界的人,一般都希望有一个独立的博客,或者一部独立的机器.所以我一直在找机会,拥有一台自己可以独立控制的机器,自己想干嘛干嘛.当然这在虚拟机或者自己的PC上面也可以实现,但是这跟一台一直开着 ...