好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

C语言课程设计报告——贪吃蛇源程序之令狐文艳创作.docx

16页
  • 卖家[上传人]:碎****木
  • 文档编号:234605728
  • 上传时间:2022-01-04
  • 文档格式:DOCX
  • 文档大小:1.55MB
  • / 16 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 令狐文艳C 语 言 课程设计令狐文艳(小游戏贪吃蛇的程序设计报告)设计人: 班级:201 年 月 号令狐文艳目 录一:概述1:研究背景及意义2:设计的任务与需要知识点3:具体完成设计内容二:需求分析1:功能需求2:操作方法三:总体设计1:模块划分2:数据结构设计四:详细设计1:主空摸块设计2:绘制游戏界面3:游戏的具体过程4:游戏的结束处理5:显示排行榜信息模块五:程序的调试与测试1:动画与音乐同步2:蛇的运行3:终止程序六:结论 七::结束语八:程序清单九:参考文献令狐文艳一. 概述本课程设计以软件工程方法为指导,采用了结构化,模块化的程序设计方法,以C语言技术为基础,使用TurboC++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) 文件的基本出操作令狐文艳18).3结构具化,体模块完化的成设计的方法设计内容在本次课程设计中需要完成的任务有:包含命令,全局变量的定义和宏定义,函数声明 等(50行),主控模块(MAIN函数,14行),动画,音乐播放模块(DRAWSNOW函数,33行),画出游戏开始界面模块,具体游戏过程模块,游戏结束处理模块开发中工作二量约为.需215行求源代码分 析贪吃蛇游戏是个简单的小游戏,能让游戏者的身心得到娱乐,从而能够更好地投入到学习或工作当中。

      虽然现在市面上出来这各种各样的游戏版本,可是贪吃蛇这类的小游戏其市场还是相当大的,因为它玩法简单易行,不论是,还是小游戏机,都能很顺利的运行对于在外忙碌的人,不可能花费大量时间在娱乐上,大型游戏是行不通的,这样2的.1小功游戏能刚好的迎合需了他求们的需求要开发贪吃蛇游戏程序,首先要分析改程序应实现哪些功能对贪吃蛇游戏程序的功能需求可描述如下:程序运行后显示动画,音乐,按ESC键退出游戏界面后,左边有一个矩形区,外游戏区域,在矩形区中有食物和贪食蛇,上方有统计分数及关数显示区域蛇在封闭围墙利用绿色矩形表示,围墙里随机的出现一个食物,通过按键盘四个光标键 控制蛇向上,下,左右四个方向移动,蛇头撞到食物,则食物被吃掉,蛇身体长一节, 接着又出现食物,等待蛇来吃食物用一个点表示,并且每次食物的位置都是随机出现 的游戏中要使贪吃蛇尽可能的长,但是不能使贪吃蛇撞到四周的墙壁,而且蛇的身体 不能撞到一起,否则游戏结束游戏中每吃掉一个食物要有积分,随着分数的增加可进 入下一关,即使速度会加快游戏结束时,如果分数进入前5名则重新排榜并存储显示排行榜由于有关贪吃蛇和食物的数据较多,而且关系密切,贪吃蛇及食物都是定义结 构2体.2数据操类型作,这方样定法义便于操作与处理。

      2.2.1. 进入游戏2.2.2. 游戏界面2.2.3. 游戏操作三2.2.4.游总戏结束体设计确定贪吃蛇游戏体系结构,给出总体模块结构图,确定程序的主要函数及之间的调用关 系3,.1同时模设计块蛇与划游戏分者等的数据结构本程序采用结构化程序设计的方法,按照自顶向下,逐步细化的方法对要解决的问题进 行逐层分解首先画出顶层模块,即主控模块,之完成对下层模块的调用功能,即调用 其他的功能模块;接着,按需求分析中的功能需求设计第一层模块,有音乐动画,图形 驱动,画主界面,游戏过程,结束处理,退出等第6个主要功能;接着,画出第二层模块总体模块结构如图6-1所示主 控 模 板动画音乐3.1.1. 主控模块图形驱动画主界面游戏过程结束处理 退3.1.2. 动画音乐模块3.1.3. 画主界面模块3.1.4. 游戏过程模块3.1.5. 游戏结束处理模块3.1.6. 读取记录模块3.1.7. 成绩排序模块3.1.8. 写入文件模块3.1.9. 排行榜模块读取记录成绩排序写入文出件 排行榜33.1..120. 退总出体数据结构设计设计思路:测序的关键在于表示蛇的图形及蛇的移动用一个小局限性方块表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头业用同样的一节小矩形方块表示移动时必须从蛇可以上向前爬行,档案下有效方向键后,应先确定蛇头的位置,而后蛇的身体虽蛇头移动,图形的实现是从身体新位置开始画出蛇。

      这时,由于未清屏的原因,原来的蛇的位置和新蛇的位置差一节蛇身,即看起来蛇多一节身体,所以将蛇的最后一节用背景色覆盖食物的出现与消失意识画矩形块和覆盖矩形块为了便于理解,定义两个结构体:食物与蛇下面介绍贪吃蛇游戏程序的主要数据结构3.2.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表示当前节数DIRECTI ON是保存蛇的移动方向的变量,其值可为1、2、3、4之一,分别表示右、左、上、下的 方向LIFE是表示生命的变量,LIFE=0表示蛇活着,一旦LIFE=1,一旦LIFE=1,表示蛇死,结束游戏define N 200 Struct Food{ int x; int y;Int yes;}food;Struct Snake{ int x[N];Int y[N];Int node;Int derection;Int life;}snake;3.2.2 排行榜中优胜者的数据结构排行榜主要记录优胜者的姓名和成绩。

      为了存放排行榜信息,可定义如下的结构体类型,其中字符数组name成员存放优胜者的姓名,整型变量score成员存放优胜者的成绩Struct person{ char name[20];Int score;};3.2.3 其他全局变量的定义Struct person per[5];Int score=0;Int gamespeed=400;3.2.4 符号常量的宏定义#define LEFT 0x4b00; #define RIGHT 0x4d00; #define DOWN 0x5000; #define UP 0x4800 #define ESC 0x011b#四defin.e FI详LENA细ME 设计4.1 主控模块main函数根据总体设计的模块功能和结构,完成所承担的程序模块的算法设计给出每个模块的详细的算法,算法分别用传统流程图和文字说明来描述主函数是程序的主控模块首先初始化图形系统,然后使用drawsnow函数播放动画 和声音,接着调用init函数初始化图形系统,之后调用drawk函数画出游戏开始画面,在调用gameplay函数,即开始了游戏的具体过程,游戏结束后调用endplay函数进行游戏结束令狐文艳处理;从文件中读取记录信息,排序,显示排行榜信息,最后关闭图形系统,结束程序。

      主控模块的流程图如图6-2所示其中带有两个竖线的矩形框表示对自定义函数的调用开始初始化图形系统播放动画音乐余下流程图在下页初始化图形系统画游戏开始界面游戏具体过程游戏结束处理关闭图形系统4.2 绘制游戏开结始束界面drawk函数绘制游戏界面的函数的算法流程图如图6-3所示主界面就是一个封闭的围墙,用两个循环语句分别在水平方向和垂直方向输出连续 的宽度和高的均为10个像素单位的距行小方块,围成封闭图形表示围墙,为了醒目,设 置为淡青色,用函数setlinestyle设直线型宽度为3个像素,设置3个像素的围墙线,最后的表头在界面的左上部输出游戏程序的版本信息,在右上部输出游戏成绩(score)和关(level)4.3 游戏具体过程gameplay函数该函数是游戏的核心部分游戏具体过程gameplay函数的大致算法流程图如图6- 4所示开 始初始化未按键随即确定食物为食物质优食物标志有食物画食物输出成绩和关数输出蛇位置确定蛇头位置窗蛇身,蛇死蛇撞墙令狐文艳下面对该算法不够详细的地方作进一步的描述令狐文艳置蛇死标志蛇死吃到物吃后处理循环画蛇延迟10秒除蛇尾,增节蛇死接受按键 keykey=ESC令狐文艳4.3.1 初始化由按键判蛇的位置为防止食物总是出现在一个位结置上束,要设置随机数发生器的种子数,产生真正的随机数。

      由于还没有画出食物,并设置需要食物,并设置蛇活着初始时,蛇只有蛇头和1节蛇尾,设置这2节坐标设定蛇开始的爬行方向左右4.3.2 随机确定食物位置由于蛇吃到食物的判断是蛇头的坐标和食物的坐标相等,所以要确保食物出现的位置在1 0的倍数位置上先用两个带随机函数的表达式产生一个位于围墙内的x、y坐标,然后用两个while循环将两个坐标值调整到10的倍数上,这样就可以让蛇吃到4.3.3 循环确定蛇身的新坐标这里的难点是表示蛇的新位置并消除前一次的图形采用的方法是每次移动的时候从最后一节开始到第二节,将前一节的坐标值赋给后一节。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.