下载此文档

C语言课程设计报告——贪吃蛇源程序.docx


文档分类:IT计算机 | 页数:约25页 举报非法文档有奖
1/25
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/25 下载此文档
文档列表 文档介绍
该【C语言课程设计报告——贪吃蛇源程序 】是由【碎碎念的折木】上传分享,文档一共【25】页,该文档可以免费在线阅读,需要了解更多关于【C语言课程设计报告——贪吃蛇源程序 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。课 程 设 计
〔小玩耍贪吃蛇的程序设计报告〕
设计人:刘兵飞班级:计11-1学号:21号
2023年12月28号
目 录
一:概述
1:争论背景及意义
2:设计的任务与需要学问点
3:具体完成设计内容
二:需求分析
1:功能需求
2:操作方法
三:总体设计
1:模块划分
2:数据构造设计
四:具体设计
1:主空摸块设计
2:绘制玩耍界面
3:玩耍的具体过程
4:玩耍的完毕处理
5:显示排行榜信息模块
五:程序的调试与测试
1:动画与音乐同步
2:蛇的运行
3:终止程序
六:结论七::完毕语
八:程序清单九:参考文献

本课程设计以软件工程方法为指导,承受了构造化,模块化的程序设计方法,以C语言技术为根底,使用TurboC++,对贪吃蛇玩耍进展了需求分析,总体设计,具体设计,最终完成系统的实现与测试。
争论的背景及意义
随着社会的进展,人们生活的节奏日益加快,越来越多的人参与了全球化的世界。人们不再拘泥与一小块天地,加班,出差成了现代人不行避开的公务。而此时一款可以随时随地消遣的玩耍成为了人们的需要。此次课程设计完成的贪吃蛇小玩耍,正是为了满足上述需求而设计出来的。贪吃蛇玩耍虽小,却设计诸多的学问点。通过开发贪吃蛇玩耍系统,可使读者初步了解使用软件工程的和那个发,技术和工具开发软件的过程,进一步把握构造化,模块化的程序设计方法和步骤,进一步把握总体数据构造设计,模块划分方法,把握局部变量,全局变量,构造体,共用体,数组,指针,文件等数据构造的使用方法,把握图形,声音,随机数等多种库函数的使用方法,学****动画,音乐,窗口,菜单,键盘等多项编程技术,进一步学会软件调试,测试,组装等软件测试方法,为后续课程的学****和将来实际软件开发打下坚实的根底。
设计的任务和需要的学问点
课程设计主要完成的任务
1).通过编写“贪吃蛇玩耍”程序,把握构造化,模块块化程序设计的思想,培育解决实际问题的力气。
有同步播放动画,声音效果。
设计好数组元素与蛇,食物的对应关系。
随机产生食物。
有分数统计,排行榜,分数存储等功能。
通过此次课程设计,期望使读者能更深入的理解和把握课程教学中的根本概念,培育读者应用根本技术解决实际问题的力气,从而进一步提高分析问题和解决问题的力气。
需要把握和运用的学问点
本次课程设计需要把握和运用如下的学问点:
数组的应用。
全局变量的使用。
按键处理。
构造体的应用。
图形,音乐和动画的有关学问。
随即函数的使用。
文件的根本出操作。
8)构造化,模块化的设计方法。
具体完成的设计内容
在本次课程设计中需要完成的任务有:包含命令,全局变量的定义和宏定义,函数声明等〔50行〕,主控模块〔MAIN函数,14行〕,动画,音乐播放模块〔DRAWSNOW函数,33行〕,画出玩耍开头界面模块,具体玩耍过程模块,玩耍完毕处理模块。开发中工作量约为215行源代码。

