当前位置:文档之家› 基于c语言的贪吃蛇游戏论文

基于c语言的贪吃蛇游戏论文

基于c语言的贪吃蛇游戏论文
基于c语言的贪吃蛇游戏论文

学校代码学号分类号密级

本科学年论文

学院、系

专业名称

年级

学生姓名

指导教师

2012年 10 月 10 日

基于C语言的贪吃蛇游戏

目录

摘要: (3)

关键词 (3)

引言: (3)

1.1课题要求 (4)

1.2课题研究工具: (4)

1.3应用环境 (4)

2.游戏程序设计 (5)

2.1程序功能: (5)

2.2设计思想 (5)

2.3.1设计流程图 (7)

2.3.2 游戏流程图 (8)

3.数据结构设计 (8)

3.1 Food结构体 (8)

3.2 Snake结构体 (9)

3.3游戏中使用的宏常量表 (10)

4.算法分析 (10)

4.1各模块简介 (11)

5.系统测试 (13)

6.总结 (13)

参考文献: (14)

摘要:近年来,随着通信技术的高速发展,移动网络和移动终端性能的不断提高与完善,以及手机、电脑的高普及率,使得人们对终端系统应用开发的需求在不端增大,贪吃蛇游戏是受广大人群喜爱的一款游戏,贪吃蛇的设计比较复杂,在这个游戏设计中,牵涉到图形界面的显示与更新、数据的收集与更新,并且在这个游戏的开发中,还要应用 c 语言的图形库函数。本文基于c语言,在Microsoft Visual C++6.0下实现需要用图形驱动文件的支持。游戏所以操作均通过键盘完成,操作简便。

关键词:函数循环结构体

引言:

贪吃蛇是一款非常经典的手机游戏,贪吃蛇的设计比较复杂,它涉及的面广、牵涉方面多,如果不好好考虑和设计,将难以成功开发出这个游戏。在这个游戏设计中,牵涉到图形界面的显示与更新、数据的收集与更新,并且在这个游戏的开发中,还要应用C语言的图形库函数。因此,在设计开发过程中,要对C语言的图形库函数有一定的了解,利用图形库函数实现一些功能。贪吃蛇之所以取这样的名字,其用意还是很明显的,贪吃蛇其实并不贪,它更像是人不断地追求的象征,就像现代的人只有不断努力向前才能得到自己想要的。而食物也是随机出现的,就像现在社会存在的机会,而我们只有找好自己的目标才能成功。虽然现在市面上存在各种各样的游戏版本,可是贪吃蛇市场还是依然存在。因为它的特殊在于吸引人更深入。随着游戏速度不断加快,其刺激也更强。可以说该游戏的优势在于它的简单易行,不论是手机,还是小游戏机。都能很快顺利的运行。对于在外忙碌的人,不可能花费大量的时间在娱乐上,大型游戏是行不通的。这样的小游戏刚好迎合他们的需求。

贪吃蛇是家喻户晓的益智类小游戏,选择这个题目是为了将自己的所学知识

加以运用,我希望通过自己的所学知识把它剖析开来,真真正正的了解它的本质和精髓。虽然我的编程能力不是很强,但是我有信心,在这次学习中我将从实践和实际的项目中提高自己的编程能力,通过游戏程序设计,提高编程兴趣与编程思路,巩固C语言中所学的知识,合理的运用资料,实现理论与实际相结合。

1.1课题要求

(1).收集资料,分析课题,分解问题,形成总体设计思路;

(2).对于设计中用到的关键函数,要学会通过查资料,弄懂其用法,要联系问题进行具体介绍;

(3).上机调试,查错,逐步分析不能正常运行的原因,确保所设计的程序正确,并且能正常运行;

(4).完成课程设计报告。

1.2课题研究工具:

本程序采用Microsoft Visual C++6.0的英文版本进行编译。VisualC++6.0是Microsoft公司推出的基于Windows操作系统的可视化C++编程工具,尽管Microsoft公司推出了.NET平台的集成开发环境,但由于其良好的界面和可操作性,加上支持标准C/C++规范,但仍有相当多的编程人员使用VisualC++6.0进行应用系统的开发。

1.3应用环境

操作系统 Windows XP Windows Vista Windows’7

2.游戏程序设计

2.1程序功能:

贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记时,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。

2.2设计思想

这个程序的关键是表示蛇的图形以及蛇的移动。用一个小矩形表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用两节表示。移动时必须从蛇头开始,所以蛇不能向相反方向移动,也就是蛇尾不能改作蛇头。如果不按任何键,蛇自行在当前方向上前移,当游戏者按了有效的方向键后,蛇头朝着指定的方向移动,一步移动一节身体,所以当按了有效的方向键后,先确定蛇头的位置,然后蛇身体随着蛇头移动,图形的实现是从蛇头的新位置开始画出蛇,这时由于没有庆平的原因,原来蛇的位置和新蛇的位置差一个单位,所以看起来社会多一节身体,所以将蛇的最后一节用背景色覆盖。食物的出现和消失也是画矩形块和覆盖矩形块。食物的出现与消失也是画矩形块和覆盖矩形块。

其实我们可以简单模拟一下贪吃蛇的游戏模式:某个世界上突然出现一条蛇,它很短,它的运动神经异常,它没法停止自己的多动症在它的世界里就只有食物,它很饿,也很贪吃;同样在不明原因的情况下,食物从天而降,可惜的是没有落到嘴边;饥饿的主人公,不管它有没有毒,也不问食物的来历,径直向食物爬去;它吃到食物啦,它超出想象的同化能力让食物很快的成为自己身体的一部分,它的身子变长啦。当它吃到第一颗食物时,上帝有给它第二颗,于是它吃了第二颗,于是又变长了,于是又有第三颗……它的身子是一直的加长,它不管自己过长身体的麻烦——转身不便,继续吃下去,现在它是直接把巴张大,好让食物有个绿色通道。但是在某天的下午,它咬到了自己,它才想起自己是一条毒

蛇,于是晕死过去(不是毒死);又或者它往食物冲锋的时候,它失去控制,撞到了墙上。

为了便于理解,定义两个结构体:食物与蛇。

整个游戏可分为四个步骤:

第一步,出现食物;

第二步,蛇不停运动;

第三步,检查蛇是撞到自己或墙壁;由第四步起游戏有两条支线(A、B):第四步A,蛇没有碰到自己或墙壁,蛇继续前进,绘制蛇的动作;

第五步,判断蛇是否吃到食物,如果蛇吃到食物,身子变长,原来的食物消失;

第六步,让玩家输入控制指令,让蛇在下一轮循环的第二步改变运动方向;

第七步,第二轮循环的第一步,重复第一轮的步骤;

第四步B,蛇碰到自己或墙壁,终止游戏。

3.数据结构设计

游戏中蛇与食物是两个主要的对象,程序中可以采用Food和Snake两个结构体来分别描述食物和蛇。

3.1 Food结构体

