从0到1:第一篇博客and第一次沉浸式写代码 做C语言课程设计选了最经典的扫雷项目。本来以为逻辑很简单两个棋盘、布雷、计算周围雷数、判断输赢结果从中午写到下午跟bug死磕了大约2个小时。最离谱的是我明明设置了80个雷用来检验程序运行出来数来数去都不对最后发现居然是自己手滑写错了一个字母。写这篇博客记录一下这次踩坑全过程也给后面做扫雷的同学避避坑。一、项目整体思路扫雷的核心结构其实很清晰1. 用两个二维数组一个存雷mine一个给玩家显示show2. 为了防止边缘坐标越界数组多开一圈边界3. 随机布雷保证不重复4. 点击坐标后计算周围8个格子的雷数5. 判断输赢踩雷即结束二、正常流程都没问题初始化、打印棋盘、计算雷数这些都比较顺利。周围雷数直接利用字符ASCII差值计算代码也很简洁布雷函数也按标准逻辑写的三、最崩溃的问题80个雷去哪了运行之后我人傻了设置80个雷打印雷盘一数明显不够。我开始疯狂排查- 是不是随机数重复了- 是不是初始化没做好- 是不是打印函数少打了- 是不是越界了对着代码看了一遍又一遍逻辑都没问题可雷就是少了。四、最终找到bug我多写了一个S排查到最后我终于发现问题所在我在 SetMine 里把参数 ROW 写成了 ROWS本来应该传 9结果传成了 11导致随机坐标生成到了 1~11 的范围。而我打印棋盘只打印 1~9第10、11行的雷全部“隐形”了所以数出来永远不对。就这么一个字母卡了我快一个小时。改完之后瞬间正常80个雷整整齐齐出现在棋盘上。五、总结与收获这次写扫雷真的让我印象深刻1. 编程细节真的太重要一个字母就能让程序完全跑偏2. ROW / ROWS、COL / COLS 一定要分清楚非常容易写错3. 遇到bug不要慌一步步定位大概率都是低级错误4. 调试比写代码更重要多看调用关系、参数传递虽然过程很崩溃但改完跑通的那一刻还是很有成就感。把这段经历发出来希望大家别再踩我这个坑。

本月热点