贪吃蛇玩耍是个简洁的小玩耍,能让玩耍者的身心得到消遣,从而能够更好地投入到学****或工作当中。虽然现在市面上出来这各种各样的玩耍版本,可是贪吃蛇这类的小玩耍其市场还是相当大的,由于它玩法简洁易行,不管是手机,还是小玩耍机,都能很顺当的运行。对于在外劳碌的人,不行能花费大量时间在消遣上,大型玩耍是行不通的,这样的小玩耍刚好迎合了他们的需求。
功能的需求
要开发贪吃蛇玩耍程序,首先要分析改程序应实现哪些功能。对贪吃蛇玩耍程序的功能需求可描述如下:
程序运行后显示动画,音乐,按ESC键退出玩耍界面后,左边有一个矩形区,外玩耍区域,在矩形区中有食物和贪食蛇,上方有统计分数及关数显示区域。
蛇在封闭围墙利用绿色矩形表示,围墙里随机的消灭一个食物,通过按键盘四个光标键把握蛇向上,下,左右四个方向移动,蛇头撞到食物,则食物被吃掉,蛇身体长一节,接着又消灭食物,等待蛇来吃。食物用一个点表示,并且每次食物的位置都是随机消灭的。玩耍中要使贪吃蛇尽可能的长,但是不能使贪吃蛇撞到四周的墙壁,而且蛇的身体不能撞到一起,否则玩耍完毕。玩耍中每吃掉一个食物要有积分,随着分数的增加可进入下一关,即使速度会加快。玩耍完毕时,假设分数进入前5名则重排榜并存储。显示排行榜。由于有关贪吃蛇和食物的数据较多,而且关系亲热,贪吃蛇及食物都是定义构造体数据类型,这样定义便
于操作与处理。
操作方法
进入玩耍
玩耍界面
玩耍操作
玩耍完毕
三总体设计
确定贪吃蛇玩耍体系构造,给出总体模块构造图,确定程序的主要函数及之间的调用关系,同时设计蛇与玩耍者等的数据构造。
模块划分
本程序承受构造化程序设计的方法,依据自顶向下,逐步细化的方法对要解决的问题进展逐层分解。首先画出顶层模块,即主控模块,之完成对下层模块的调用功能,即调用其他的功能模块;接着,按需求分析中的功能需求设计第一层模块,有音乐动画,图形驱动,画主界面,玩耍过程,完毕处理,退出等第6个主要功能;接着,画出其次层模块。总体模块构造如图6-1所示。






音乐


驱动


界面


过程


处理
退



记录


排序


文件