Food结构体用来描述食物——描述食物在屏幕上的位置,以及游戏场景中是否需要添加食物的标志信息。结构体成员x和y描述了食物在屏幕上行、列坐标的位置;成员变量addFood标志游戏场景中是否需要添加食物,addFood=0,表示游戏场景中有食物,addFood=1,则表示食物已经被贪吃蛇吃掉,游戏场景中需要添加食物。Food结构体定义如下:

struct Food

{

int x; /*食物的横坐标*/

int y; /*食物的纵坐标*/

int addFood; /*屏幕上是否有食物的标志,0:表示有食物,

1:表明游戏场景中需要添加食物*/ };

3.2 Snake结构体

Snake结构体描述了游戏中的贪吃蛇,包括贪吃蛇蛇身的节数、蛇身在每一节屏幕上的坐标位置,以及蛇的移动方向和生命状态等信息。结构体成员Joint 表示当前贪吃蛇蛇身的节数。常量MAX_JOINT表示游戏所允许的贪吃蛇蛇身的最大节数。结构体中用一个两维数组x[MAX_JOINT]和y[MAX_JOINT]保存蛇身每一节位于屏幕上的行、列坐标。结构体成员direction表示蛇当前的移动方向,约定1,2,3,4分别代表右、左、上、下4个方向,对应着程序中的四个宏观量MV_RIGHT、MV_LEFT、MV_UP、MV_DOWM。成员life描述蛇的生命状态,life=0,表示活着,life=1,表示死亡。Snake结构体定义如下:

struct Snake

{

int x[MAX_JOINTS]; /*保存蛇身每一节位于屏幕上的列坐标*/

int y[MAX_JOINTS]; /*保存蛇身每一节位于屏幕上的列坐标*/

int joint; /*蛇的节数*/

int direction; /*蛇的移动方向*/

int life; /*蛇的生命,0表示活着,1表示死亡*/

};

3.3游戏中使用的宏常量表

4.算法分析

依据所需要处理的任务要求,规划输入数据和输出结果,决定存放数据的数据结构。

C语言中数据结构集中体现在数据类型上,因此在进行C语言程序设计时,应统筹规划程序中所使用的变量,数组,指针等,以及它们的类型等。这点是很重要的,如果在此期间选择不合适的变量或者数组,将来修改就十分困难。

程序通过不断扫描游戏者键盘的输入来决定蛇的运动方向,并随时侦测蛇头位置判断蛇是否吃到食物。吃到食物则按照游戏规则增长蛇的长度,并更新分数,同时在游戏场景中随机生成新食物,如此循环;当蛇的头部撞击到游戏场景边界或者蛇身时,游戏结束。游戏者也可以通过按Esc键直接退出游戏。

主函数main()通过调用函数InitGraph()实现图形系统初始化,调用函数DrawFence()实现绘制围墙等游戏场景,调用函数GamePlay()实现具体的贪吃蛇游戏,调用函数PrScore()来显示和更新游戏者所得分数,最后通过调用函数Closegraph()结束游戏。

其中,函数GamePlay()是实现贪吃蛇游戏的关键函数。首先,随机出现新食物,设置蛇的初始状态及其运动方向,并将初始得分记零;然后,通过while 循环来检测游戏者的键盘输入,以控制蛇的运动方向。当蛇头撞到围墙或自己身体时,则调用函数GameOver()结束游戏。需注意的是,由于蛇的头部为两节,第三节蛇身不可能拐过来,因此游戏程序从蛇的第四节开始判断是否撞到自己或围墙。

4.1各模块简介

设计关键所在——蛇不停移动的:

蛇的不停移动,就是蛇的下一节取代前一节的位置,在计算机中就是蛇下一节的位置坐标变成前一节的位置坐标。在上文中,已定义蛇的位置坐标为数组类型,一组坐标对应一节的位置,假设有i+1节,由0到i节,第i节的坐标取第i-1节的坐标,第i-1节的坐标取第i-2节的坐标……直到第1节取第0节的坐标。而第0节的坐标,即蛇头的坐标要往某个方向变化,变化量为蛇每节的长度。蛇的这种坐标轮换需要循环语句使其继续下去。

1.main()主函数

主函数是程序的主流程,首先定义使用到的常数、全局变量及函数原型说明,然后初始化图形系统。

2.画面函数DrawFence()

主界面就是一个密封的围墙,用两个循环语句分别在水平方向和垂直方向输出连续的宽度和高度均为10个单位的矩形小方块,围成密闭图形,表示围墙,为了醒目,设置为淡青颜色,用函数setlinestyle(SOLID_LINE,0,THICK_WIDTH)设置线型宽度为3个像素。设置3个像素的围墙线,蛇在贴墙走的时候,会擦掉部分围墙线,使线变细,图形变得不好看,如果不想这种情况出现,则将线型宽度设置为1个像素。

3.游戏具体过程函数GamePlay()

这个函数是游戏的主要部分,难点在表示蛇的新位置并消除前一次的图形。采用的方法是每次移动的时候从最后一节开始到倒数第二节(因蛇头为两节),将前一节的坐标赋值给后一节的坐标,移动后只要把最后一节用背景色去除即可,因为新位置0到n-l节还是要出现在画面上的。然后蛇头按照方向键来更改位置。

另外,食物的随机出现要确保它的位置在10的倍数位置上,因为蛇的坐标都是以10为模的,这样的话就可以让蛇吃到,蛇吃到食物的判断是蛇头的坐标和食物的坐标相等。

其算法过程为:

(1)设置初始值。为防止食物总出现在一个位置上,要设置随机数发生器,真正产生随机数。初始时,蛇只有蛇头,设定一个开始的方向。

(2)循环执行,直到按Esc键退出。

(3)没有按键的情况下,循环执行。

如果没有食物,随机出现食物;如果有食物,则显示食物,蛇移动身体,根据蛇的方向改变坐标值,并判断蛇是否撞到了墙或自己吃了自己,如果出现这两种情况之一,则蛇死,调用游戏结束函数GameOver(),结束本次游戏,重新开始。如果蛇吃到了食物,蛇身体长一节,数组元素增加一个,身体节数、分数都进行相应的改变。在新位置画出蛇。

(4)如果有按键,则识别键值。如果按键为Esc键则结束游戏,程序运行结束;如果所按键为方向键,则根据该键改变代表蛇方向的变量direction的值,要考虑相反方向键无效。

4.游戏结束函数GameOver()

游戏结束,清除屏幕,输出分数,显示游戏结束信息。

5.PrScore()输出分数

在指定位置利用sprintf()将整数转换为字符串,用outtextxy()输出,bar()函数的应用是为了覆盖原来的值。

6.Closegraph ()图形结束

在显示游戏结束信息的画面时,按任意键关闭图形系统,程序结束。

5.系统测试

游戏测试是为了发现错误而运行程序的过程,成功的测试是发现了至今尚未发现的错误。

(1)拟定测试计划。根据游戏的总体情况,仔细分析游戏各个步骤的运行可能出现的状况,对各种情况进行汇总,然后拟定出一份具体测试步骤。

