canMoveLeft()为什么要加for循环?还有返回return值后还会继续循环吗?

来源:3-3 交互细节

MARSGGBO

2016-03-09 16:21

function moveLeft(){
	if( canMoveLeft(board) ) //canMoveLeft()用于判断是否可以执行左移操作
	//canMoveLeft()返回true,下面开始执行左移操作
	//虽然已经确定可以移动了,但是我们还需进一步确定该移动到哪个位置
	{
		for( var i = 0;i < 4;i++)
			for( var j = 1;j < 4;j++)

	}
	
	return false;
}

function canMoveLeft(board){
	//元素是否可以左移需要满足如下情况的一种
	//1.左右元素大小相等
	//2.左边的格子为空,不含元素
	for ( var i = 0 ; i < 4 ; i++ )
		for ( var j = 1 ; j < 4 ; j++)
			if (board[i][j] != 0) 
				if (board[i][j-1] == 0 || board[i][j-1] == board[i][j])
				 	return true;
	return false;
}

代码如上。moveLeft里的if( canMoveLeft(board) )语句调用canMoveLeft(board)函数后,假如canMoveLeft(board)中的for循环第一次就返回了true,那之后的循环还会继续吗?还有moveLeft和canMoveLeft中为什么都要for循环?一直没想明白。。这不是重复了吗?

写回答 关注

3回答

  • 微蓝lran
    2016-04-17 18:45:24

    第二个for循环是为了判断有一个数字可以向做移动的话,那么要遍历一下它所在行的所有元素是否和前一个数字相等或者前一个格子是否为空,所以这里要遍历要用for,判断数字位子,这个函数主要作用就是判断是否能向左移动;第一个for循环意思也一样也是遍历但是牵扯到算法,相同那么就相加,空格那么就前进;

  • qq_马不停蹄
    2016-03-10 11:35:41

    不用判断了撒,可以左移就对了撒,左移的操作是其他函数函数操作

  • qq_马不停蹄
    2016-03-09 17:56:33

    返回true后就跳出循环了,要判断每个元素是否可以左移就要循环撒

    qq_马不停... 回复MARSGG...

    这个函数就做一件事,就是判断可不可以左移,其他事情其他函数来做

    2016-03-10 11:37:18

    共 2 条回复 >

慕课网2048私人订制

慕课网这款“2048私人订制”通过大神老的讲解学习到游戏结构的开发

70003 学习 · 588 问题

查看课程

相似问题