主控模块。
动画音乐模块
画主界面模块
玩耍过程模块
玩耍完毕处理模块
读取记录模块
成绩排序模块
写入文件模块
排行榜模块
退出
总体数据构造设计
设计思路:测序的关键在于表示蛇的图形及蛇的移动。用一个小局限性方块表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头业用同样的一节小矩形方块表示移动时必需从蛇可以上向前爬行,档案下有效方向键后,应先确定蛇头的位置,而后蛇的身体虽蛇头移动,图形的实现是从身体位置开头画出蛇。这时,由于未清屏的缘由,原来的蛇的位置和蛇的位置差一节蛇身,即看起来蛇多一节身体,所以将蛇的最终一节用背风光掩盖。食物的消灭与消逝意识画矩形块和掩盖矩形块。为了便于理解,定义两个构造体:食物与蛇。下面介绍贪吃蛇玩耍程序的主要数据构造。
食物与蛇的数据构造
表示食物与蛇的矩形块设计为10*10个像素单位,食物的根本数据域为它所消灭的位置,用X和Y坐标表示,则矩形块用函数RECTANGLE〔X,Y,X+10,Y+10〕或RECTANGLE
〔X,Y,X+10,Y-10〕可以画出。由于每次只消灭一个食物,所以设定YES表示是否需要消灭食物。YES=1表示没有食物或食物已经被蛇吃掉,需要画出食物。放置食物后,置YES=0。蛇的一节身体为一个矩形块,表示矩形块只需左上角点坐标〔X,Y〕。由于在玩耍过程中蛇的身体不断增长,需用数组存放每节坐标,最大设定为N=200,NODE表示当前节数。DIRECTION是保存蛇的移动方向的变量,其值可为1、2、3、4之一,分别表示右、左、上、下的方向。LIFE是表示生命的变量,LIFE=0表示蛇活着,一旦LIFE=1,一旦LIFE=1,表示蛇死,完毕玩耍。
#define N 200Struct Food
{ int x;
int y;
Int yes;
}food;
Struct Snake
{ int x[N];
Int y[N];
Int node;
Int derection;
Int life;
}snake;
排行榜中优胜者的数据构造
排行榜主要记录优胜者的姓名和成绩。为了存放排行榜信息,可定义如下的构造体类型,其中字符数组name成员存放优胜者的姓名,整型变量score成员存放优胜者的成绩。
Struct person
{char name[20];Int score;
};
其他全局变量的定义
Struct person per[5];Int score=0;
Int gamespeed=400;
符号常量的宏定义
#define
LEFT
0x4b00;
#define
RIGHT
0x4d00;
#define
DOWN
0x5000;
#defineUP0x4800#defineESC0x011b#defineFILENAME
四. 具体设计
依据总体设计的模块功能和构造,完成所担当的程序模块的算法设计。给出每个模块的具体的算法,算法分别用传统流程图和文字说明来描述。
主控模块main函数
开头
初始化图形系统
播放动画音乐
初始化图形系统
画玩耍开头界面
玩耍具体过程
玩耍完毕处理
关闭图形系统
完毕
余下流程图在下页
主函数是程序的主控模块。首先初始化图形系统,然后使用drawsnow函数播放动画和声音,接着调用init函数初始化图形系统,之后调用drawk函数画出玩耍开头画面,在调用gameplay函数,即开头了玩耍的具体过程,玩耍完毕后调用endplay函数进展玩耍完毕处理;从文件中读取记录信息,排序,显示排行榜信息,最终关闭图形系统,完毕程序。主控模块的流程图如图6-2所示。其中带有两个竖线的矩形框表示对自定义函数的调用。
绘制玩耍开头界面drawk函数
绘制玩耍界面的函数的算法流程图如图6-3所示。
主界面就是一个封闭的围墙,用两个循环语句分别在水平方向和垂直方向输出连续的宽
度和高的均为10个像素单位的距行小方块,围成封闭图形表示围墙,为了醒目,设置为淡青色,用函数setlinestyle设直线型宽度为3个像素,设置3个像素的围墙线,。最终,在界面的左上部输出玩耍程序的版本信息,在右上部输出玩耍成绩〔score〕和关(level)的表头。
玩耍具体过程gameplay函数
该函数是玩耍的核心局部。玩耍具体过程gameplay函数的大致算法流程图如图6-4所示。
下面对该算法不够具体的地方作进一步的描述。
开始
初始化
未按键
为食物
随即确定食物
质优食物标志
有食物
画食物
输出成绩和关数
输出蛇位置
确定蛇头位置
窗蛇身,蛇死
蛇撞墙
置蛇死标志蛇死
吃到物吃后处理
循环画蛇延迟10秒
除蛇尾,增节
蛇死
承受按键key
key=ESC
由按键判蛇的位置
结束
初始化
为防止食物总是消灭在一个位置上,要设置随机数发生器的种子数,产生真正的随机数。由于还没有画出食物,并设置需要食物,并设置蛇活着。初始时,蛇只有蛇头和1节蛇尾,设置这2节坐标。设定蛇开头的爬行方向左右。
随机确定食物位置
由于蛇吃到食物的推断是蛇头的坐标和食物的坐标相等,所以要确保食物消灭的位置在10的倍数位置上。先用两个带随机函数的表达式产生一个位于围墙内的x、y坐标,然后用两个while循环将两个坐标值调整到10的倍数上,这样就可以让蛇吃到。
循环确定蛇身的坐标

开 始
读排行榜记录文件
score>per[4].score
画出填充矩形界面
输出提示信息
输出空格建立输入框
余下流程图在下页
输入玩耍者的姓名
输出不够上排行榜的信息
这里的难点是表示蛇的位置并消退前一次的图形。承受的方法是每次移动的时候从最终一节开头到其次节,将前一节的坐标值赋给后一节的坐标,移动后只要把最终一节用背风光擦出即可,由于位置0到n-1节还是要消灭在画面上的。这里用一个for循环来确定蛇身的坐标。
吃到食物后的处理
蛇吃到食物后,首先将食物擦除,即用背风光画出该食物,然后给蛇的节数加1,设置需要食物标志,是玩耍成绩加10分,假设成绩到达50分的倍数,则给关数加1,并加快玩耍速度。
有按键推断蛇的方向
这是一个内嵌的嵌套的条件选择构造,依据安东上下左右键来设定蛇的移动方向。其中1=向右,2=向左,3=向上,4=向下。推断是还考虑相反的方向键无效,比方蛇正在向上爬行,按下一键方向是无效的。
玩耍的完毕处理木块ENDPLAY函数
玩耍完毕时,应当用ENDPLAY函数进展玩耍完毕处理,其算法流程图如图6-5所示
成绩赋值
记录按成绩排序
记录写入排行榜文件

C语言课程设计报告——贪吃蛇源程序 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息