(2)初步测试。根据你定好的计划进行游戏调试,出现意外情况时及时记录。测试完后对所记录的意外情况进行分析,然后提出改进的方案,在进行修改。(3)深度测试。对游戏进行最后的修改,确认没有漏洞后再进行测试从各个方面进行一次整体的排查,直到不再出现意料之外的情况。

6.总结

当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学生来说掌握程序开发技术是十分重要的,而C语言又是最常见,功能最强大的一种高级语言,因此做好C语言课程设计是十分必要的。

这次课程设计我还了解到了开发一个软件所需的步骤,一个软件的开发需要经过可行性研究,需求分析,系统设计,编码的单元测试,调试等功能,在软件开发的每一个阶段都有它的关键之处,它们都为后面软件的开发设计打下了基础,其中的任何一个环节出错都将导致软件开发失败,它们是相辅相成的。

为了完成这次的学年论文,我查阅了许多的资料,翻阅了很多有关贪吃蛇编程的书籍。了解到贪吃蛇游戏是可基于多个平台编译的游戏,如基于Java平台、基于Linux平台等,通过C语言和一些图形化编程工具进行编写。而在我整个论文的完成过程中,我进一步的对C语言有了更充分的认识与了解,同时也加深了我对这门学科的兴趣,让我可以在枯燥的程序中找到与众不同的快乐。

回顾起此次论文撰写,自从决定题目到完成整个编程,从理论到实践,在这

么长的时间里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

参考文献:

(1)《C语言大学实用教程学习指导》,第二版,电子工业出版社

(2)赵海廷,《C语言程序设计》,05年版,北京人民邮电出版社,2005.

(3)何光明,杨静宇.《C语言程序设计与应用开发》.06年版.北京:清华大学出版社,2006.

(4)张强华. 《 C 语言程序设计》.2001年版.北京. 人民邮电出版社.2001.

c语言课程设计贪吃蛇设计

. 《C语言程序设计》课程设计 题目:贪吃蛇游戏设计 学院:信息学院 专业:网络工程 姓名:李益双 学号:1101010121 班级:信息A1111班 指导教师:罗成 职称:讲师 完成日期:2012年6月

目录 1、前言 (3) 2、摘要 (4) 3、项目背景 (5) 4、需求分析 (6) 5、概要设计 (7) 6、详细设计与测试 (8) 601 定义蛇身的数据结构 (8) 602算法设计与程序流程图 (8) 602.1贪吃蛇算法设计 (8) 602.2程序流程图 (9) 603光标移动的设计与实现 (10) 603.1显示水平围墙的实现 (10) 603.2显示分数的实现 (11) 603.3接受玩家按键信息的实现 (11) 603.4游戏结束时显示信息的实现 (11) 604 贪吃蛇游戏主干的设计 (12) 604.1游戏的初始化与加载的实现 (12) 604.2食物随机产生的实现 (13) 604.3蛇身的增长设计 (14) 604.4蛇身的显示与移动的设计实现 (15)

604.5蛇的头部与物体碰撞的而设计实现 (16) 7、编码 (17) 8、结论 (18) 9、参考文献 (19) 10、致谢 (19) 前言 C语言,是一种通用的、过程式的编程语言,广泛用于系统与应用软件的开发。具有高效、灵活、功能丰富、表达力强和较高的移植性等特点,在程序员中备受青睐。 C语言是由UNIX的研制者丹尼斯·里奇(Dennis Ritchie)于1970年由肯·汤普逊(Ken Thompson)所研制出的B语言的基础上发展和完善起来的。目前,C语言编译器普遍存在于各种不同的操作系统中,例如UNIX、MS-DOS、Micro soft Windows及Linux等。C语言的设计影响了许多后来的编程语言,例如C+ +、Objective-C、Java、C#等。 1980年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局(American National Standard Institution)为C语言订定了一套完整的国际标准语法,称为ANSI C,作为C语言的标准。1980年代至今的有关程式开发工具,一般都支持符合ANSI C的语法。

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

C 语言课程设计(小游戏贪吃蛇的程序设计报告) 设计人: 班级: 201 年月号

目录一:概述 1:研究背景及意义 2:设计的任务与需要知识点3:具体完成设计内容 二:需求分析 1:功能需求 2:操作方法 三:总体设计 1:模块划分 2:数据结构设计 四:详细设计 1:主空摸块设计 2:绘制游戏界面 3:游戏的具体过程 4:游戏的结束处理 5:显示排行榜信息模块 五:程序的调试与测试1:动画与音乐同步 2:蛇的运行 3:终止程序 六:结论 七::结束语 八:程序清单 九:参考文献

一. 概述 本课程设计以软件工程方法为指导,采用了结构化,模块化的程序设计方法,以C语言技术为基础,使用Turbo C++3、0为主要开发工具,对贪吃蛇游戏进行了需求分析,总体设计,详细设计,最终完成系统的实现与测试。 1、1 研究的背景及意义 随着社会的发展,人们生活的节奏日益加快,越来越多的人加入了全球化的世界。人们不再拘泥与一小块天地,加班,出差成了现代人不可避免的公务。而此时一款可以随时随地娱乐的游戏成为了人们的需要。此次课程设计完成的贪吃蛇小游戏,正就是为了满足上述需求而设计出来的。贪吃蛇游戏虽小,却设计诸多的知识点。通过开发贪吃蛇游戏系统,可使读者初步了解使用软件工程的与那个发,技术与工具开发软件的过程,进一步掌握结构化,模块化的程序设计方法与步骤,进一步掌握总体数据结构设计,模块划分方法,掌握局部变量,全局变量,结构体,共用体,数组,指针,文件等数据结构的使用方法,掌握图形,声音,随机数等多种库函数的使用方法,学习动画,音乐,窗口,菜单,键盘等多项编程技术,进一步学会软件调试,测试,组装等软件测试方法,为后续课程的学习与将来实际软件开发打下坚实的基础。 1、2 设计的任务与需要的知识点 1、2、1 课程设计主要完成的任务 1)、通过编写“贪吃蛇游戏”程序,掌握结构化,模块块化程序设计的思想,培养解决实际问题的能力。 2) 有同步播放动画,声音效果。 3) 设计好数组元素与蛇,食物的对应关系。 4) 随机产生食物。 5) 有分数统计,排行榜,分数存储等功能。 通过此次课程设计,希望使读者能更深入的理解与掌握课程教学中的基本概念,培养读者应用基本技术解决实际问题的能力,从而进一步提高分析问题与解决问题的能力。 1、2、2需要掌握与运用的知识点 1、2、3本次课程设计需要掌握与运用如下的知识点: 1) 数组的应用。 2) 全局变量的使用。 3) 按键处理。 4)结构体的应用。 5)图形,音乐与动画的有关知识。 6)随即函数的使用。 7)文件的基本出操作。 8) 结构化,模块化的设计方法。

C语言课程设计报告——贪吃蛇源程序之欧阳家百创编

欧阳家百创编 C 语言课程设计 欧阳家百(2021.03.07) (小游戏贪吃蛇的程序设计报告) 设计人: 班级: 201年月号

