搜档网
当前位置:搜档网 › c语言课程设计 贪吃蛇设计

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、Mic rosoft Windows及Linux等。C语言的设计影响了许多后来的编程语言,例如C ++、Objective-C、Java、C#等。

1980年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局(American National Standard Institution)为C语言订定了一套完整的国际标准语法,称为ANSI C,作为C语言的标准。1980年代至今的有关程式开发工具,一般都支持符合ANSI C的语法。

对于一个初学者,Microsoft Visual C++是一个比较好的软件。界面友好,功能强大,调试也很方便。这是微软出的一个C语言集成开发环境(IDE),主要有:VC++6.0、VS2005.VS2008.VS2010等,分为企业版和学生版等。对于初学者VC++6.0是比较容易上手的,但其对标准支持的不好可能使人养成不良的编程习惯。

在unix/linux操作系统上,学习c语言一般使用vim/emacs来编辑源文件,使用gcc来编译源文件,使用make程序来管理编译过程。

C++学习过程中,涉及到很多的基本知识点,需要以练习的形式逐步深入,以达到融会贯通的目的。学习C++是一项交互式练习,不实际编写程序就无法学会C++,因此,要抱着一种十年方能磨一剑的心理,扎扎实实从基础开始。选一些好的实例,这些实例经过反复的挑选,既有利于我们掌握有关知识,又不识趣味性。不断地写代码,写有意义的代码。这其实也是入门任何其他编程语言的必由之路。在编程的过程中,重点训练我的编程的逻辑思路和算法以及编程、调试的基本技术。因此,在作课程设计时,以任务驱动为前提,从提出问题开始,行分析和算法设计,最后再归纳总结,以加强学习的针对性和应用性。

万丈高楼平地起,能够编写复杂的游戏都是在编写过简单的游戏程序基础上演变过来的能力。然而像贪吃蛇这样的小游戏程序,就自然成了游戏设计者的入门首选。因此其界面简单,操作、玩法一目了然,所以编写起来就不会很困难,而且需要考虑的问题也不是很多,就是蛇的显示、移动、碰撞3个游戏的主块,程序就自然编写出来了,不会一开始就把游戏设计初学者拒之门外。编成之后成就感就油然而生,并使之对游戏设计产生强烈的兴趣。成为向游戏设计之路成功迈进的第一步,同时对于VC++的应用水平也会上升,用起来会更加熟练、得心应手。从易到难这是一个准则,总之,贪吃蛇小游戏的研究会对增长程序阅读能力、编写程序能力等起到了意想不到的作用。

本文首先对小游戏的发展前景进行了展望,并对其研究现状与研究目标进行了介绍。然后对编写程序用的工具软件 VC++进行了介绍。接着进入主题,对贪吃蛇这个游戏进行了介绍然后又对游戏总体设计与分析。最后详细地介绍了游戏中各个细节的具体实现,并进行了细致的分析。行云流水般地将在游戏编写过程中遇到的问题以及相应的解决方法表述的清清楚楚。在实践中我获得到了许多宝贵的知识和编程的经验!

关键字:贪吃蛇,VC++,小游戏。

ABSTRACT

In this paper, At the we saw the future of the development of little game.and then we introduced the situation and target of game research . afterwards, we peovided the programming tool which is called VC++ made by Microsoft . Next let’s get down to business . in the first place . we introduced the game—greedy snake .in the second place ,we designed and analyzed the overall game .At last , we vividly provided the particular realization of game details, and analyzed those detail meticulous. In the process of game programming. I came up against lots of trouble, but I didn’t give it up, by the contrary. I overcame them one by one ,and at last I met with success ,I have got many precious knowledge and programming experience in the practice.

Key words :Greedy snake, VC++, little game.

项目背景

贪吃蛇简介

蛇——传说中的圣灵之物,仰头为神,俯首为魔。蛇是月亮国膜拜的神,月亮国的子民们都认为蛇是万能的主宰派来保护他们的守护者。蛇在这个岛屿就像空气一样自然的出现在各个角落,有些还成为居民的宠物,陪伴孩子长达,和年轻人一起去探险,守护者散步的老人。在善良的女神女娲神保佑下,人们的生活安宁平静。为了答谢女娲神的庇佑,每年月亮果的国民们都会举办一个守护蛇大赛,大人家都会拿出自己最强、最炫、最快、最稀有的蛇来参加比赛,获得第一名的人将得到国王的特别嘉奖。所以国民一生都在培养更有威力、更长、更壮的蛇。

