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

181-183 行 是否为 无意义代码


10:09秒处 181-183 行  代码做什么用的,  代码逻辑  消除第0行(最高一层 ) 为空。 意义何在?



正在回答

6 回答

你有其他联系方式吗?老师的代码没有错,这一部分的逻辑我整理很久,算是很通了,可以给你说一下。

你上面的人的答案逻辑是对的,如果你理解不来,把你发的截图中的每一个if语句/for循环语句的功能完全明白,最好能够结合游戏矩阵画图表示前后变化,你明白了

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

创心 提问者

谢谢你 ,我自己能理解的方式写出来了。
2018-01-17 回复 有任何疑惑可以回复我~
// 消行
const checkClear = () => {
    for(let i=gameData.length-1; i>=0; i--){
        if(gameData[i].every(item => item === 1)){
        // 从底部开始,遍历是否有一行全为1,是则满足消行条件,将这一行抛出,并在gameData最顶端加一个空行
        gameData = [
            [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
            ...gameData.slice(0, i),
            ...gameData.slice(i + 1)
            ]
        }
    }
}

忍不住这么写。。。

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

16-19层 有放块, 19层消行, 16层跌落到17层,此时15层为空,同样会跌落到16层,即16层变为空(数据清除)

因为最顶层(gameData[0])没有上一层了,需要手动将其设置为0,gameData[0][n] = 0

注意循环遍历的是所有行,从最底层到最顶层,并不是到有方块的那层就停止

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

为什么我的固定方法不起作用??!

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

gameData[0][n] 永远代表清除第0行的数据  ,我16-19层 有放块, 19层消行, 16层跌落到17层, 原来16层数据并没有清除, 而是清除的0层数据, 老师把这里写死了,明显是录视频多次忘了改掉,实际运行会是个变量。

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

风之承

你有其他联系方式吗?老师的代码没有错,这一部分的逻辑我整理很久,算是很通了,可以给你说一下。 你上面的人的答案逻辑是对的,如果你理解不来,把你发的截图中的每一个if语句/for循环语句的功能完全明白,最好能够结合游戏矩阵画图表示前后变化,你明白了
2018-01-15 回复 有任何疑惑可以回复我~

我给你讲一下消行的整个逻辑,就是先一个大循环,遍历所有行,如果有一行是全1,就把所有方块往下移一行,对应的是gameData[m][n] = gameData[m-1][n]这段代码,然后最高层的就要变为空,也就是置0,也就是你问的。

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

举报

0/150
提交
取消

181-183 行 是否为 无意义代码

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号