欧阳家百创编目录 一:概述 1:研究背景及意义 2:设计的任务与需要知识点 3:具体完成设计内容 二:需求分析 1:功能需求 2:操作方法 三:总体设计 1:模块划分 2:数据结构设计 四:详细设计 1:主空摸块设计 2:绘制游戏界面 3:游戏的具体过程 4:游戏的结束处理 5:显示排行榜信息模块 五:程序的调试与测试 1:动画与音乐同步 2:蛇的运行 3:终止程序 六:结论 七::结束语 八:程序清单 九:参考文献

一.概述 本课程设计以软件工程方法为指导,采用了结构化,模块化的程序设计方法,以C语言技术为基础,使用Turbo C++3.0为主要开发工具,对贪吃蛇游戏进行了需求分析,总体设计,详细设计,最终完成系统的实现与测试。 1.1 研究的背景及意义 随着社会的发展,人们生活的节奏日益加快,越来越多的人加入了全球化的世界。人们不再拘泥与一小块天地,加班,出差成了现代人不可避免的公务。而此时一款可以随时随地娱乐的游戏成为了人们的需要。此次课程设计完成的贪吃蛇小游戏,正是为了满足上述需求而设计出来的。贪吃蛇游戏虽小,却设计诸多的知识点。通过开发贪吃蛇游戏系统,可使读者初步了解使用软件工程的和那个发,技术和工具开发软件的过程,进一步掌握结构化,模块化的程序设计方法和步骤,进一步掌握总体数据结构设计,模块划分方法,掌握局部变量,全局变量,结构体,共用体,数组,指针,文件等数据结构的使用方法,掌握图形,声音,随机数等多种库函数的使用方法,学习动画,音乐,窗口,菜单,键盘等多项编程技术,进一步学会软件调试,测试,组装等软件测试方法,为后续课程的学习和将来实际软件开发打下坚实的基础。 1.2 设计的任务和需要的知识点 1.2.1 课程设计主要完成的任务 1). 通过编写“贪吃蛇游戏”程序,掌握结构化,模块块化程序设计的思想,培养解决实际问题的能力。 2) 有同步播放动画,声音效果。 3) 设计好数组元素与蛇,食物的对应关系。 4) 随机产生食物。 5) 有分数统计,排行榜,分数存储等功能。 通过此次课程设计,希望使读者能更深入的理解和掌握课程教学中的基本概念,培养读者应用基本技术解决实际问题的能力,从而进一步提高分析问题和解决问题的能力。 1.2.2需要掌握和运用的知识点 1.2.3本次课程设计需要掌握和运用如下的知识点: 1) 数组的应用。 2) 全局变量的使用。 3) 按键处理。 4)结构体的应用。 5)图形,音乐和动画的有关知识。 6)随即函数的使用。 7)文件的基本出操作。 8) 结构化,模块化的设计方法。 1.3具体完成的设计内容 在本次课程设计中需要完成的任务有:包含命令,全局变量的定义和宏定义,函数声明等(50行),主控模块(MAIN函数,14行),动画,音乐播放模块(DRAWSNOW函数,33行),画出游戏开始界面模块,具体游戏过程模块,游戏结束处理模块。开发中工作量约为215行源代码。 二 .需求分析 贪吃蛇游戏是个简单的小游戏,能让游戏者的身心得到娱乐,从而能够更好地投入到学习或工作当中。虽然现在市面上出来这各种各样的游戏版本,可是贪吃蛇这类的小游戏其市场还是相当大的,因为它玩法简单易行,不论是手机,还是小游戏机,都能很顺利的运行。对于在外忙碌的人,不可能花费大量时间在娱乐上,大型游戏是行不通的,这样的小游

C语言贪吃蛇

------------ 大学 C语言程序设计课程设计(论文)题目:贪吃蛇 院(系): 专业班级: 学号: 学生姓名: 指导教师: 教师职称: 起止时间:

课程设计(报告)任务及评语 院(系):教研室: 学号学生姓名专业班级 程序设计 (报告) 题目 贪吃蛇 程序设计(报告)任务 程序设计的任务与要求: (1)掌握C语言编程的基础知识。 (2)较熟练地编写C语言应用程序。 (3)了解C语言的常用标准函数、编程技巧、异常处理。 (5)联系已学过的内容,巩固所学的理论,增强独立工作能力。 (6)通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。 (7)通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。 课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。正确地完成上述内容,记录实习日记,规范完整地撰写出课程设计报告。 指 导 教 师 评 语 及 成 绩 成绩:指导教师签字: 2011年 1 月 4 日

目录 第1章 C语言课程设计的实训目的与要求 (1) 1.1 C语言课程设计目的 (1) 1.2 C语言课程设计的实验环境 (1) 1.3 C语言课程设计的预备知识 (1) 1.4 C语言课程设计要求 (1) 第2章 C语言课程设计内容 (2) 2.1程序功能介绍 (2) 2.2程序整体设计说明 (2) 2.2.1设计思路 (2) 2.2.2数据结构设计及用法说明 (3) 2.2.4各模块的功能及程序说明 (7) 2.2.5程序结果 (8) 2.3程序源代码及注释 (10) 第3章 C语言课程设计总结 (17) 参考资料.. (20)

c语言程序贪吃蛇课程设计报告范文

高级语言程序设计 课程设计报告 Experiment Designing reporter 课程名称:高级语言程序设计 英文名称 : C Program Experiment Designing 专业:自动化 111 学号: XXX 姓名: XXX 指导教师: XXX 日期: 2012 年 6月 17日至 2011 年6 月 20 日 山东工商学院信电学院

山东工商学院信电学院自动111班第一组“贪吃蛇课程设计报告“一:课程设计内容 程序功能介绍 贪吃蛇游戏是一个经典小游戏,深受众多玩家喜爱,其规则是:一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。此游戏不仅能锻炼人的思维敏捷性,而且还可以提高玩家的逻辑判断能力。 设计思路 我们小组称设计本次课题——贪吃蛇的思路为“贪快速上手贪吃蛇三步曲”: 第一步: 寻找到一个真正可以运行的已用C编好的贪吃蛇。 因为我们毕竟从未看到过用C编游戏的程序,让我们两手一抹黑的开始编写是有一定的困难的,如果我们自己找一个已经设计好的程序,以此为跳板实现我们想要达到的效果,那么肯定是高效的。所以我们组统一决定,去寻找一个可以运行的C编译的贪吃蛇。 第二步: 运行游戏并了解游戏程序。 我们认为,只有你运行并了解一个游戏,才能知道游戏里需要什么样的改进和创新,如果你自己本身就没玩过这个游戏,那么你就是再有技术,你也永远改进和改编不了一个游戏,因为你根本不知道你在干什么。 同样重要的是了解游戏程序。因为只有看懂了程序,才能实现对他的改编,才能游刃有余。 第三步: 寻找模块并分类,而后进行改编。 寻找到你想要改变的游戏内容的控制模块,比如,我想要增加一堵墙,那 第一页共十六页 自动化 111

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

C 语言课程设计 (小游戏贪吃蛇的程序设计报告)

设计人: 班级: 201 年月号

