250503 --- 30岁做不出俄罗斯方块很耻辱吗
上午的时候,可能由于某种原因,自己有点被情绪劫持了。
群友的阴阳怪气,冷嘲热讽,让我很不理解。
毅行
这一天,我怒走30KM。让哪些流言蜚语,见鬼去吧。
闲话终日有,不听自然无。
运动健康
水库
麦田
回家以后
晚上回来,我很快修复了bug,目前已经可以消除一行了。
代码
我觉得可能是之前写的太复杂,导致用时太久。
于是我想到《Keep It Simple, Stupid》
我为什么一定要把所有行都清掉呢,我现在既然是调试阶段,只清一行,把它都变成 AIR ,行不行?
说干就干
我去掉一些原来代码里精细的逻辑,我用最粗糙的方法重新定义了清一行的步骤。
// 如果有填满的行,进行清除和下移操作
if (filled_count > 0) {
// return filled_count;
// // 从最后一行填满的行开始,逐行清除并下移
// for (i = filled_count - 1; i >= 0; i--) {
// row_to_clear = filled_rows[i];
// // 将该行上方的所有行下移一行
// for (r = row_to_clear; r > 0; r--) {
// for (col = 0; col < WIDTH; col++) {
// map[r][col] = map[r - 1][col];
// }
// }
// // 清空最顶部的行
// for (col = 0; col < WIDTH; col++) {
// map[0][col] = AIR;
// }
// }
for(i=filled_count-1;i>=0;i--){
row_to_clear = filled_rows[i];
memcpy(map[row_to_clear],map[row_to_clear-1],WIDTH);
memset(map[row_to_clear-1],AIR,WIDTH);
}
score += filled_count;
}
演示视频
视频如下:
https://www.bilibili.com/video/BV173GdziEho/?vd_source=d4ef5efb4cdc12812bcf340b635d4e18
TODO
后面就修改一下随机数,另外把字体改成正的,再加一点游戏结束界面。这就是一个完整的小项目了。
后面可以尝试把东西集成到面包板上,这样玩起来也方便一些。