《基于c语言的贪吃蛇游戏开发与设计本科论文.doc》由会员分享,可在线阅读,更多相关《基于c语言的贪吃蛇游戏开发与设计本科论文.doc(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、计算机科学与技术 学院学年设计说明书(论文)作 者:呼斯勒都仍 学 号:159040642003 院 系:计算机科学与技术学院(软件外包) 专 业:计 算 机 科 学 与 技 术 题 目:基于C语言的贪吃蛇游戏开发与设计 伴随着科学技术的发展,人们都渴望在不工作的时候有一些娱乐活动,而贪吃蛇这一款游戏正好符合大众的心理。所以,为了迎合许多用户的需求,才开发了这款叫做贪吃蛇的小游戏,并且这款小游戏适合各阶层人士,此外它还具有很强的娱乐性和交互性。这款游戏之所以叫贪吃蛇,其真正用意并不是告诉人们要贪心,它所传递的精神是人们只有不断努力地向前才能得到自己想要的,食物就像现在社会存在的机会,而人们只有
2、找好自己的目标才能成功。尽管现在市面上存在的游戏版本很多,可是贪吃蛇的市场还是很大的。原因就在与它能引人入深,爱不释手。随着游戏速度的逐渐加快,其刺激性也更强。可以说该游戏的优势不仅在于它的简单易行,而且在于它很快顺利的运行。对于那些在外忙忙碌碌的人们,想让他们花费大量的时间在大型游戏上显然是不可能的,但是小游戏却刚好能够迎合他们的需求。论文首先简单介绍了开发工具,然后从需求分析、概要设计、详细设计与实现等方面介绍了贪吃蛇游戏的设计与实现过程,最后给出了贪吃蛇的运行与测试情况。关键词贪吃蛇 ;C语言;函数;游戏目录前言第一章概述1.1中国手机游戏产业现状1.2中国手机游戏的未来展第二章开发工具
3、的简介2.1可行性分析2.2功能性分析 第三章3.1概要设计3.1功能介绍3.2概要设计图第四章详细设计第五章 南京工程学院毕业设计说明书(论文)前言C语言是目前世界上流行、使用最广泛的高级程序设计语言。C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,许多大型应用软件都是用C语言编写的。C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画它是数值计算的高级语言。常用的编译软件有Microsoft Visual C+,Borland C+,Watcom C+ ,Borland C+, Borland C+
4、Builder,Borland C+ 3.1 for DOS,Watcom C+ 11.0 for DOS,GNU DJGPP C+, Lccwin32 C Compiler 3.1,Microsoft C,High C,等等.C语言的发展历史C语言的发展颇为有趣。它的原型ALGOL 60语言。1963年,剑桥大学将ALGOL 60语言发展成为CPL(Combined Programming Language)语言。1967年,剑桥大学的Matin Richards 对CPL语言进行了简化,于是产生了BCPL语言。1970年,美国贝尔实验室的Ken Thompson将BCPL进行了修改,并为它
5、起了一个有趣的名字“B语言”。意思是将CPL语言煮干,提炼出它的精华。并且他用B语言写了第一个UNIX操作系统而在1973年,B语言也给人“煮”了一下,美国贝尔实验室的D.M.RITCHIE在B语言的基础上最终设计出了一种新的语言,他取了BGPL的第二个字母作为这种语言的名字,这就是C语言。为了使UNIX操作系统推广,1977年Dennis M.Ritchie 发表了不依赖于具体机器系统的C语言编译文本可移植的C语言编译程序。1978年Brian W.Kernighian和Dennis M.Ritchie出版了名著The C Programming Language,从而使C语言成为目前世界上
6、流行最广泛的高级程序设计语言。1988年,随着微型计算机的日益普及, 出现了许多C语言版本。由于没有统一的标准,使得这些C语言之间出现了一些不一致的地方。为了改变这种情况,美国国家标准研究所(ANSI)为C语言制定了一套ANSI标准, 成为现行的C语言标准 3.C语言的主要特点 。C语言发展迅速, 而且成为最受欢迎的语言之一, 主要因为它具有强大的功能。许多著名的系统软件, 如DBASE PLUS、DBASE 都是由C 语言编写的。用C语言加上一些汇编语言子程序, 就更能显示C语言的优势了,象PC- DOS 、WORDSTAR等就是用这种方法编写的。第一章 概述 这些年中国的手机行业在硝烟与战
7、火中度过,拍照手机、音乐手机等各领风骚。然而,人们玩得最多的手机 游戏却在市场上显得平淡无奇,谁又曾想到在这看似平常的手机游戏中却蕴藏着巨大的商机?近年来,中国的手机游戏市场已具雏形,并朝着健康有序的方向发展。本文通过对中国目前的手机游戏现存的一些问题和发展方向进行了分析,为如何促进我国手机游戏发展提出了一些看法和建议。如今,用手机看新闻、发邮件、拍照、聊天已不再新鲜,用手机玩游戏已经成为时下比较流行的一种消遣方式。手机游戏的发展离不开手机终端的普及和数据服务的推广。近几年来,随着手机游戏技术自身的日益成熟,手机游戏的巨大商机开始展现在人们面前。现在传统游戏产业的商家已经开始从家用机游戏、游戏
8、等传统的游戏领域逐渐向手机游戏领域扩张,并尝试与手机游戏开发商以及服务提供商进行更加紧密地合作,这一切都证明手机游戏市场已成为目前移动领域最具有活力的市场。因此,让我们来关注一下未来手机游戏的发展动态吧!1.1中国手机游戏产业的现状在中国,手机游戏产业的发展比较缓慢,随着手机自身性能的发展到一个手机游戏的普及,经历了较长的时间,大概分为三个阶段。第一个阶段是手机游戏的孕育期。以第一款手机游戏在诺基亚手机上诞生的时候,最早的给手机用户提供消遣,带来快乐,从而也拓展了手机的功能。从那时候开始手机不再只限于单一的通信。该阶段的以普通屏为基础,游戏简单,易操作。第二阶段是手机游戏的快速发展期。随着彩屏
9、手机的快速发展,移动终端性能的不断提高与完善,使游戏和单机版成为该阶段的主流。 此阶段的特点是随着手机软硬件功能的加强和游戏内容的多样化,手机游戏的可视性、娱乐性和交互性进一步得到提高。第三阶段是手机游戏的成熟期。随着产业的快速开展,大型联网游戏将成为手机游戏的主流。 经过一些市场调查,从用户在手机游戏的类型选择上来看,一半以上的用户选择了益智类游戏。由于益智类游戏简单、易上手,操作时间短,能够使手机用户在较短的时间内去消遣,让用户在繁忙的时候得到放松。从各种手机游戏下载情况来看,选择动作类游戏和角色扮演类游戏的玩家也是比较多的,大概有三分之一的用户选择了它们。其它如冒险游戏、射击游戏、策略游
10、戏、棋牌游戏等也较受到手机用户的欢迎。 近年来,在网络游戏快速发展的同时,大型手机网络游戏也随即而来,更多的种类给玩家带来了更多的选择。与此同时,手机玩家群体也在不断的发生变化,他们更加接受的是随时、随地、随身的移动休闲和娱乐方式。对于今后手机游戏玩家的发展而言,由于电子游戏、单机游戏、网络游戏等其他平台的游戏在近几年时间里培养了一批忠实的职业玩家,所以这一批玩家将有可能成为手机游戏用户的支柱。1.2中国手机游戏的产业链手机游戏作为一个完整的产业链,覆盖多方合作的力量,主要包括手机制造商、游戏开发商、服务提供商和移动运营商等。为了促进手机游戏行业良性的发展,保持中国移动通信产业的持久稳定,这些
11、商家必须进行不断的合作。近年来,手机制造商开始与机芯、操作系统企业展开合作,为手机游戏创造更好的软硬件平台。由于手机游戏有巨大商业潜力,包括盛大、腾讯等公司也纷纷进军这块领域,他们依靠在网络游戏领域内积累的人才、资金和技术优势来争夺该市场。而服务提供商主要是门户网站等专业增值服务公司,通过代理来实现收益。移动运营商在该产业链条中处于主导地位,他们通过控制手机制造商、游戏开发商、服务提供商三方的力量来实现收益。虽然手机游戏行业目前在中国是个新兴业务,但随着手机游戏服务供应商的推广,特别受到年轻人的追捧。根据有关调查显示中国手机游戏用户的数量在年年底达到万,这将是个庞大的玩家群体,从而使手机游戏将
12、成为移动运营商增值业务和收入的重要来源。尽管国内手机游戏产业链中的各方都欲抢占先机。可是,产品、终端、资费及服务等这些问题却已成为制约其发展的重要障碍。终端的普及度不够高,游戏的同质化和低质量问题也正困扰着国内手机游戏市场,虽然过高的资费一直被看作阻碍手机游戏市场发展的最大障碍,但最为关键的问题是不规范的服务使众多玩家丧失信心。所以,在巨大的市场面前,中国手机游戏的产业链还须进一步完善。中国手机游戏的未来展望根据相关行业的调查,年,手机游戏产业有了突破性的发展。年中国手机游戏市场规模超过亿元人民币,年我国手机游戏市场规模达到了亿元,将有可能上升到亿元。由于受网络游戏的影响,中国的手机网络游戏市
13、场也将更加发展,更多游戏将被引进。据调查显示:单机游戏生命周期相对短,而用户对手机网络游戏的热情度相对较高。一款好的“百宝箱”单机游戏前段时间还比较兴起,过后即开始衰退。但手机网络游戏则不一样,一款优秀的网络游戏,不但能吸引大量的玩家,而且其生命力和持久力也是难以估量的。中国的手机游戏市场也会发展到更大的规模。勿须质疑,在巨大的经济诱惑面前,互联网游戏流行期过后,很多投资商将更多的倾向于由互联网、手机共同打造的市场。从 “百宝箱”中接近的游戏基本上都是国产的来看,站点开始成为投资商最关注的热点。随着手机游戏市场的逐渐成熟,手机游戏产业必将出现大量的资源整合。在未来,参与到手机游戏行业的游戏开发
14、商将越来越多,国内手机游戏厂商将面临前所未有的竞争,手机游戏的质量和可玩性也将进一步得到提高。在游戏市场的运转之下,服务提供商和游戏运营商也将会探索出了适合其发展的商业模式。虽然手机游戏在目前的技术环境下还无法达到 游戏的魅力,但随着越来越多智能手机、高端手机的出 现,手机游戏将成为人们生活娱乐中不可缺少的一部分。因此,手机游戏行业正朝着健康有序的方向发展,相信不久的将来手机游戏将成为一种商业文化。最近几年来,网络特别是无线通信网络在国内的普及速度很快,同时也带动了网络游戏的快速发展。同样地,智能手机的普及,使得手机游戏市场空前发展。国内外巨大的手机使用量,也让商家看到了新的商机,手机游戏市场
15、的利润将会十分的丰厚。面对潜力巨大的手机游戏市场,各大游戏开发商、运营商、服务商以及手机终端厂商等都开始准备应对措施,以便抢占更多的手机市场份额,许多手机厂商开始不断地提升手机的游戏性能,同时采用开放式的手机操作系统,方便用户能够享受到不同的游戏业务。而国内游戏开发商也都纷纷跻身手机游戏开发行列,许多著名的用户网站,也纷纷涉及手机游戏领域,相继开辟了各自的手机游戏相关栏目,其他一些游戏网站也都加快了手机游戏开发的脚步。现阶段国内的手机游戏还局限于小型的单机游戏和简单的卡牌类游戏,而国外现在已经开始致力于开发能够依靠GPRS定位,或者用户佩戴辅助器械的大型手机游戏。毕业设计依托上述内容为技术和应
16、用背景,在windows操作系统下采用Visual C+ 6.0开发工具来开发,主要内容如下:1) 熟悉Visual C+ 6.0开发工具,2) 熟练C语言的编程方法3) 熟悉贪吃蛇游戏的应实现的功能第二章 需求分析2.1可行性分析2.1.1 技术可行性 本系统的设计要求是一个能在Windows操作系统下运行且界面美观运行稳定且将来可能用于嵌入式移植的系统。综合考虑选择C语言技术来实现本系统。C语言是一门成熟的高级语言,可用于开发各种系统,也可用于开发游戏系统。同时C语言也拥有相当多的技术人员,可以说在技术方面开发此系统不会有什么问题。2.1.2 经济可行性 随着手机和电脑的普及,这样的小游戏
17、也将随着普及,因此其需求也将不断地上升,而且由于技术的成熟与为数众多的开发人员使得此系统的开发并不困难,再者此系统运行的平台Windows操作系统是免费的,所以开发此系统的成本并不会很高。因此此系统具有相当的经济利益,到时候我们也可以静观其成。2.1.3 操作可行性本系统是一个简单的游戏系统,对于这样一个系统,其操作只需要使用简单的几个按键就可以实现了,因此本系统的操作简单易记,可以说一看就会的,系统在操作上是不会存在问题的,本系统需要在Windows操作系统下运行,而用户也可以在其受益匪浅。2.2 功能性分析游戏是人们生活中不可或缺的一部分,在人的成长过程中,游戏时常陪伴在我们的身边,它在我
18、们的生活中占据的地位是不可言喻的。不论是一个玩具,还是一个能和伙伴一起开心的小游戏,都是能给我们留下美好的回忆。因此,无论是什么样的游戏,只要它能迎合人们内心的某种需求,它的市场就会很好。2.2.1简单性 贪吃蛇是一个简单的小游戏,但是它的作用却是很大的。首先它能使我们身心得到很好的放松,使我们从繁重的生活中解脱出来,而只有我们的身心得到了娱乐,我们才能更好地投入到新的工作当中,现在许多人,包括已经有工作的工作者和未进入社会的学生,都面临着很大的压力,应运而生地,贪吃蛇提供了我们随时随地享受娱乐的机会。这款游戏之所以叫贪吃蛇,其真正用意并不是告诉我们要贪心,它所传递的精神是人们只有不断努力地向
19、前才能得到自己想要的,食物就像现在社会存在的机会,而我们只有找好自己的目标才能成功。尽管现在市面上存在的游戏版本很多,可是贪吃蛇的市场还是很大的。原因就在与它能引人入深,爱不释手。随着游戏速度的逐渐加快,其刺激性也更强。可以说该游戏的优势不仅在于它的简单易行,而且在于它很快顺利的运行。对于那些在外忙忙碌碌的人们,想让他们花费大量的时间在大型游戏上显然是不可能的,但是小游戏却刚好能够迎合他们的需求。但是它的缺点也主要在它的简单性,游戏本身太过于简单,无法满足大型游戏主的需求,但是这样的小游戏主要对象是针对那些需要有些小东西来调剂生活的人们,给他们的生活带来些精彩。 2.2.2 趣味性人们可能持有
20、这样的怀疑:这样一款小小的游戏,其可玩性应该高不到哪里去吧!事实上对于大型游戏的玩家这样一款游戏自然是无法满足的。可是我们却无法否认其趣味性。在经过一天繁忙的工作之后,我们难得有一个间隙能喘口气,自然不能浪费,在不能玩大型游戏的情况下,人们自然而然的就会想到贪吃蛇这样的小游戏,不仅不会占用大量的时间,而且还能够让身心得到充分的休息。言归正传,贪吃蛇的趣味究竟在哪里呢?人们开始游戏时从起先的容易,到后来速度的不断加快,其可玩性也在不断地增加。第三章 概要设计贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食
21、物被吃掉,蛇身体长一节,同时记2分,接着又出现食物,等待蛇来吃,如果蛇在移动中身体交叉蛇头撞倒自己身体游戏结束。3.2概要设计图通过对贪吃蛇的需求分析,我们用C语言实现该程序概要如下:游戏界面画面设计蛇构造 食物构造 蛇的移动游戏过程蛇吃食物贪吃蛇蛇的死亡游戏结束蛇的死亡添加功能蛇的速度背景音乐图4-1 概要设计图3.2.1画面设计(1)主要是对边框、食物、蛇的设计,起用了一些链表和库函数;(2)画面的启动的问题,紧接着就是是画面的绘制(3)食物和蛇放在游戏的具体过程中,因为食物是随机的,而蛇是移动的。3.2.2游戏过程 主要是对食物和蛇的设置。在这个环节过程中有几个重要的算法,是程序能否成功
22、地运行的关键。其主要有蛇是如何移动身体的;蛇怎样才能吃到食物;随着游戏得分增加,游戏的等级也增加,同时蛇的爬行速度也加快了;怎样判断蛇的死亡等。3.2.3游戏结束 蛇如何死亡蛇死亡后即意味着游戏的结束3.2.4添加功能(1)在游戏的开头添加“WELCOM TO GAME”的语句,并添加“按任意键继续”以提示用户;(2)添加背景音乐“筷子兄弟小苹果”,可以在玩游戏的过程中,边玩游戏边听音乐。第四章 详细设计4.1程序设计分析开 始欢 迎 界 面背 景 音 乐游 戏 界 面游 戏 过 程游戏结束? NY结 束 游 戏 退 出 游 戏结 束图5-1 程序设计流程图 这是一个简单的游戏,所以循环和分支
23、之类的函数在大的面上运用较少,主要体现在计算上,尤其是坐标上的计算较为突出。简单易懂,一目了然4.2主要函数:表5-1贪吃蛇主要函数函数功能HideCursor()隐藏光标GotoRood(int x, int y)光标跳跃到(x,y)位置Random(int n)随机生成食物BuildSnk(SNAKE *head)构造蛇身RemoveSnk(SNAKE *head)清除函数Move(int *d)控制蛇懂得移动IniScreen(SNAKE *head)初始化屏幕CreatFood(FOOD *fd, SNAKE *snk)做蛇的食物,增加一个的功能就是让食物不与蛇体发生冲突Collisi
24、onTest(SNAKE *head)碰撞测试Eated(SNAKE *head, FOOD *fd)蛇是否吃到食物GameOver(SNAKE *head)判断游戏结束了没gameing()游戏过程PlaySound()播放背景音乐4.3主要代码4.3.1 Main()主函数主函数是程序的主流程,首先定义使用到的常数、全局变量及函数原型说明,然后初始化图形系统,调用函数gameing(),即玩游戏的具体过程,游戏结束后执行return 0;语句关闭图形系统,结束程序。代码如下: int main() GotoRood(START_X + SCREEN_WIDTH / 2, START_Y +
25、 SCREEN_LENGTH / 2); printf(WELCOM TO GAME); GotoRood(START_X + SCREEN_WIDTH / 2-2, START_Y + SCREEN_LENGTH / 2+10); system(pause); system(cls);/清除屏幕内容 PlaySound(TEXT(D:xiaopingguoxiaopingguo.wav), NULL, SND_ASYNC | SND_NODEFAULT);while (1) gameing(); return 0; 程序分析:一般而言,编写一个能运行在操作系统上的程序,都需要一个主函数。主函
26、数意味着建立一个独立进程,且该进程成为了程序的入口,对其它各函数(在某些OOP语言里称作方法,比如Java)进行调用,当然其它被调用函数也可以再去调用更多函数.这样整个程序的运行轨迹就像一种栈,有时我们称之为调用栈。主函数既是程序的入口,又是程序的出口,通常我们还可以指定一个exit code再退出,以表明程序最后的结果是什么样的。自然而然的,这里的main函数就是贪吃蛇游戏程序的入口函数,通过该入口函数,进而可以调用gameing()函数,使游戏运行起来4.3.2 游戏界面设计主界面就是一个密封的矩形框,在矩形框的左边是游戏的操作说明,在框内主要是蛇和食物。游戏边框流程图如图5-2所示。开
27、始 定位光标(15,4)i=0i47 N Y画上边围墙的一个矩形框画下边围墙的一个矩形框i=i+1j=1j15 N 画右边围墙的一个矩形框 Y画左边围墙的一个矩形框j=j+1结 束 图5-2 游戏边框流程图 代码如下: void IniScreen(SNAKE *head) /*初始化屏幕*/int i,j;SNAKE *p1, *p2; HideCursor();GotoRood(START_X,START_Y);/*-画游戏边框-*/ for (i = 0; i SCREEN_WIDTH + 2; i+) printf(-); for (j = 1; j = SCREEN_LENGTH;
28、j+)GotoRood(START_X + SCREEN_WIDTH + 1, START_Y + j);printf(|); GotoRood(START_X, START_Y + SCREEN_LENGTH + 1);for (i = 0; i SCREEN_WIDTH + 2; i+) printf(-); for (j = 1; j x = START_X + SCREEN_WIDTH / 2;head-y = START_Y + 8;head-pre = NULL;p1 = head;i = 0;while (+i x = START_X + SCREEN_WIDTH / 2; p1
29、-y = START_Y + 8 + i; p1-end = NULL;p2-next = p1;p1-pre = p2; p1-next = NULL;head-end = p1; 程序分析:这里的游戏边框设计的主要思想是利用for循环语句中的嵌套循环实现的。如 for (i = 0; i SCREEN_WIDTH + 2; i+) printf(-);这句话的意思是画出游戏边框的上边框,画完之后,再通过GotoRood(START_X + SCREEN_WIDTH + 1, START_Y + j);语句实现光标定位,并且与for (j = 1; j x = head-x; ptemp-y
30、 = head-y - 1; break; case down: ptemp-x = head-x; ptemp-y = head-y + 1; break;case left: ptemp-x = head-x - 1; ptemp-y = head-y; break;case right: ptemp-x = head-x + 1; ptemp-y = head-y; break;if (!eat) /*如果没吃到,那自然增加蛇的长度*/ ptemp-end = head-end-pre; /*将蛇的尾端位置改变,变为倒数第二个*/ head-end-pre-next = NULL; /*
31、再连接下.*/ free(head-end); head-end = NULL; else ptemp-end = head - end;/*吃到了。在原有的基础上换一个头,这样就多了一节*/ head-pre = ptemp; /*。队列连接*/ptemp-next = head;ptemp-pre = NULL;head = ptemp;if (eat = Eated(head, fd) CreatFood(fd,head); score += grade; /*吃到了,就加分*/ scorelimit += grade; if (scorelimit / 50 & grade x, p-
32、y); printf(#); p = p-next;4.4.2蛇的移动方向函数void Move(int *d) /*移动方向。 上下左右 上:72 下:80 左:75 右:77*/ char ch; while(_kbhit() ch = getch();if (ch = 72) if (*d = left | *d = right) & *d != down) *d = up; else if (ch = 80) if (*d = left | *d = right) & *d != up) *d = down; else if (ch = 75) if (*d = up | *d = down) & *d != righ