“贪吃蛇”是在一个产生于1970年代中后期的计算机游戏。也叫贪吃蛇。该游戏在1990年代由于一些手机将其引入而一时间再度流行起来。在游戏中,玩家操作一条细长的蛇爬行与一个带边界的平面上,一路拾起触碰到之事或其它类似的物件,并要避免触碰到自身或者包围者游戏区的“墙”。每次贪吃蛇吃掉一件食物,它的身体变增长一些,这让游戏的难度渐渐变大。操控贪吃蛇时,玩家操控贪吃蛇的头部的朝向(上、下、左、右)操控贪吃蛇的进行方向

贪吃蛇的身体将跟随其头部行进。另外,玩家不可在游戏中途停止贪吃蛇的行进。随着贪吃蛇的成功移植到手机系统,贪吃蛇的操作按键要求与手机按键完美匹配,使贪吃蛇游戏风靡起来。

需求分析

现在小游戏很是流行在手机以及互联网上都是很火热的,这引起了我的兴趣。查看了而几个小游戏网站,其实也没有什么,只不过是写以FLASH为主开发的Flash小游戏,确实没有什么非同凡响的地方。但你仔细思考想一下,就不难发现,这些东西还真有一定的市场,只是现在还默默地没有被人们所关注。

首先,不断扩大的网络爱好者和电脑应用者队伍,带来了很多“新手”,这些新手还会像以前我们刚开始接触是一样,对一些相对简单,操作也方便、娱乐性强东西很感兴趣。源源不断的加入者,组成了“小游戏”玩家的新主力军。

其次,“小游戏”很方便下载,而且现在的数码小产品被越来越多的青年所青睐,拥有许多超强功能来支持这些小游戏。

再次,随着电视上网络上进程的推进,网络走进千家万户的时代为期不远。因为电视分辨率与内存大小的限制,以及遥控器操作要求简单,这种小游戏将会有一个巨大而潜在的市场。

今后小游戏的发展趋势:1,体积小,小游戏一般都占硬盘空间相当小,方便下载传播;2,内容好,体积小并不代表没有内容,相反小游戏的内容还是比较丰富的;3,耐玩,正是因为小游戏占空间不大,它也是在电脑上占据比较长的游戏了;4,娱乐性高,小游戏玩起来还是蛮有趣的,拥有一定的娱乐性;5,无年龄层次,不分老少、男女小游戏面向的晚间范围广。

概要设计

贪吃蛇游戏的额基本规则:通过键盘上的1、2、3、4键来控制蛇的运行方向,当蛇将食物吃到了后身体长度自动增加,当蛇撞到墙或吃到自身则蛇死,此时将退出贪吃蛇游戏;当蛇向左运行时,按向右键将不会改变蛇的运行方向,蛇将继续前进;同理其他方向一样。

在编写贪吃蛇游戏时有一下几个技术要点。

第一、如何实现蛇在吃到食物后食物消失,这里用到的方法是采用背景色在出现事物的地方将食物重画,这样食物就消失不见了。

第二、、如何实现蛇的移动且在移动过程中不留下痕迹,实现蛇的移动也是贪吃蛇游戏最核心的技术,主要方法是将蛇头后面的每一节

逐次移动到前一节的位置,然后按蛇的运行方向不同对蛇头的位

置作出相应调整,蛇每向前运行一步,相应的将其为不宜结用背

景色重画,及去掉其尾部。

第三、当蛇向上运行时,从键盘中输入向下键,此时蛇的运行方向不变,其他几个方向以此类推,之力我是采用if….eles语句来实现该功

能。

第四、食物出现的位置这里采用随机产生,但这种随机产生也是有一定限制条件的即食物出现位置的横纵坐标必须能被10整除,只有这

样才能保证蛇能够吃到食物。

详细设计与测试

601定义蛇身的数据结构

对于蛇身在某一瞬间的位置标识,我们采用一个一维的数组来标识出来,即用动态增长的数组来存储每一节蛇身的位置(包括蛇头和蛇尾)。

也就是说,用存储单位空间存储当前蛇身某部位的位置来对整个蛇身的位置进行标识,因此每个存储空间的内容就是一个点的坐标值(row,col),而蛇身以从左到右的方式进行编号,最左边是蛇的尾部,最右边是蛇的额头不。如表6-1为三节蛇的数据结构。

