今天的主题是:蛇身风骚走位之一直向右。
在贪吃蛇游戏中,让蛇一直向右移动,听起来似乎是一件很简单的事情,但背后却蕴含了一系列有趣而复杂的编程逻辑。要实现这个功能,我们首先需要理解蛇的数据结构和移动原理。经过上一篇文章的阐述,我们可以了解到蛇身向右移动就是在蛇头部分加一,蛇尾部分减一从而实现向右移动,如果要实现一直向右,其实也很简单,我们可以尝试加一个循环语句,接下来我们看代码演示:
while(1){
} //这是最简单的循环语句,我们在其中加入蛇身移动函数:
while(1){
MoveSnake(); //蛇身移动函数
Gamepic(); //重新刷新地图
refresh();//ncurses自带的刷新界面函数 花式走位;
sleep(1); //我们可以吧蛇移动 的速度设置为1s当然如果觉得太慢了,也可以尝试用usleep
}
这样我们就可以得到一个一直向右移动的蛇身了,完整的main函数代码如下:
当然,还有一点值得被考虑进去,就是咱们设置的游戏界面大小只有20*20这么大,一直向右移动可能最后就看不到蛇身了。所以我们可以设置一个围墙,当蛇不想活了,去撞墙找死,就重新回到起始位置,这样就可以实现贪吃蛇游戏里面的复活机制了,是不是逐渐开始有点意思了,好接下来,我们开整代码:
看代码可以知道,我们只需要在蛇移动函数里面加一个判断语句就可以实现,当蛇头或者蛇尾(取决于你自己的设置)刚搞到达边界时,我们就直接重新画一个蛇身,回到起始位置。当然在这重新画蛇身之前我们需要进行一个清理内存的操作,否则这个游戏运行到最后会导致内存不足,清理内存操作如下所示:
在initSnake函数里面加入一个判断语句,在重新构建蛇身时, 判断head里面是否为空,如果是空的,直接进行后面的代码,若是重新复活的,里面的head肯定不为空,则去使用free去释放内存,其实很好理解,大家可以捋一捋其中的关系。将这些操作昨晚,就可以实现蛇身一直朝一个方向移动了。好了今天的内容就到这里了,一起加油哦~有看不懂的可以看一看我前面的文章~