利用cocos2dx 3.2开发消灭星星(七)关于星星的算法

在前面,我们已经在GameLayer中利用随机数初始化了一个StarMatrix(星星矩阵:即所有的星星),如果还不知道怎么创建星星矩阵请回去看看

而且我们也讲了整个游戏的触摸事件的派发了。GameLayer传递到StarMatrix,再由StarMatrix处理

下面,我们讨论,StarMatrix获得触摸点之后,如果处理,还记得吗,StarMatrix其实就是对一个内置的Star*二维数组的包装。因此,我们可以换一种说法,现在StarMatrix获得了触摸点了,怎么操作Star* 二维数组?

1. 星星的连接

当你点击星星的时候,需要把与点击星星相连而且颜色一样的星星也得到,并且让他们消失,那么怎么得到一串统一颜色并且相连的星星呢

先看StarMatrix的onTouch方法(由GameLayer传过来的触摸点的入口)

void StarMatrix::onTouch(const Point& p){
	Star* s = getStarByTouch(p);
	if(s){
	genSelectedList(s);
	CCLOG("SIZE = %d",selectedList.size());
	deleteSelectedList();
	}
}

getStarByTouch是通过触摸点得到矩阵中一个星星的方法,其实也是通过一些像素与矩阵坐标的转换得到的。

Star* StarMatrix::getStarByTouch(const Point& p){
	int k = p.y/Star::STAR_HEIGHT;//这里要用K转一下int 不然得不到正确结果
	int i = ROW_NUM - 1 - k;
	int j = p.x/Star::STAR_WIDTH;
	if(i >= 0 && i < ROW_NUM && 
	   j >= 0 && j < COL_NU
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值