目录一:概述 1:研究背景及意义 2:设计的任务与需要知识点 3:具体完成设计内容 二:需求分析 1:功能需求 2:操作方法 三:总体设计 1:模块划分 2:数据结构设计 四:详细设计 1:主空摸块设计 2:绘制游戏界面 3:游戏的具体过程 4:游戏的结束处理 5:显示排行榜信息模块 五:程序的调试与测试 1:动画与音乐同步 2:蛇的运行 3:终止程序 六:结论 七::结束语 八:程序清单 九:参考文献

一.概述 本课程设计以软件工程方法为指导,采用了结构化,模块化的程序设计方法,以C 语言技术为基础,使用Turbo C++3.0为主要开发工具,对贪吃蛇游戏进行了需求分析,总体设计,详细设计,最终完成系统的实现与测试。 1.1 研究的背景及意义 随着社会的发展,人们生活的节奏日益加快,越来越多的人加入了全球化的世界。人们不再拘泥与一小块天地,加班,出差成了现代人不可避免的公务。而此时一款可以随时随地娱乐的游戏成为了人们的需要。此次课程设计完成的贪吃蛇小游戏,正是为了满足上述需求而设计出来的。贪吃蛇游戏虽小,却设计诸多的知识点。通过开发贪吃蛇游戏系统,可使读者初步了解使用软件工程的和那个发,技术和工具开发软件的过程,进一步掌握结构化,模块化的程序设计方法和步骤,进一步掌握总体数据结构设计,模块划分方法,掌握局部变量,全局变量,结构体,共用体,数组,指针,文件等数据结构的使用方法,掌握图形,声音,随机数等多种库函数的使用方法,学习动画,音乐,窗口,菜单,键盘等多项编程技术,进一步学会软件调试,测试,组装等软件测试方法,为后续课程的学习和将来实际软件开发打下坚实的基础。 1.2 设计的任务和需要的知识点 1.2.1 课程设计主要完成的任务 1). 通过编写“贪吃蛇游戏”程序,掌握结构化,模块块化程序设计的思想,培养解决实际问题的能力。 2) 有同步播放动画,声音效果。 3) 设计好数组元素与蛇,食物的对应关系。 4) 随机产生食物。 5) 有分数统计,排行榜,分数存储等功能。 通过此次课程设计,希望使读者能更深入的理解和掌握课程教学中的基本概念,培养读者应用基本技术解决实际问题的能力,从而进一步提高分析问题和解决问题的能力。 1.2.2需要掌握和运用的知识点 1.2.3本次课程设计需要掌握和运用如下的知识点: 1) 数组的应用。 2) 全局变量的使用。 3) 按键处理。 4)结构体的应用。 5)图形,音乐和动画的有关知识。 6)随即函数的使用。 7)文件的基本出操作。

C语言贪吃蛇实验报告

C语言程序设计报告 题目:贪吃蛇游戏的程序设计 院系:西语学院英语教育6班 : 学号:

1.1题目: 设计贪吃蛇小游戏 1.2题目的要求: 玩家通过键盘控制蛇在地图上寻找食物,蛇吃下食物,可以加分,碰到四壁游戏结束。 1.3设计的步骤: ●分析设计题目的要求,即需求分析。 ●总体设计,确定所需模块及模块间调用关系,定义系统中使用的数据类型。 ●详细设计,确定每个模块的功能,绘制主要函数的流程图。 ●编写程序代码,调试程序使其能正确运行。要求书写规范,注意采用缩进格式。函数 名、变量名要见文晓意,注释要简而不失、详而不缀。设计完成的软件要便于操作和使用。 ●程序测试,发现程序中存在的错误并改正。 ●完成报告。 2详细设计说明 2.1课程设计的要求: 通过游戏程序设计,提高编程兴趣与编程思路,巩固C语言中所学的知识,合理的运用资料,实现理论与实际相结合。 ●收集资料,分析课题,分解问题,形成总体设计思路;

●对于设计中用到的关键函数,要学会通过查资料,弄懂其用法,要联系问题进行具 体介绍; ●上机调试,查错,逐步分析不能正常运行的原因,确保所设计的程序正确,并且能 正常运行; ●完成课程设计报告。 2.2程序的功能: 贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。 2.3课程设计的思想: 程序关键在于表示蛇的图形及蛇的移动。用一个小圆点来表示蛇的一节身体,身体每长一节,增加一个圆点,蛇头用四节来表示。移动时必须从蛇头开始,所以蛇不能向相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,如果按与蛇运动方向相反的方向键,此游戏就会暂停,再按想前的方向键才能继续游戏,但按下有效方向键后,蛇头朝着该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇的身体随蛇头移动,图形的实现是从蛇头新位置开始画出蛇,这时,由于未清屏的原因,原来的蛇的位置和新蛇的位置差一个单位,所以看起来蛇多一节身体,所以将蛇的最后一节用背景色覆盖。食物的出现与消失也是画一个圆点和覆盖原来的圆点。为了便于理解,定义两个结构体:食物与蛇。

贪吃蛇C语言课程设计报告

贪吃蛇游戏设计 姓名:张力 学号: 10020323完成日期:月日

一、设计目的 贪吃蛇游戏程序功能的实现主要是建立在二维数组和图形界面的应用上,通过编写游戏程序能够熟悉掌握相关数组和图形函数的运用,提高编程水平,增加编程的兴趣 二、总体设计 主函数 ↓ 图形驱动I n i t画界面D r a w K游戏具体过程G a m e P l a y 图形结束C l o s e ↓ 游戏结束G a m e O v e r输出成绩P r S c o r e 三、详细设计(项目成员及分工、模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等) ①主函数m a i n(): 定义使用的常数,全局变量及函数原型说明,并调用I n i t()函数初始化图形系统;然后调用D r a w K()函数画界面,调用G a m e P l a y()函数实现游戏的具体过程,游戏结束后调用C l o s e()函数关闭图形系统结束程序。 ②画界面函数D r a w K(): 主界面是一个密封的围墙,用两个循环语句分别在水平方向和垂直方向输出连续的宽度和高度均为10个单位的矩形小方块,设置成淡青色,背景颜色为黑色。 ③游戏具体过程函数G a m e P l a y(): 算法过程: a.设置初始值。为防止食物出现在一个位置上,要设置随机数发生器,真正产生随机数。初始时,蛇只有蛇头,设定一个开始方向; b.循环执行,直到按E s c键退出; c.没有按键的情况下,循环执行。 如果没有食物,随机出现食物;食物的随机出现要确保它的位置在10的倍数位置上,因为蛇的坐标都是以10为模的;如果有食物,则显示食物,蛇

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

课程设计(小游戏贪吃蛇的程序设计报告) 设计人:刘兵飞 班级:计11-1 学号:21号 2011年12月28号

目录一:概述 1:研究背景及意义 2:设计的任务与需要知识点3:具体完成设计内容 二:需求分析 1:功能需求 2:操作方法 三:总体设计 1:模块划分 2:数据结构设计 四:详细设计 1:主空摸块设计 2:绘制游戏界面 3:游戏的具体过程 4:游戏的结束处理 5:显示排行榜信息模块 五:程序的调试与测试1:动画与音乐同步 2:蛇的运行 3:终止程序 六:结论 七::结束语 八:程序清单 九:参考文献