以此类推,snake[2].row和snake[2].col则是第二号蛇身也就是蛇头的横坐标row 和纵坐标col。

602 算法设计与程序流程图

602.1 贪吃蛇算法设计

2:while 玩家不按退出键

3:if 玩家按下某方向键

4:蛇身按照玩家按下方向移动

5:eles蛇身按照默认方向(右)移动

6:end if

7:if 蛇头碰到墙壁

8:游戏结束

9;end if

10:if 蛇头碰到自身

11:游戏结束

12:end if

13:if 蛇碰到食物

14:蛇身增长、分数增加、产生新食物

15; end if

16: end whlile

17: 游戏结束

=============================================================

602.2程序流程图

602.2程序流程图

603光标移动的设计与实现

在游戏过程中,对于光标的移动相当重要。首先,食物的产生是随机产生的,可能出现在游戏界面的任何一个地方,因此生成随机坐标后,就要将光标移动到该坐标,然后进行显示食物操作。其次,游戏界面的显示也需要移动光标。譬如,纵向的围栏的显示。再次,就是蛇身的移动了,蛇尾部要不断清空,这样蛇就动起来了。其中X为纵坐标,Y为横坐标,(X,Y)对应于屏幕上的像素点。COORD这个数据结构、SetConsoleCurorPosition()、GetStdHandle()这2个函数都是位置,GetStdHandle()得到标准输入输出的句柄。Gotoxy()这个函数是布尔型的,返回真或假。

下面将光标移动应用到贪吃蛇游戏中

603.1显示水平围墙的实现

水平围墙就是在游戏区域中,限制蛇行动的上下界,即活动的对打边界。这里用一系列“====”连续显示,直到设定的最大活动范围。

水平围墙如图603.1所示

图603.1水平围墙

603.2显示分数的实现

对于玩家的得分,是在游戏当中,玩家控制贪吃蛇每当吞掉一个食物,相应的分数就会增加一分。游戏结束时,分数会清零,再下一盘游戏中从0分开始计数

玩家的分数显示如图603.2所示

603.2分数显示图

603.3接受玩家按键信息的实现

为了接受来自键盘的信息,之力用到了conio.h这个头文件。通过一个布尔函数kbhit()的真假来判断是否有按键被敲击,如果没有,游戏正常运行;否则通getch()得到那个char变量的按键信息,然后修改蛇的运动方向。

603.4游戏结束时显示信息的实现

当游戏介绍时,屏幕上要显示“Game over”的字样,还有“another game (y/n)?”的字样来让玩家选择继续游戏还是退出游戏。这里是通过使用gotoxy ()函数,是上述的字样在想要显示的位置出现的。游戏结束的而显示信息如图603.4所示

图603.4游戏结束显示

604贪吃蛇游戏主干的设计

604.1游戏的初始化与加载的实现

游戏开始的时候,初始化蛇的长度为4节,行进方向为右。并定义2维数组screengrid[row][col],该数组的作用是产生食物用。蛇开始移动的坐标是哦(2,2)。然后绘制围墙横的围墙用一排“=”显示,纵的围墙用一列“||”显示,这样游戏的框架就出来了,初始化游戏分数,并显示游戏的一些帮助,如按键设置等。

游戏初始化,包括蛇的初始长度,蛇初始行进的方向,游戏区域的显示。

游戏加载完成后,效果如图604.1所示

图604.1贪吃蛇的初始化

604.2食物随机产生的实现

对于前面提到过的一个二维数组screengrid[row][col]这里要用到。用rand()函数生成2个随机生成的整数作为食物的横坐标和纵坐标,并判断食物是否出去围墙,如果在游戏区域外面,则对随机生成的横纵坐标进行修改。然后移动光标到此处坐标进行输入“*”操作。(用“*”代表食物)这里的c和r会在判断蛇头是否碰到食物用到。这里要应用到time.h这个头文件,用于产生随机数。

食物随机产生,如图602.2所示

图604.2随机食物产生

604.3蛇身的增长设计

