用c语言写贪吃蛇难吗,能用c语言写出贪吃蛇大概是什么水平
私人物品的实际分享
大家好,我是小杰。
今天我想起来我已经很久没有登录QQ了。我默默地打开QQ,熟练地输入账号,若有所思地输入密码。密码错误?不要慌,再尝试一亿次,终于登录成功,泪。点开上面的魏云,看到了我的回忆和青春,看到了一个压缩包,snake.zip突然想起来高考结束后的假期我自学了C语言,然后自己写了一个吃蛇游戏.
运行效果可以先看它的运行效果,再用现在的眼光和水平来看这个节目。
运行视频
首先画一个程序分析的流程图,梳理一下它的流程是什么样子的。
这是我根据源代码画的流程图。下面我们重点分析几个关键点:
界面绘制是怎么做的?蛇是怎么储存的?蛇是如何移动的?第一点:根据下面的截图,可以看到界面其实是预先定义了一个二位数组,然后根据我们想要打印的内容。在相应二维数组的相应位置填入字符,最后遍历,打印出所有字符。所有未设置的字符都是空字符,蛇是 * ,食物是 @ 。
可能有人会奇怪为什么左边有一面两层的墙?我觉得当时设置错了,墙应该在右边。写这篇文章的时候没改。我想要的是拿出原始的真实程序进行分析。
总的来说界面还可以。唯一的缺点就是上下左右的差距有点大。你可以设置成让上下的差距小一点,这样就不会那么尴尬了。
第二点:蛇是怎么储存的?
//蛇
结构蛇
{
int x;
int y;
struct SNAKE * next
};可以看到,蛇的身体是由一段一段结构化的蛇组成的,一条完整的蛇是由一个链表连接起来的,而且是一个有前导节点的单链表。这条蛇的设计简洁明了,最重要的是我们只需要关心蛇头。无论我们怎么走,身体的任何部位都会刚好走到蛇头走过的地方,所以只要蛇头不越线撞到身体就没有问题。
关键三条蛇的移动是游戏设计中最复杂的部分。
代码中的设计思想是:
首先遍历蛇的每个节点,然后将每个“*”符号打印为“”。根据全局蛇当前的移动方向,移动到下一步,更新头部节点的位置,然后复制上一个节点的所有位置,判断当前的状态,是有没有吃到食物,还是已经撞墙。如果是正常的,打印出当前蛇的一切,重新绘制,也就是打印 * 。总的来说思路还可以,但是还有很多思路可以优化。比如可以省略第一步,只用最后一步。
好了,今天就到这里,这里就不贴代码了。挺长的,调大了也不好看。有兴趣可以私信问我要源代码。
,
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。