一.概述 本课程设计以软件工程方法为指导,采用了结构化,模块化的程序设计方法,以C语言技术为基础,使用Turbo C++3.0为主要开发工具,对贪吃蛇游戏进行了需求分析,总体设计,详细设计,最终完成系统的实现与测试。 1.1 研究的背景及意义 随着社会的发展,人们生活的节奏日益加快,越来越多的人加入了全球化的世界。人们不再拘泥与一小块天地,加班,出差成了现代人不可避免的公务。而此时一款可以随时随地娱乐的游戏成为了人们的需要。此次课程设计完成的贪吃蛇小游戏,正是为了满足上述需求而设计出来的。贪吃蛇游戏虽小,却设计诸多的知识点。通过开发贪吃蛇游戏系统,可使读者初步了解使用软件工程的和那个发,技术和工具开发软件的过程,进一步掌握结构化,模块化的程序设计方法和步骤,进一步掌握总体数据结构设计,模块划分方法,掌握局部变量,全局变量,结构体,共用体,数组,指针,文件等数据结构的使用方法,掌握图形,声音,随机数等多种库函数的使用方法,学习动画,音乐,窗口,菜单,键盘等多项编程技术,进一步学会软件调试,测试,组装等软件测试方法,为后续课程的学习和将来实际软件开发打下坚实的基础。 1.2 设计的任务和需要的知识点 1.2.1 课程设计主要完成的任务 1). 通过编写“贪吃蛇游戏”程序,掌握结构化,模块块化程序设计的思想,培养解决实际问题的能力。 2) 有同步播放动画,声音效果。 3) 设计好数组元素与蛇,食物的对应关系。 4) 随机产生食物。 5) 有分数统计,排行榜,分数存储等功能。 通过此次课程设计,希望使读者能更深入的理解和掌握课程教学中的基本概念,培养读者应用基本技术解决实际问题的能力,从而进一步提高分析问题和解决问题的能力。 1.2.2需要掌握和运用的知识点 1.2.3本次课程设计需要掌握和运用如下的知识点: 1) 数组的应用。 2) 全局变量的使用。 3) 按键处理。 4)结构体的应用。 5)图形,音乐和动画的有关知识。 6)随即函数的使用。 7)文件的基本出操作。

C语言课程设计参考题目及写作要求

C语言课程设计参考设计题目 1、学生信息管理 (1)问题描述 学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一学生信息管理系统,使之能提供以下功能: ●系统以菜单方式工作 ●学生信息录入功能(学生信息用文件保存)---输入 ●学生信息浏览功能——输出 ●查询、排序功能——算法 1、按学号查询 2、按姓名查询 ●学生信息的删除与修改(可选项) (2)功能要求 ●界面简单明了; ●有一定的容错能力,比如输入的成绩不在0~100之间,就提示不合法,要求重新 输入; ●最好用链表的方式实现。 (3)算法分析 首先,一个学生包括这么多的属性,应该考虑定义一个结构,其次,我们应该考虑数据的存储形式:是定义一个数组来存储,还是定义一个链表呢?在这里假如我们以数组的方式来存储,当然可以,但是我们知道,假如我们定义一个数组的话,我们首先必须知道学生人数大概是多少,以便我们确定数组的大小,但是题目中没有给出,而且题目要求中有大量的删除、插入操作,所以用链表的方式比较方便。 对于菜单的实现,其实也比较简单,首先我们用printf语句把程序的功能列出来,然后等待用户输入而执行不同的函数,执行完了一个功能后又回到菜单。文件的读写操作大家参照书中的有关文件的章节。 2、学生综合测评系统 每个学生的信息为:学号、姓名、性别、家庭住址、联系电话、语文、数学、外语三门单科成绩、考试平均成绩、考试名次、同学互评分、品德成绩、任课教师评分、综合测评总分、综合测评名次。考试平均成绩、同学互评分、品德成绩、任课教师评分分别占综合测评总分的60%,10%,10%,20%。 A、学生信息处理 (1) 输入学生信息、学号、姓名、性别、家庭住址、联系电话,按学号以小到大的顺序存入文件中。 提示:学生信息可先输入到数组中,排序后可写到文件中。 (2) 插入(修改)同学信息: 提示:先输入将插入的同学信息,然后再打开源文件并建立新文件,把源文件和输入的信息合并到新文件中(保持按学号有序)若存在该同学则将新记录内容替换源内容, (3) 删除同学信息: 提示:输入将删除同学号,读出该同学信息,要求对此进行确认,以决定是否删除将删

课程名称C语言课程设计

课程名称C语言课 程设计

北京化工大学北方学院 课程设计报告 课程名称 C语言课程设计 设计题目贪吃蛇游戏 专业、班级信工0902 学号 090 57 姓名苏灿 指导教师邵兰洁 设计时间 9月29日— 10月11日 年 10月 11 日1.设计目的

本课程设计的目的就是要经过一次集中的强化训练,使学生能及时巩固已学的知识,补充未学的但又必要的内容。进行课程设计目的在于加深对程序设计基础中基础理论和基本知识的理解,促进理论与实践的结合,进一步提高程序设计的能力。具体目的如下: 1.使学生更深入地理解和掌握该课程中的有关基本概念,程序设计思想和方法。 2.培养学生综合运用所学知识独立完成课题的能力。 3.培养学生勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。 4.提高学生对工作认真负责、一丝不苟,对同学团结友爱,协作攻关的基本素质。 5.培养学生从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。 6.对学生掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表示能力进行考核。 2.设计题目及要求 【1】设计题目贪吃蛇游戏 【2】要求

实现如下功能: 贪吃蛇按一个方向运行 判短是否撞到自己 是否撞墙 游戏结束 退出 【3】本程序最大优点是简单易行 综合应用数组、指针、结构体、文件等,对该设计题目进行设计和实现。 一、正文 1.计算法分析设 1.1 模块调用层次图 主函数 ↓ 图形驱动Init 画界面DrawK 游戏具体过程GamePlay 图形结束Close

完整版C语言贪吃蛇设计思路和代码详解

