男儿欲遂平生志,六经勤向窗前读。这篇文章主要讲述翻出了高考完后用C语言实现的贪吃蛇相关的知识,希望能为你提供帮助。
大家好,我是小杰。
背景
今天想起来QQ好久没有登录了,我默默的点开了我的QQ,熟练的输入账号,若有所思后输入了我的密码。密码错误?? 不慌,再试亿遍,终于登录成功了,泪目。点击了上面的微云,我看到了我的回忆与青春,看到了个压缩包,snake.zip。突然想起了我高考结束的假期自学了C语言,然后自己写了个贪吃蛇游戏 ··· ···
运行效果
可以先来看看它的运行效果,接着来以现在的眼光和水平来审视一下这个程序。
??运行视频??
程序分析
先来画个流程图,梳理一下它的流程是什么样的
文章图片
这个是我根据源码画出来的流程图,下面我们着重来分析一下几个关键点:
- 界面绘制究竟是怎么绘制的?
- 蛇是怎么存储的?
- 蛇是怎么进行移动的?
文章图片
有人可能会好奇为什么左边是两层的墙,我认为应该是当时设置错了,墙应该是在右边的,我写这篇文章的时候并没有改,要的就是拿出原来真实的程序进行分析。总体来说界面还是可以的唯一不足就是上下的间距和左右差距有点大,可以设置让上下的间距变小,这样就不会这么别扭了。
关键点二蛇是怎么存储的?
//蛇
struct SNAKE
int x;
int y;
struct SNAKE* next;
;
可以看的出蛇的身体都是由一节一节的 struct SNAKE 来组成的,而一个完整的蛇是由链表连起来的,并且是一个带头节点的单链表,这种蛇的设计简单,也很简洁,最重要的是我们只要关心蛇头就可以了,不论怎么走,身体的任何一个部位都只不过会走蛇头走过的地方,所以只有蛇头不越界不撞到身体,就没问题
关键点三蛇的移动是这个游戏里面设计最为复杂的一部分。
代码中的设计思路是:
- 首先遍历一遍蛇的每一个节点,然后把每一个* 符号 打印成。
- 根据全局蛇现在的移动方向,然后进行下一步的移动,把头节点的位置更新,紧接着所有的节点位置复制前一个节点的位置
- 判断现在的状态,是否吃到食物,是否已经撞墙了
- 正常的话就把现在蛇的所有都打印出来,进行重绘,即打印*
好了,今天就写到这儿,代码就不在这儿贴出来了,长度挺长的,翻起来不太好看,感兴趣的可以私聊向我要源码。【翻出了高考完后用C语言实现的贪吃蛇】
推荐阅读
- ASP.NET Web Forms – Button 控件简介
- Linux基础(百度扒拉时间同步的方法后,总结的4种时间同步的方法~)
- 计算机中的定点数与浮点数 浮点数用 正负位 幕数 数字部分来表示
- k8s部署-39-pod有哪几种部署方式呢(能不能回滚版本呢?带你了解。)
- #yyds干货盘点#关于服务器延迟的原因及解决方案
- 机器学习概念及决策树
- 一搭建selenium web自动化集成环境
- 服务器数据恢复IBM存储服务器硬盘坏道离线oracle数据库损坏的数据恢复案例
- kettle庖丁解牛第21篇之SQL文件输出