int main() { for(int i = 0; i < 100; i++) { fork(); } return 0; }
大一写了 8000 行的 C++ 大作业,是一个 仿 DNF 的游戏,8000 行大多数都是复制粘贴,主要都是动画部分占了很多。每一帧动作都对应一个 switch case,然后……我给主角动画写了 119 个 case…… 而且每部分的代码就是放置贴图,代码重复性很高,完全可以写一个通用的动画更新函数来做……
除此之外,全都是所谓的 magic number,也就是全部用裸的数字,比如向前移动让贴图位置 + 25,而不是用变量来定义这个 25,代码的可维护性可差劲了……
为了调整动画速度,放置每一帧贴图后,还用了 Sleep(),睡眠一段时间后再放置下一个贴图。我们知道 Sleep() 会暂停程序,这就出现了 ai 逻辑执行的时候,玩家按键输入可能很久才反应一下,具体表现就是敌人都走到你面前了,你才动了一下。。。
为了解决玩家和 ai 对战的问题,我还给 ai 用上了多线程……当时我还在想为什么从贝尔实验室出来的 C++ 老师只给咱打了 90 分,而不是满分或者接近满分(现在想想可能还给高了哈哈)。我当时甚至还自豪的把这个游戏项目开源在 github 上了,大二的时候再看发现是真蠢啊!赶紧设为私有仓库了!
大一写了 8000 行的 C++ 大作业,是一个 仿 DNF 的游戏,8000 行大多数都是复制粘贴,主要都是动画部分占了很多。每一帧动作都对应一个 switch case,然后……我给主角动画写了 119 个 case…… 而且每部分的代码就是放置贴图,代码重复性很高,完全可以写一个通用的动画更新函数来做……
除此之外,全都是所谓的 magic number,也就是全部用裸的数字,比如向前移动让贴图位置 + 25,而不是用变量来定义这个 25,代码的可维护性可差劲了……
为了调整动画速度,放置每一帧贴图后,还用了 Sleep(),睡眠一段时间后再放置下一个贴图。我们知道 Sleep() 会暂停程序,这就出现了 ai 逻辑执行的时候,玩家按键输入可能很久才反应一下,具体表现就是敌人都走到你面前了,你才动了一下。。。
为了解决玩家和 ai 对战的问题,我还给 ai 用上了多线程……当时我还在想为什么从贝尔实验室出来的 C++ 老师只给咱打了 90 分,而不是满分或者接近满分(现在想想可能还给高了哈哈)。我当时甚至还自豪的把这个游戏项目开源在 github 上了,大二的时候再看发现是真蠢啊!赶紧设为私有仓库了!