完整版C语言贪吃蛇设计思路和代码详解到了本章,你已经学完了大部分C语言的基础知识,详细讲解贪吃蛇代码的条件就具备了。 本教程教你编写的贪吃蛇不依赖TC环境,不依赖任何第三方库,可以在VC 6.0、VS等常见IDE中编译通过,请看下图: 更多效果图请查看:游戏初始化、游戏进行中、游戏结束。 请大家先把贪吃蛇的源码下载下来浏览一下,我们再具体分析,这样将会有更好的效果。 贪吃蛇源代码下载:提取密码:81qm 贪吃蛇设计思路 上图中的红色空心方框(?)表示边框,是贪吃蛇的边界,贪吃蛇不能碰到它,否则就“死掉”,游戏结束。绿色实心方框(?)表示贪吃蛇的活动范围,贪吃蛇可以自由移动,食物(苹果)也会随机出现在这个区域。我们不妨将贪吃蛇的活动范围称为“贪吃蛇地图”,而加上边框就称为“全局地图”。 我们需要记录地图中每一个节点的信息,包括: 位置:也就是第几行几列; 类型:这个节点出现的是贪吃蛇、食物、边框,还是什么都没有(绿色的背景)。 索引:也就是数组下标,稍后会说明是什么意思。 所以需要定义一个结构体二维数组: struct{ char type; int index;

}globalMap[MAXWIDTH][MAXHEIGHT]; 用一维下标和二维下标表示位置;用 type 表示类型,不同的类型用不同的数字代表;用 index 表示索引。 直观上讲,应该将 type 定义为int类型,不过int占用四个字节,而节点类型的取值范围非常有限,一个字节就足够了,所以为了节省内存才定义为char类型。 同时,再建立一个足够大的一维数组,让贪吃蛇在数组内活动: struct{ int x; int y; } snakeMap[ (MAXWIDTH-2)*(MAXHEIGHT-2) ] x、y 表示行和列,也就是 globalMap 数组的两个下标。globalMap 数组中的索引 index 就是 snakeMap 数组的下标。 globalMap 表示了所有节点的信息,而 snakeMap 只表示了贪吃蛇的活动区域。通过 snakeMap 可以定位 globalMap 中的元素,反过来通过 globalMap 也可以找到 snakeMap 中的元素。请看下图: 图1:globalMap 和 snakeMap 的初始对应关系 贪吃蛇向左移动时,headerIndex 指向 404,tailIndex指向 406。 为什么设计的这么晦涩和复杂呢,因为这样设计有以下几个好 处: 贪吃蛇移动时不用处理所有节点,只要添加蛇头、删除蛇尾、重建 globalMap 和 snakeMap 的对应关系就可以; 随机生成食物一次就可以成功,不用担心食物会占用边框或贪吃蛇的位置; 贪吃蛇移动时,不用遍历数组就可以知道是否与自身相撞。

c语言贪吃蛇课程设计报告

c语言贪吃蛇课程设计报 告 Revised by Liu Jing on January 12, 2021

C语言课程设计报告 贪 吃 蛇 专业 学生姓名 班级 学号 完成日期 一、游戏规则需求 1、在打开程序后,出现选择界面,里面包含难度选择,其中难度选择能够使程序 出现相应的游戏难度。 2、开始游戏后,W A S D键控制贪吃蛇的移动方向。 3、当贪吃蛇向一个方向移动时,不能立刻向反方向移动。 4、贪吃蛇撞到的自己的身体或者撞到墙时,游戏结束,并输出“GAME OVER!”。 5、贪吃蛇吃到一个食物后,出现白色闪烁一次,身体随之增加一个单位长度。 二、所需数据结构分析 1、所需函数模块 void begin(); //登陆界面

void start(); //鼠标移动事件 void init(); // 初始化游戏 void setfoodcrd(); // 设置食物要出现的坐标 void showfood(); // 在相应的坐标画出食物 void snakemove(); // 移动蛇,实际就是改变蛇各节的坐标void judgeslod(); // 判断蛇是否撞墙或者撞到自己 void judgesef(); // 判断蛇是否吃到食物了 void showsnake(); // 在屏幕上画出蛇 void changeskdir(); // 接受用户输入,改变蛇的前进方向 void gameover(); // 游戏结束 2、蛇及食物数据结构 typedef struct // 定义一个结构体表示坐标 { int x; int y; }COOR; struct FOOD // 定义结构体,来存储食物的相关信息 {COOR crd; // 食物出现的坐标 int flag; // 食物的状态,1表示食物还没被吃,0表示食物被吃了}food; struct SNAKE // 定义结构体,来存储蛇的相关信息 { COOR crd[SIZEMAX]; // 保存蛇的每个结数的坐标,最多有100节

c语言课程设计经典例题贪吃蛇

源代码,完美运行。结尾附图 #include #include #include #include int head=3 ,tail=0; int main() { int i,j,k=0; int zuobiao[2][80]; long start; int direction=77; int gamespeed; int timeover; int change(char qipan[20][80],int zuobiao[2][80],char direction); zuobiao[0][tail]=1;zuobiao[1][tail]=1;zuobiao[0][1]=1;zuobiao [1][1]=2;zuobiao[0][2]=1;zuobiao[1][2]=3;zuobiao[0][head]=1;zu obiao[1][head]=4; /*处理棋盘*/ char qipan[20][80];//定义棋盘 for(i=0;i<20;i++) for(j=0;j<80;j++) qipan[i][j]=' ';//初始化棋盘 for(i=0;i<80;i++) qipan[0][i]='_'; for(i=0;i<20;i++) qipan[i][0]='|'; for(i=0;i<20;i++) qipan[i][79]='|'; for(i=0;i<80;i++)

qipan[19][i]='_'; qipan[1][1]=qipan[1][2]=qipan[1][3]='*';//初始化蛇的位置 qipan[1][4]='#'; printf("This is a game of a SNAKE.\nGOOD LUCK TO YOU !\n"); printf("Input your game speed,please.(e.g.300)\n"); scanf("%d",&gamespeed); while(direction!='q') { system("cls"); for(i=0;i<20;i++)//打印出棋盘 for(j=0;j<80;j++) printf("%c",qipan[i][j]); timeover=1; start=clock(); while(!kbhit()&&(timeover=clock()-start<=gamespeed)); if(timeover) { getch(); direction=getch(); } else direction=direction; if(!(direction==72||direction==80||direction==75||direction==7 7)) { return 0; system("cls"); printf("GAME OVER!\n"); } if(!change(qipan,zuobiao,direction))

C语言课程设计--贪吃蛇游戏

课程设计报告 课程名称C语言课程设计 设计题目贪吃蛇游戏 2012 年10月11 日

1.设计目的 本课程设计的目的就是要通过一次集中的强化训练,使学生能及时巩固已学的知识,补充未学的但又必要的内容。进行课程设计目的在于加深对程序设计基础中基础理论和基本知识的理解,促进理论与实践的结合,进一步提高程序设计的能力。具体目的如下: 1.使学生更深入地理解和掌握该课程中的有关基本概念,程序设计思想和方法。 2.培养学生综合运用所学知识独立完成课题的能力。 3.培养学生勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。 4.提高学生对工作认真负责、一丝不苟,对同学团结友爱,协作攻关的基本素质。 5.培养学生从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。 6.对学生掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核。 2.设计题目及要求 【1】设计题目贪吃蛇游戏 【2】要求 实现如下功能: 贪吃蛇按一个方向运行 判短是否撞到自己 是否撞墙 游戏结束 退出 【3】本程序最大优点是简单易行 综合应用数组、指针、结构体、文件等,对该设计题目进行设计和实现。 一、正文

1.计算法分析设 1.1 模块调用层次图 主函数 ↓ 图形驱动Init 画界面DrawK 游戏具体过程GamePlay 图形结束Close ↓ 游戏结束GameOver 输出成绩PrScore 【2】系统模块调用层次图 Main Save insert change renew statistics load