对于蛇身增长的设计要考虑到蛇头的运行方向。如果蛇头向右行进,新增加的蛇身横坐标不变,纵坐标增加1;如果蛇头向左行进,新增加的蛇身横坐标不变,纵坐标减1;如果蛇头向上行进,新增加的蛇身纵坐标不变横坐标减1;如果蛇头向下行进,新增加的蛇身纵坐标不变横坐标加1.

604.4蛇身的显示与移动的设计实现

对于蛇身的显示属于本程序设计的难点之一,因为蛇身是一个运动的物体,每个时刻的某一节所在的位置是变化的。就像一个动画过程,需要每隔一个固定的时间,对蛇进行显示一次,并将蛇尾部的一节消掉,使蛇头向前增进一节。这是一个动态的过程,当然设置的固定显示蛇身时间是能让人眼来得及反应的时间,也就是不能太快,否则在人看到就是频闪的一串了。其中addsegment()这个函数是用来为蛇头的前移赋值的。

604.5蛇的头部与物体的碰撞的设计实现

对于蛇的头部与物体碰撞的检测同样属于本程序设计的难点。

1、首先来关注蛇的额头不与游戏区域围墙的碰撞检测。如果检测到有碰撞,则游戏结束;否则游戏正常运行。这个是通过判断蛇的头部的横、纵坐标是否超过设定的额最大的界限或是低于最小的下限来判断的

如图604.5.1所示为碰壁情况

图604.5.1为碰壁情况

2、其次,考虑蛇的头部是否与自己身体的某个部位产生的碰壁检测。

如果检测到有碰壁,则游戏结束;否则游戏正常运行。这个是通过

一个循环将蛇的头部的横、纵坐标值与每节蛇身(处蛇头外)知道

蛇的尾部的横、纵坐标值与蛇的头部的横、纵值一致,则游戏结束;

否则游戏正常运行。

如图604.5.2所示为蛇碰到自身的情况,蛇头与距蛇尾长度一致的蛇身处相撞。

图604.5.2蛇碰到自身的情况

3、最后,就是蛇的头部是否与食物碰撞的检测了。如果检测到没有碰

到则游戏正常运行;否则首先将二维数组screengrid[row][col]里有食物的那个数据元素清空,以便生成下一个食物。然后在游戏区域再随机产生一个食物,分数和蛇的长度分别增加1,最后在游戏区域下方显示分数。这里是通过令蛇的头部的横、纵坐标与先前产生食物时设置的2个变量进行比较判断的,这2个变量分别是r,c(r表示食物的横坐标,c表示食物的纵坐标),如果2者分别相等,则成功吞掉食物;否则游戏继续进行。

如图604.5.3所示为将要碰到食物的情况,食物用“*”表示

图604.5.3蛇碰到食物的情况

结论

通过理论与实践的完美结合,我的贪吃蛇游戏成功的编制完成了。虽然所编写的而这个游戏很简单,又因为自己能力有限,游戏画面相当粗糙,没有经过美化的界面美感就谈不上了,只能用简陋形容了。但是值得骄傲的是整个游戏的编写是自己亲手,并且依靠自己的智慧独立完成的。在编写游戏过程中,遇到了许多难题,例如,蛇的头部与食物的检测问题,蛇的移动与显示问题,蛇的转向问题,食物的随机生成问题等等,这些个难题摆在面前,让人实在有些招架不住。经过查阅大量的文献资料阅读相关书籍,最后决定了采用分治算法的思想来对摆在面前的问题一一击破。在解决的是蛇的移动与显示问题的时候,通过大量的研究、实验与调试,试验过多种移动与显示的方法,最后决定了一种简单易用的算法。解决难题的时候,仿佛是拨了一层云,又见一层云,但是日光也越来越闪耀了,最终看到了阳光,取得了成功。自己感觉通过这次学习研究,自己受益匪浅。不仅自己揭开了游戏程序神秘的面纱,而且在实际的程序编写与调试过程中,自己成长了不少,实战的能力提高了不少。万丈高楼平地起,能够编写复杂的游戏都是在编写简单的游戏基础上演变过来的能力。然而像贪吃蛇这样的简单游戏,就自然成了设计者的入门之选,因为其界面简单,操作、玩法一目了然,所以编写起来就不会很困难,而且需要考虑的问题也不用太多,就是蛇的显示、移动、碰撞3个游戏的主块,攻破这3个主块,程序就自然编写出来了,不会一开始就把游戏设计初学者拒之门外。编成之后就感觉就会油然而生,并使之对游戏设计产生强烈的兴趣。成为向游戏设计之路成功迈进的第一步,同时对于VC++的运用水平也会上升,用起来会更加娴熟、得心应手。从易到难这是哟个准则,总之,贪吃蛇小游戏的研究会对增长程序阅读能力、程序编写能力等起到了意想不到的作用。当然,自己的程序不足之处到处都是,譬如可以讲画面设计的美观一点,可以设置一下游戏的难度,可以令算法的执行效率再高一点并不满足编写出来就行。字啊以后漫漫的研究学习道路上,我还有很远的璐要走,迎接我的是一个严峻的挑战。

