用C语言写贪吃蛇笔记-2

接着上篇文章写


首先分析一下贪吃蛇游戏中的元素,继而得出与它们对应的在程序中的描述: 蛇:

基本描述:

长度,颜色,位置。

对应数据与数据类型:长度—虽然可以用坐标表示,但是这样的话,运算量将很大, 所以换算成较大的单位—节数,以固定长度的每节描述;坐标 -- 整型;颜色 -- 整型; 位 置-- X,Y坐标。

增加的描述:

蛇运动的方向,蛇的生命。

对应数据与数据类型:这些描述是为了与程序的按键的输入部分与判断游戏结束部 分相联系而设的。方向只有四个方向:上下左右。可以设置与之对应的四个整型数:

贪吃蛇的生命就只有两种情况:死或生,对应的逻辑运算符为 0 或 1 及真假。


食物:

基本描述:

颜色,位置。

对应数据与数据类型:

由于颜色设成固定的,所以不再讨论。位置— X、Y坐标。

增加的描述:

食物的存在。

对应数据与数据类型:这是为了避免重复出现食物而设置的,与绘制食物的函数有 联系。只有两个值: 0 或 1(没有食物,有食物或食物消失)

其他的元素:

墙,由于它在显示上是作为背景而存在的,所以并没有什么说明实际 的墙壁就是四条直线组成的边框,由坐标描述。

还需要的变量:键盘键入的键值(作为全局变量,整型) ;

经常要使用的循环变量;

自定义的填充图案;

说明文字的字符数组;

游戏的记分;

游戏的速度(蛇的速度) 。


蛇的不停运动的关键算法的流程图

主要模块的实现思路和算法的流程图说明:总程序是整个贪吃蛇程序的一个概括其具体

包括程序的开始,运行及结束和中间的具体细微的判断是否停止或继续进行此游戏。下

面是整个程序中极其重要的部分亦是核心部分。

关键所在——蛇不停移动的 Snakemove():

蛇的不停移动,就是蛇的下一节取代前一节的位置,在计算机中就是蛇下一节的位 置坐标变成前一节的位置坐标。在上文中,已定义蛇的位置坐标为数组类型,一组坐标 对应一节的位置, 假设有 i+1 节,由 0 到 i 节,第 i 节的坐标取第 i-1 节的坐标,第 i-1 节的坐标取第 i-2 节的坐标 ??直到第 1 节取第 0 节的坐标。而第 0 节的坐标,即蛇头 的坐标要往某个方向变化,变化量为蛇每节的长度。蛇的这种坐标轮换需要循环语句使 其继续下去。还有在游戏开始或结束时所出现的背景图或者是音频效果在此过程中运用 了函数的输入输出如 printf(),scanf() 函数等。在游戏运行中所用到的数字(成绩)累 加如函数的调用循环使用。


思路分析完

代码就静候博主更新吧!!!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏跟着阿笨一起玩NET

treeview 绑定文件夹和文件

461
来自专栏张善友的专栏

通过SmtpClient发送Exchange会议邮件

看到C#中调用Outlook API 发起会议 ,这个完全可以用SMTP方式实现的,下面我的项目中使用的代码: 对于.NET而言,从2.0开始,发邮件已经是一件...

1949
来自专栏木宛城主

曾今的代码系列——自己的分页控件+存储过程实现分页

项目里面的测试代码,仅供参考 LoginByAjax <title>Ajax登陆</title> <script src="Scripts/c...

1855
来自专栏我和未来有约会

Silverlight制作逐帧动画 v2 - part2

Silverlight制作逐帧动画 v2 - part2 在这里完善了一下算法,加入了fps的机制进去。 private string[] ...

1896
来自专栏大内老A

开发自己的Data Access Application Block[下篇]

上接:[原创] 我的ORM: 开发自己的Data Access Application Block - Part I 4. Database 下面来介绍重中之重...

2246
来自专栏james大数据架构

CSS好看的按钮

好看的按钮 <style> .btn { BORDER-RIGHT: #7b9ebd 1px solid; PADDING-RIGHT: 2px; BORDE...

2007
来自专栏Golang语言社区

GO语言 TCP传输实例

package main import ( "net" "fmt" ) var ( maxRead = 1100 msgStop = []byt...

3406
来自专栏互联网开发者交流社区

STC-单片机控制系统

1113
来自专栏技术之路

sqlserver 的事务和c#的事务

sql的事务 1 sql 2 create database model 3 go 4 use model 5 go 6 create table ...

1929
来自专栏王磊的博客

MySQL数据库工具类之——DataTable批量加入MySQL数据库(Net版)

MySQL数据库工具类之——DataTable批量加入数据库(Net版),MySqlDbHelper通用类希望能对大家有用,代码如下: using MySql....

3629

扫码关注云+社区