c语言贪吃蛇课程设计报告

c语言贪吃蛇课程设计报 告 This model paper was revised by the Standardization Office on December 10, 2020

C语言课程设计报告 贪 吃 蛇 专业 学生姓名 班级 学号 完成日期 一、游戏规则需求 1、在打开程序后,出现选择界面,里面包含难度选择,其中难度选择能够使程序出现相 应的游戏难度。 2、开始游戏后,W A S D键控制贪吃蛇的移动方向。 3、当贪吃蛇向一个方向移动时,不能立刻向反方向移动。 4、贪吃蛇撞到的自己的身体或者撞到墙时,游戏结束,并输出“GAME OVER!”。 5、贪吃蛇吃到一个食物后,出现白色闪烁一次,身体随之增加一个单位长度。 二、所需数据结构分析 1、所需函数模块 void begin(); //登陆界面 void start(); //鼠标移动事件 void init(); // 初始化游戏 void setfoodcrd(); // 设置食物要出现的坐标

void showfood(); // 在相应的坐标画出食物 void snakemove(); // 移动蛇,实际就是改变蛇各节的坐标 void judgeslod(); // 判断蛇是否撞墙或者撞到自己 void judgesef(); // 判断蛇是否吃到食物了 void showsnake(); // 在屏幕上画出蛇 void changeskdir(); // 接受用户输入,改变蛇的前进方向 void gameover(); // 游戏结束 2、蛇及食物数据结构 typedef struct // 定义一个结构体表示坐标 { int x; int y; }COOR; struct FOOD // 定义结构体,来存储食物的相关信息 {COOR crd; // 食物出现的坐标 int flag; // 食物的状态,1表示食物还没被吃,0表示食物被吃了}food; struct SNAKE // 定义结构体,来存储蛇的相关信息 { COOR crd[SIZEMAX]; // 保存蛇的每个结数的坐标,最多有100节int node; // 保存蛇当前节数 DIR dir; // 当前蛇行进的方向 }snake; 3、游戏流程图

贪吃蛇(C语言)

#include #include #include #include #include //蛇头移动方向 #define UP 1 #define DOWN 2 #define LEFT 3 #define RIGHT 4 〃死亡判定(葱墙或葱自己) #define KISSASS 1 #define KISSWALL 2 //坐标转化 #define POINT(x,y) ((y)*80+(x)+1)// 将(x,y)坐标转化为一个int 类数值 #define GETX(x) (((x)-1)%80)// 将int 类数值提取出原先的x #define GETY(y) (((y)-1)/80)// 同理,提取出y HANDLE Console; void Position(int x, int y); // 移动光标到(x,y) //Windows.h void DrawMap();// 画墙 void ShowText(char *text);//根据字符串的长短智能打印出包围字符串的笑脸 void ResetSnake();// 初始化贪吃蛇 int RefreshSnake();// 更新蛇的移动 void CreatFood();// 生成食物 void Draw();//画出蛇身和食物 void RefreshScreen();// 屏幕刷新 void GameOver(int Type);// 游戏结束条件 int Gaming();//代码跑起来 char play = 0; ////值为1则继续游戏,值为0游戏退出 char pause = 0; //值为1则暂停,值为0游戏继续 char direction; // 蛇头方向 int snake[500]; //snake[0]为蛇头 int body; //蛇身体长度int newbody;//吃完食物新长的蛇身 int addHead,deleteTail;//增加蛇头擦去蛇尾,使贪吃蛇动起来 int food = 0; // 食物 void main() ( CONSOLE_CURSOR_INFO CurrInfo = { sizeof(CONSOLE_CURSOR_INFO), 0 };

c语言贪吃蛇小游戏程序课程设计

学生课程设计报告

一、课程设计内容 贪吃蛇小游戏程序设计 (贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中身体交叉蛇头撞倒自己身体则游戏结束。) 二、技术路线 使用VC++6.0作为开发环境, 采用控制台的形式完成整个游戏的开发,没有用到MFC。 加入了pcc32.h的头文件及库文件,用于对控制台打印效果的控制。 同时也加入了PlaySound()函数,实现了对菜单选择,游戏开始,游戏结束的音效控制。游戏栏和输出栏的同时打印,数据的更新打印效果,没有采用双线程的方法实现。 接收用户键盘输入信息,实现游戏暂停,重新开始,菜单选择和进入菜单。 三、设计与实现 1.游戏基本功能: 游戏有开始菜单界面,并有开始游戏,游戏帮助,关于游戏,退出游戏四个选项 游戏初始化后,一条蛇在密闭的围墙内,在围墙内随机出现一个食物, 通过按键盘上的四个方向键控制蛇移动, 蛇在移动过程中撞到墙壁将不会死亡,而是穿过围墙继续行进, 但是如果蛇身体交叉蛇头撞到自己的身体,则游戏结束。 同时,游戏过程中可暂停游戏,并有积分系统, 且积分每满一定值,蛇的运行速度也会逐步增加。 2.函数定义和声明 (1)头文件 #include #include #include #include #include #include "mmsystem.h" #pragma comment (lib,"winmm.lib") #include"pcc32.h" #pragma comment (lib, "pcc32_vc6.lib") using namespace std; #define UP 72 //定义上下左右常量 #define DOWN 80 #define LEFT 75 #define RIGHT 77

c语言贪吃蛇课程设计报告

C语言课程设计报告 贪 吃 蛇 专业 学生姓名 班级 学号 完成日期

一、游戏规则需求 1、在打开程序后,出现选择界面,里面包含难度选择,其中难度选择能够使程序出现相应 的游戏难度。 2、开始游戏后,W A S D键控制贪吃蛇的移动方向。 3、当贪吃蛇向一个方向移动时,不能立刻向反方向移动。 4、贪吃蛇撞到的自己的身体或者撞到墙时,游戏结束,并输出“GAME OVER!”。 5、贪吃蛇吃到一个食物后,出现白色闪烁一次,身体随之增加一个单位长度。 二、所需数据结构分析 1、所需函数模块 void begin(); //登陆界面 void start(); //鼠标移动事件 void init(); // 初始化游戏 void setfoodcrd(); // 设置食物要出现的坐标 void showfood(); // 在相应的坐标画出食物 void snakemove(); // 移动蛇,实际就是改变蛇各节的坐标 void judgeslod(); // 判断蛇是否撞墙或者撞到自己 void judgesef(); // 判断蛇是否吃到食物了 void showsnake(); // 在屏幕上画出蛇 void changeskdir(); // 接受用户输入,改变蛇的前进方向 void gameover(); // 游戏结束 2、蛇及食物数据结构 typedef struct // 定义一个结构体表示坐标 { int x; int y; }COOR; struct FOOD // 定义结构体,来存储食物的相关信息 {COOR crd; // 食物出现的坐标 int flag; // 食物的状态,1表示食物还没被吃,0表示食物被吃了

相关主题
文本预览
相关文档 最新文档