为了账号安全,请及时绑定邮箱和手机立即绑定

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

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 回答

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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

MARSGGBO 提问者

但是比如说canMoveLeft判断第一个元素,如果返回true,那么就会跳出循环,那之后的岂不是就不会判断了?
2016-03-09 回复 有任何疑惑可以回复我~
#2

qq_马不停蹄 回复 MARSGGBO 提问者

这个函数就做一件事,就是判断可不可以左移,其他事情其他函数来做
2016-03-10 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信