事情是这样的,我上的大学里有个和微软合作的俱乐部,面向大一招新的时候我去参加了一面,面试完ACM组又去了一下game组,结果就让我写一个贪吃蛇作为二面前的任务。
这我也没写过啊,就只好搜了一下别人的源代码学习学习。我从这里找的源代码,但真正的作者是这位。
一百多行的代码看下来,确实是学到了不少。
首先是整体的算法思路。这里的方法简单直接,就是时间每过去一个特定值就前进一步,然后判断有没有撞到边界或自己或者吃到食物,如果吃到了食物就变长同时随机一个新的食物,当然食物不能长在蛇身上。
直接判断时间差是我没预料到的,我以为会有一些更加高级更加方便的方法,但是又想到之前听说正规大作里的碰撞检测是每秒30次什么的,估计也是直接看时间差了,看来这种方法应该是游戏里常用的。
然后就是实现细节了,这也是我学到的最多的东西。在这里放几个传送门,把我学到的一个一个说一下。
获取句柄
定位光标
隐藏光标
处理输入