参考文献

1.《C语言程序设计》. 朱立华王立柱. 人民邮电出版社。

2.《C语言程序开发—范例宝典》. 王娣安剑孙秀梅. 人民邮电出版社。

3.《数据结构》. 姜梅赵坚. 中国水利水电出版社

4.《高级语言C++程序设计》. 刘璟周玉龙. 高等教育出版社

5.《C++实战操作100例》. 蒋卫华李伟华. 清华大学出版社

6.《游戏设计基础》. Emest Adams . 机械工业出版社

7.《游戏设计概论》. 潜龙. 科学出版社

————致谢

2012.6

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语言贪吃蛇课程设计报 告 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语言课程设计--贪吃蛇游戏

课程设计报告 课程名称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语言课程设计经典例题贪吃蛇

源代码,完美运行。结尾附图 #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语言)

#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语言贪吃蛇课程设计报告

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语言贪吃蛇小游戏程序课程设计

学生课程设计报告

一、课程设计内容 贪吃蛇小游戏程序设计 (贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记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表示食物被吃了

贪吃蛇游戏课程设计报告

贪吃蛇游戏程序设计 一、课程设计任务 贪吃蛇小游戏程序设计 二、设计要求 通过游戏程序设计,提高编程兴趣与编程思路,巩固C语言中所学的知识,合理的运用资料,实现理论与实际相结合。 (1).收集资料,分析课题,分解问题,形成总体设计思路; (2).对于设计中用到的关键函数,要学会通过查资料,弄懂其用法,要联系问题进行具体介绍; (3).上机调试,查错,逐步分析不能正常运行的原因,确保所设计的程序正确,并且能正常运行; (4).完成课程设计报告,并进行答辩 三、需求分析 3.1、程序功能 贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。 3.2、设计思想 程序关键在于表示蛇的图形及蛇的移动。用一个小矩形快表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用俩节表示。移动时必须从蛇头开始,所以蛇不能向相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,但按下有效方向键后,蛇头朝着该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇

的身体随蛇头移动,图形的实现是从蛇头新位置开始画出蛇,这时,由于未清屏的原因,原来的蛇的位置和新蛇的位置差一个单位,所以看起来蛇多一节身体,所以将蛇的最后一节用背景色覆盖。食物的出现与消失也是画矩形块和覆盖矩形块。为了便于理解,定义两个结构体:食物与蛇。 3.3、流程图

四、设计的具体实现 (1)函数定义 函数定义是对各个基础函数的定义,并且设置需要运用的信息,便于调用 #define N 200 #define M 200 #include"graphics.h" #include #include #include #include #include #include #include #define LEFT 97//A #define RIGHT 100//D #define DOWN 115//S #define UP 119//W #define Esc 0x011b int i,key; int score=0; int gamespeed=250;//游戏速度可根据实际情况自行调整 struct Food { int x;//食物的横坐标 int y;//食物的纵坐标 int yes;//判断是否要出现食物的变量}food;//食物的结构体 struct Snake { int x[M]; int y[M]; int node;//蛇的节数 int direction;//蛇的移动方向 int life;//蛇的生命,0表示活着,1表示死亡 }snake; void Init();//图形驱动 void Close();//图形结束 void DrawK();//开始画面 void GamePlay();//玩游戏的具体过程void GameOver();//游戏结束 void PrScore();//输出成绩 (2)主函数main( ) 主函数是程序的主流程,首先定义使用到的常数、全局变量及函数原型说明,然后初始化图形系统,调用函数DrawK()画出开始画面,调用函数GamePlay(),即玩游戏的具体过程,游戏结束后调用Close()关闭图形系统,结束程序 void main()//主函数 { Init();//图形驱动 DrawK();//开始画面

相关主题