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

后面就修改一下随机数,另外把字体改成正的,再加一点游戏结束界面。这就是一个完整的小项目了。

后面可以尝试把东西集成到面包板上,这样玩起来也方便一些。

posted @ 2025-05-03 23:07  lucky_doog  阅读(25)  评论(0)    收藏  举报