序言 很多学习了C语言的小伙伴,虽然说学完了C语言入门,但是实际能力还是停留在一个很低的水平,基本上就是套几个for循环,暴力解一下排列组合问题的水平,很多人基本上不能够独立写一个小程序,今天就给大家我很久以前做的一个简单的贪吃蛇案例 。
这次的编写控制台贪吃蛇程序对学完C语言没做过项目的小伙伴来说可能是一个不小的挑战 。
本文的贪吃蛇案例用的东西也并不是很多,游戏的实现主要是对一个二维数组按一定逻辑进行修改、变换(实际操作时,为了减少闪烁,我用的是字符串) 。这里不对编写过程进行赘述,主要说一下最基本功能的逻辑、和一些之前较少用的函数等 。
一、 基本功能逻辑 1、游戏的背景、打印
定义一个二维字符串,用“”和空格表示边界、蛇身、空白等 。打印是用for循环遍历整个字符串,并以一定频率刷新,就可以达到游戏效果 。
2、建立蛇数组
考虑到没用链表做过东西,不太熟练,我采用了数组来做蛇 。数组主要有容量有限,最长长度需要先定义(只要我定的足够长hhhh),以及很多地方需要取地址(N次打掉了”&“)等缺点 。数组存储蛇的节数、XY坐标、移动方向等参数 。主要需要注意“”占两个字节,在写坐标时很多地方要乘二 。
3、生成蛇的随机坐标
首先种随机种子,采用系统时间做种子 。定义x、y两个变量作为坐标值,用rand()函数搭配取余来获得想要的坐标值范围 。然后初始生成两三节就可以了 。
4、把蛇画到地图上
建立for循环遍历整条蛇,利用strncpy()函数将空白部分复制为“”就行了 。
5、蛇的运动
这里卡了比较久,期间去玩了玩贪吃蛇,发现蛇的运动方式不是很复杂,可以说就是蛇尾去一个,蛇头加一个 。我采用了整个蛇身向前移,蛇头单独处理的方法,这样也便于以后控制方向 。
6、擦除运动轨迹
写到上一步运行会发现蛇越来越长 。。。。就像死机了以后的鼠标光标一样 。。。。是因为虽然前一节点的属性赋给了后一个节点,但是这个节点并没有变 。所以在每次运动前把之前的蛇擦掉,方法同第四步,只是把“”换成两个空格 。
7、蛇改变方向
由于蛇运动方式的特殊性,只需要对蛇头处理 。用GetAsyncKeyState()函数读取键盘输入,并需要注意通过附加条件防止蛇掉头 。
8、生成食物
随机坐标、复制、打印 。
9、蛇吃食物长长
蛇运动到食物的地方会把食物覆盖掉,所以吃掉食物的效果不用写 。只用判断蛇头坐标和食物坐标重合,然后判断运动方向来确定在哪里加一节就行了 。然后用一个布尔值判断场上是否还有食物,来生成新的食物 。计分也可以在此处写 。
推荐阅读
- 高考选择计算机专业注意事项 需要考虑的三个方面
- 常用python编程软件 python编程用什么软件开发
- 林志玲会说几国语言
- 怎么用wordpress建中英文双语及多语言切换的网站
- 汉语言文学类专业包括哪些专业
- 表达思念心情语言短句 表达思念的句子有哪些
- 汉语是全球通用语言吗
- 9527真正含义 9527有何含义
- 语言的诞生 语言是怎样产生的
- c语言sqrt sqrt什么意思