俄罗斯方块88行 代码注释版 (三)

本文深入探讨了游戏消行逻辑中关键的消行判断与下落机制,包括向下键触发、刷新时间到触发消行判断、消行计算、自动降落间隔以及遇到障碍物的定格处理。通过详细解析,帮助开发者更好地理解并实现游戏中的消行与下落功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 if (k == 'S' || k == 's' || gt.t < 0) {//向下键触发或刷新时间到触发消行判断
            if (trsCopy(gt.tmap[gt.s][gt.st], gt.x, gt.y+1, 0))++gt.y,gt.t=50; //下面没有障碍,还可以继续下落。自动降落一格的时间间隔为gt.t*delay(),刷新一次的时间为delay()
            else {
                trsCopy(gt.tmap[gt.s][gt.st], gt.x, gt.y, 1);//下面有障碍,定格!c==1,复制模式
                for (--y; y > 0; --y) { //消行计算 --y之前y的初值是最底下一行(界外),--y由底至上
                    for (x = 0; gt.pool[x][y] > 0; ++x); //遍历直到碰壁!
                    if (gt.pool[x][y] < 0)//如果到了界外说明这行都是被填上的
                        for (k = y++; k > 0; --k) //y++只为省了一句话
                            for (x = 0; gt.pool[x][0] >= 0; ++x) //gt.pool[x][0] >= 0;这句不是用来判断x是否在游戏盘内吧。。。x<10不就好了。。。这。。。
                                gt.pool[x][k] = gt.pool[x][k-1]; //上面一行的值附给下面一行
                }
                return 1;
            }
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值