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;
}
}
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;
}
}