C语言课程设计报告

上传人:gao****ang 文档编号:199131565 上传时间:2023-04-10 格式:DOCX 页数:16 大小:434.74KB
收藏 版权申诉 举报 下载
C语言课程设计报告_第1页
第1页 / 共16页
C语言课程设计报告_第2页
第2页 / 共16页
C语言课程设计报告_第3页
第3页 / 共16页
资源描述:

《C语言课程设计报告》由会员分享,可在线阅读,更多相关《C语言课程设计报告(16页珍藏版)》请在装配图网上搜索。

1、C 语 言 课程设计之袁州冬雪创作(小游戏贪吃蛇的程序设计陈述)设计人:班级:201 年 代 号目录一:概述1:研究布景及意义 2:设计的任务与需要知识点 3:详细完成设计内容 二:需求分析1:功能需求2:操纵方法三:总体设计1:模块划分2:数据布局设计四:详细设计1:主空摸块设计2:绘制游戏界面3:游戏的详细过程4:游戏的竣事处理5:显示排行榜信息模块五:程序的调试与测试1:动画与音乐同步2:蛇的运行3:终止程序六:结论七:竣事语八:程序清单九:参考文献概述本课程设计以软件工程方法为指导,采取了布局化,模块化的程序设计方法,以C语言技 术为基础,使用TurboC+3.0为主要开辟工具,对贪吃

2、蛇游戏停止了需求分析,总体设计,详细设计,最终完成系1统.1的实研现与究测试的. 布景及意义随着社会的发展,人们生活的节拍日益加快,越来越多的人加入了全球化的世界.人们不再 拘泥与一小块天地,加班,出差成了现代人不成防止的公务.而此时一款可以随时随地娱乐 的游戏成为了人们的需要.此次课程设计完成的贪吃蛇小游戏,正是为了知足上述需求而设 计出来的.贪吃蛇游戏虽小,却设计诸多的知识点.通过开辟贪吃蛇游戏系统,可以使读者初 步懂得使用软件工程的和阿谁发,技术和工具开辟软件的过程,进一步掌握布局化,模块 化的程序设计方法和步调,进一步掌握总体数据布局设计,模块划分方法,掌握部分变量 ,全局变量,布局体

3、,共用体,数组,指针,文件等数据布局的使用方法,掌握图形,声 音,随机数等多种库函数的使用方法,学习动画,音乐,窗口,菜单,键盘等多项编程技 术,进一步学会软件调试,测试,组装等软件测试方法,为后续课程的学习和将来实际软 件1开.2辟打设下坚计实的的基础任. 务和需要的知识点1.2.1 课程设计主要完成的任务1). 通过编写“贪吃蛇游戏”程序,掌握布局化,模块块化程序设计的思想,培养处理实际问题 的才能.2)有同步播放动画,声音效果.3)设计好数组元素与蛇,食物的对应关系.4)随机发生食物.5)有分数统计,排行榜,分数存储等功能.通过此次课程设计,希望使读者能更深入的懂得和掌握课程讲授中的基本

4、概念,培养读者 应用基本技术处理实际问题的才能,从而进一步提高分析问题和处理问题的才能.1.2.3 本次课程设计需要掌握和运用如下的知识点:1)数组的应用.2)全局变量的使用.3)按键处理.4)布局体的应用.5 )图形,音乐和动画的有关知识.6)随即函数的使用.7)文件的基本出操纵.8)布局化,模块化的设计方法.在本次课程设计中需要完成的任务有:包含饬令,全局变量的定义和宏定义,函数声明等(50行),主控模块(MAIN函数,14行),动画,音乐播放模块(DRAWSNOW函数,3 3行),画出游戏开端界面模块,详细游戏过程模块,游戏竣事处理模块.开辟中工作量约 为二215行.源需代码求. 分析

5、贪吃蛇游戏是个简单的小游戏,能让游戏者的身心得到娱乐,从而可以更好地投入到学习 或工作当中.虽然现在市面上出来这各种各样的游戏版本,可是贪吃蛇这类的小游戏其市场 还是相当大的,因为它玩法简单易行,不管是手机,还是小游戏机,都能很顺利的运行.对于在外繁忙的人,不成能花费大量时间在娱乐上,大型游戏是行欠亨的,这样的小游戏刚 好迎合了他们的需求.要开辟贪吃蛇游戏程序,首先要分析改程序应实现哪些功能.对贪吃蛇游戏程序的功能需求 可描绘如下:程序运行后显示动画,音乐,按ESC键退出游戏界面后,左边有一个矩形区,外游戏区域 ,在矩形区中有食物和贪食蛇,上方有统计分数及关数显示区域.蛇在封闭围墙操纵绿色矩形

6、暗示,围墙里随机的出现一个食物,通过按键盘四个光标键节 制蛇向上,下,左右四个方向移动,蛇头撞到食物,则食物被吃掉,蛇身体长一节,接着 又出现食物,等待蛇来吃.食物用一个点暗示,而且每次食物的位置都是随机出现的.游戏中 要使贪吃蛇尽可以的长,但是不克不及使贪吃蛇撞到四周的墙壁,而且蛇的身体不克不及 撞到一起,否则游戏竣事.游戏中每吃掉一个食物要有积分,随着分数的增加可进入下一关 ,即使速度会加快.游戏竣事时,如果分数进入前5名则重新排榜并存储.显示排行榜.由于有 关贪吃蛇和食物的数据较多,而且关系紧密亲密,贪吃蛇及食物都是定义布局体数据类型 ,2这.2样定操义便纵于操方纵与法处理.总体设计确定

7、贪吃蛇游戏体系布局,给出总体模块布局图,确定程序的主要函数及之间的调用关系本程序采取布局化程序设计的方法,依照自顶向下,逐步细化的方法对要处理的问题停止 逐层分解.首先画出顶层模块,即主控模块,之完成对下层模块的调用功能,即调用其他的 功能模块;接着,按需求分析中的功能需求设计第一层模块,有音乐动画,图形驱动,画 主界面,游戏过程,竣事处理,退出等第6个主要功能;接着,画出第二层模块.总体模块 布局如图6-1所示.主 控模板音乐 控模块.动画3.1.1.3.1.2. 动画音乐模块3.1.3. 画主界面模块3.1.4. 游戏过程 3.1.5. 游戏竣事处理模块3.1.6. 读取记录模块3.1.7

8、. 成绩排序模块3.1.8. 写入文件模块3.1.9. 排行榜模块33.1. 120.退总出 体数据布局设计图形驱动画主界面游戏过程读取记录成竣事处理绩排序行榜设计思路:测序的关键在于暗示蛇的图形及蛇的移动.用一个小局限性方块暗示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头业用同样的一节小矩形方块暗示移动时必须从 蛇可以上向前匍匐,档案下有效方向键后,应先确定蛇头的位置,而后蛇的身体虽蛇头移 动,图形的实现是从身体新位置开端画出蛇.这时,由于未清屏的原因,原来的蛇的位置和 新蛇的位置差一节蛇身,即看起来蛇多一节身体,所以将蛇的最后一节用布风光覆盖.食物 的出现与消失意识画矩形块和覆盖矩形块

9、.为了便于懂得,定义两个布局体:食物与蛇.下面 先容贪吃蛇游戏程序的主要数据布局.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)由于在游戏过程中蛇的身体不竭增长,需 用数组存放

10、每节坐标,最大设定为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 xN;Int yN;Int node;Int derection;Int life;snake;3.2.2 排行榜中优胜者的数据布局排行榜主要记录优胜者的姓名和成绩.为了存放排行榜信息,可定义如

11、下的布局体类型,其中字符数组name成员存放优胜者的姓名,整型变量score成员存放优胜者的成绩.Struct person char name20;Int score;3.2.3 其他全局变量的定义Struct person per5;Int score=0;Int gamespeed=400;3.2.4 符号常量的宏定义#define LEFT 0x4b00;#define RIGHT 0x4d00;#define DOWN 0x5000;#define UP 0x4800#define ESC 0x011bBe F详细设计根据总体设计的模块功能和布局,完成所承担的程序模块的算法设计.给出

12、每个模块的详细的算1 去,主控模传块程图和文函数描绘主函数是程序的主控模块首先初始化图形系统,然后使用drawsnow函数播放动画和声 音,接着调用i nit函数初始化图形系统,之后调用drawk函数画出游戏开端画面,在调用ga mepla y函数,即开端了游戏的详细过程,游戏竣事后调用endpla y函数停止游戏竣事处理; 从文件中读取记录信息,排序,显示排行榜信息,最后关闭图形系统,竣事程序.主控模块 的流程图如图6-2所示.其中带有两个竖线的矩形框暗示对自定义函数的调用.开端初始化图形系统播放动画音乐初始化图形系统余下流程图在下页画游戏开端界面游戏详细过程 游戏竣事处理关闭图形系统4.2

13、绘制游戏开端界面drawk函数绘制游戏界面的函数的算法流程图如图6-3所示.主界面就是一个封闭的围墙,用两个循环语句分别在水平方向和垂直方向输出持续的 宽度和高的均为10个像素单位的距行小方块,围成封闭图形暗示围墙,为了醒目,设置为 淡青色,用函数setlinestyle设直线型宽度为3个像素,设置3个像素的围墙线,最后,在界 面呼上游戏详细过程gamep出游函数c ore)和关(level )的表头.该函数是游戏的核心部分.游戏详细过程gamepla y函数的大致算法流程图如图6-4所示.4.3.1初始化蛇撞墙置蛇死标记蛇死吃到物吃后处理延迟10秒 除蛇尾增节循环画蛇承受按键1 key蛇死k

14、ey=ESC由按键判蛇的位置V为防止食物总是出现在一个位置上束要设置随机数发生器的种子数,发生真正的随机数 于还没有画出食物,并设置需要食物;并设置蛇活着.初始时,蛇只有蛇头和1节蛇尾,设 置这2节坐标.设定蛇开端的匍匐方向左右.-4.3.2随机确定食物位置由于蛇吃到食物的断定是蛇头的坐标和食物的坐标相等,所以要确保食物出现的位置在1 的倍数位置上先用两个带随机函数的表达式发生一个位于围墙内的x、y坐标,然后用两, while循环将两个坐标值调整到10的倍数上,这样便可让蛇吃到.4.3.3循环确定蛇身的新坐标这里的难点是暗示蛇的新位置并消除前一次的图形.采取的方法是每次移动的时候从最后一节开端

15、到第二节,将前一节的坐标值赋给后一节的坐标,移动后只要把最后一节用布风光 擦出即可,因为新位置0到n-1节还是要出现在画面上的.这里用一个for循环来确定蛇身的新坐标.4.3.4 吃到食物后的处理蛇吃到食物后,首先将食物擦除,即用布风光画出该食物,然后给蛇的节数加1,设置需要4食.3物.5标有记按,是键游断戏定成绩蛇加的10方分,向如果成绩达到50分的倍数,则给关数加1,并加快游戏速度.这是一个内嵌的嵌套的条件选择布局,根据安东上下左右键来设定蛇的移动方向.其中1=向 右, 2=向左, 3=向上, 4=向下.断定是还思索相反的方向键无效,比方蛇正在向上匍匐,按 下一键方向是无效的.4.4游戏的

16、竣事处理木块ENDPLAY函数游戏竣事时,应该用ENDPLAY函数停止游戏竣事处理,其算法流程图如图6-5所示其次,断定游戏者的成绩是否可以上排行榜.如果可以上榜,则画出淡蓝色矩形界面,在界 面中输入游戏者姓名,对成绩停止赋值,然后调用 CompareScore 函数对记录排序,并调用 Writefiles 函数将记录写入排行榜帮文件;如果不克不及上榜,则直接在游戏界面输出不克不及上榜 信息.最后,调用 pain_board 函数显示排行榜信息.五oid程序完的调试与测试调试与测试软件的方针就是发现并改正潜伏的错误.一个程序,必须颠末认真的调试和测试 ,才干尽可以减少错误、包管程序知足功能、性

17、能需求,达到最初的设计、使用要求,从 而包管程序的开辟质量.详细设计完成后,便可以用C语言根据各个模块的算法来设计程序,每个模块都要设 计成一个自定义函数.几个模块可以放在一起构成一个原函数程序文件,也可以一个模块构 成一个源程序文件.原程序设计好后,输入到计算机中,并存储到磁盘上;然后对每个源程 序文件都停止了独立编译和调试(详细代码可以参看程序清单);并针对分歧的模块程序 设计测试用例停止单元测试;最后,将几个分别开辟的模块组装在一起,形成一个完整的 程序,停止集成测试,从而发现并改正了程序程序中存在的一些潜藏的错误,并使程序的预期成果:片头在显示动画得同时播放音乐;按任意键后进入游戏主界

18、面;进 入游戏主界面后动画音乐同时停止.实际运行效果:知足和,不知足,即进入游戏后仍然播放片头音乐.错误分析:程序中使用循环播放动画,并在其循环体中拔出发声函数以达到音乐和动 画的同步.由于在竣事动画时没有关闭扬声器,所以进入游戏界面后仍然发声.修改:在动画播放完后加一条“nosound (); ”语句将扬声器关闭,问题得到处理.修改后程序运行的实际效果与预期效果一致.5.2.1蛇撞到墙预期成果:蛇运行时如果撞到墙壁,则游戏竣事.实际运效果:超出左右墙壁后程序竣事,但超出上面墙壁后仍然运行,如图6-9所示. 错误分析:错误程序段在蛇运行中的条件断定语句中,其断定条件是:if (snake.x0

19、v55ll snake.x0595),即少了上、下两个方向的断定.修改:在蛇的运行过程中添加两个逻辑表达式,断定蛇是否闯到上下的围墙代码:If( snake.x0v55ll snake.x0595ll snake.y0v55ll snake.y0455)修改后的程序运行成果与预期的成果一致.5.2.2蛇头闯到蛇身错误分析:在蛇的运行断定的程序出错,其代码如下Fori=3;ivsnake.node;i+) if(snake.xi=snake.xO&snake.yi=snake.yO)snake.life=O;break;修改:将循环体中的snake.life=0改为snake.life=l ;颠

20、末对各个模块的调试和单元测试并修改了错误后,将各个模块组装成一个系统,并停止 集成测试在集成的过程中发现了一些错误,比方全局变量重复定义、函数重复声明等,分 别停止了改正最后持续运行了 5次,以便测试该游戏程序的功能、性能是否达到了预期的 方针,并根据所使用的详细机器对蛇的匍匐速度停止适当的调整测试内容包含蛇的运行、 分数、关数、排行榜及排序、文件存储、音乐动画等功能,情况均正常通过2周的课程设计,在开辟小组共同的尽力下,终于完成了贪吃蛇游戏程序的开辟任 务该游戏程序实现了用方向键节制蛇在围墙内匍匐、随机发生食物、节制蛇吃掉食物并加 分、节制游戏中闯关的数目和蛇的运行速度、实时显示得分和关数、

21、竣事时处理和显示排 行榜等功能该游戏程序具有界面友好、操纵方便、节制准确和容错才能强等特点这个贪吃蛇游戏还存在一些缺陷,还应该在如下几个方面加以改进1)进入游戏后,到蛇死亡,只能玩一次就会退出程序应加入多次游戏的节制才能.2)蛇的样子不雅观,应将蛇头、蛇尾和蛇身进一步丑化,使其更像真实的蛇3)当分数达至到400分时,蛇的速度变得非常快,一下子就撞到围墙上了,应适当节制 蛇的速度和关数,以便使游戏更具有吸引力.贪吃蛇游戏的编程操练思考数据布局:定义食物的坐标来节制它出现的位置,用一系列的函 数时停止暗示,比方用函数rectangle来画出矩形,用life变量的值暗示蛇的生命,用direction

22、 变量的值暗示蛇移动的方向等,还有用数组来存放蛇身各节的坐标,这些都让我们熟悉了 对数组的操纵,此外还熟悉了各种函数的应用.贪吃蛇的设计有很多帮忙,学习编写贪吃蛇的游戏对掌握C语言的知识有很大的帮忙通过 编程实践,还能拓展思路,让我们去寻找需要调用那些函数,怎样提高程序的质量等.要写出好的程序,需要我们有扎实的基础,这样遇到一些基本算法的时候就会游刃有余了 在编程时我们要有丰富的想象力,不要拘泥与固定的思维方式,遇到问题的时侯要多想几 种处理问题的方案丰富的想象力是建立在丰富的知识基础上,所以我们要通过多个途径来 帮忙自己建立较丰富的知识布局.在编程是我们碰倒了很多的坚苦,这就需要我们多与他人

23、交流在编程的过程中,我们 也发现有杰出的编程风格是十分重要的,至少在时间效率上就体现了这一点养成杰出的习 惯,代码的缩进编排,变量的定名规则要始终坚持一致,这些都是提高我们编程才能的要 占八、在停止课程设计的过程中我们也学到了许多此外东西.首先,我们学会了合作,要以他人的 眼光看看问题,也许这样得到的会比各自得到的都要多;其次,我们学会了分工,分工是 为了更好地合作,分工才干提高合作的效率;最后,我们学会了奋斗,我们相信,通过四 年的学习,我们一定能写出更出色的程序,将来会描画出更出色的人生.在这里,我们要感谢指导课程设计的张凤君教师,给予我们悉心的指导.教师多次询问 编写过程,并为我们指点迷

24、津,帮忙我们开辟研究思路,精心点拨、热心鼓励教师一丝不 苟的工作作风,严谨求实的态度,踏踏实实的精力,不但受我以文,而且教我做人,给以 终生受益无穷之道.我还要感谢我们开辟小组的其他同学,在设计中他们给我很大的帮忙.正 是八由于我程们团结序协作,清才顺利单的完成了课程设计任务./*贪吃蛇游戏程序清单*/#include#include#include#include#include#include#include#include#define filename c:person.dat /*排行榜文件的文件全名 */#define esc 0x011b /*esc*/#define n 200

25、 /*蛇的最大节数*/#define left 0x4b00 /*左移方向键*/#define right 0x4d00 /*右移放向键*/#define down 0x5000 /*下移方向键*/#define up 0x4800 /*上移方向键*/*排行榜布局体*/struct personint score;/*游戏者分数*/char name20; /*游戏者姓名*/per5;/*小蘑菇布局体*/* 自定义的函数声明*/void drawmogu(); /*动画音乐函数*/void readfiles(); /*从文件中读取记录信息*/void writefiles(struct pe

26、rson *) ; /*将纪录写入文件中*/void initscorefiles();/*初始化记录文件*/void comparescore(struct person); /*排行榜按分数停止排序*/ void endplay(); /*游戏竣事处理函数*/ void paihb(); /*绘制排行榜函数*/ /*输出欢迎词并播放声音函数*/void pr() int s15=0,100,150,200,250,300,250,150,100,250,350;setcolor(change/10);/* 改变欢迎词颜色 */settextstyle(0,0,4);outtextxy(20

27、,200,WELCOME TO OUR GAME);/*输出欢迎词*/ sound(schange/10);/*使扬声器以括号内的频率发声*/*下雪的动画并同步播放音乐函数*/void DrawSnow() int i;int sx62;selinestyle(SOLID_LINE,0,THICK_WIDTH);line(1,1,9,9);/*次3行画出白色雪花的3条线*/line(0,5,10,5);line(9,1,1,9); save=malloc(200);/*在堆中申请200字节空间*/ getimage (0,0,10,10, save);/*将雪花位图保管到save中*/ cle

28、ardevice();/* 清屏 */randomize。;/*设置随机种子数*/for(i=0;i62;i+) sxi=(i+2)*10/*计算雪花位置的横坐标数组*/*以下的键控while循环节制播放音乐和下雪动画*/ while(!kbhit()/*如果未按键,执行循环体*/ Pr();/*调用Pr函数输出欢迎词并播放声音*/ if(snownum!=100)snowsnownum.speed=2+random(5);i=random(62);snowsnownum.x=sxi;/* 取横坐标 */snowsnownum.y=10-random(100);/*取 纵坐标 */*循环放置s

29、nownu m个雪花*/for(i=0;i500)snowi.y=10-random(200);change+;if(change=140) change=10;nosound(); /*关闭扬声器*/ cleardevice();/* 清屏 */*图像系统初始化函数*/void init(void) int gd=DETECT,gm;initgraph(&gd,&gm,c:tc3BGI); cleardevice(); /*清屏*/*游戏开端界面,左上角坐标为(50, 40),右下角坐标(610, 460)的围墙*/ void drawk(void)int i; setcolor(BLUE)

30、; setlinestyle(SOLID_LINE,0,THICK_WIDTH); /*设置线性 */ for(i=50;i=600;i+=10) /*用循环画围墙*/setcolor(2*i+1);circle(i,40,5); /*画上边 */ circle(i,451,5);circle(i,460,5); /*画下边 */ for(i=40;i=450;i+=10)setcolor(2*i+1);circle(50,i,5); /*画左边 */ circle(601,i,5); for(i=40;i0;i-)snake.xi=snake.xi-1; snake.yi=snake.yi-

31、1;/*1、 2 、 3 、 4暗示右、左、上、下四个方向,通过这个断定来移动蛇头*/ switch(snake.direction)case 1:snake.x0+=10;break;case 2:snake.x0-=10;break;case 3:snake.y0-=10;break;case 4:snake.y0+=10;break; /*断定蛇是否撞到墙*/ if(snake.x0595|snake.y0445)snake.life=1; /*置蛇死标记 */break; /*从蛇的第四节开端断定是否撞到自己,*/ for(i=3;isnake.node;i+) if(snake.xi

32、=snake.x0&snake.yi=snake.y0)snake.life=1; /*置蛇死标记 */break; if(snake.life=1) /*以上两种断定以后,如果蛇死就跳出内循环*/ break; /*跳出 while(!kbhit)*/if(snake.x0=food.x&snake.y0=food.y) /*吃到苹果以后 */ setcolor(BLACK); /*把画面上的苹果擦除*/ circle(food.x,food.y,5);snake.node+; /*蛇的身体长一节*/ food.yes=1; /*画面上需要出现新的苹果*/ score+=10; /*没吃一个

33、苹果增加10 分 */ if(score%50=0) /*吃够 5个苹果进入下一关*/level+=1; /*关数加 1*/ gamespeed-=60; /*节制速度的值减少60 ,以便加疾速度*/ setcolor(RED); /*画出红色蛇的循环*/ setfillstyle(SOLID_FILL,RED); /*用圆画出红色蛇头*/ fillellipse(snake.x0,snake.y0,5,5);setcolor(GREEN); setfillstyle(SOLID_LINE,GREEN);circle(snake.x0,snake.y0,1); /*对蛇头填充绿色小圆作为眼睛*

34、/ setcolor(RED);setfillstyle(SOLID_FILL,BLUE); for(i=1;isnake.node;i+) /*用圆画出红色蛇身*/setcolor(RED); setfillstyle(SOLID_FILL,BLUE);fillellipse(snake.xi,snake.yi,5,5); /*对每节蛇身用蓝色填充*/ setcolor(CYAN);circle(snake.xi,snake.yi,1); /*用青色小圆画在每节蛇身上*/delay(gamespeed); /*延迟gamespeed毫秒,以便节制蛇的匍匐速度*/ setcolor(BLACK

35、); /*用布风光黑色去除蛇的最后一节*/ circle(snake.xsnake.node-1,snake.ysnake.node-1,5) ;setfillstyle(SOLID_FILL,BLACK); fillellipse(snake.xsnake.node-1,snake.ysnake.node-1,5,5); if(snake.life=1) break; /*如果蛇死就跳出循环*/ key=bioskey(0); /*接纳按键 */ if(key=esc) break; /* 按 esc 键退出 */ /*断定是否往相反的方向运动*/else if(key=up&snake.d

36、irection!=4)snake.direction=3;else if(key=right&snake.direction!=2) snake.direction=1;else if(key=left&snake.direction!=1) snake.direction=2;else if(key=down&snake.direction!=3)snake.direction=4; /*endwhile(1)*/*竣事游戏*/*读取文件操纵函数*/void readfiles()FILE * fpread;/*如果文件不存在,则创建1个空文件,否则打开该文件*/ if(fpread=fo

37、pen(filename,ab+)=NULL)printf(cantt open the file person.dat! );exit(0);if(fgetc(fpread)=EOF) /*如果文件内容为空*/ initscorefiles(); /*调用函数停止记录初始化工作*/ rewind(fpread); /*重新复位文件位置指针*/ fread(per,sizeof(struct person),5,fpread); fclose(fpread); /*关闭排行榜文件*/*写入文件操纵函数*/void writefiles(struct person *tmp)FILE * fpw

38、rite;/*以读写方式打开文件,文件内原有的数据将被清空*/ if(fpwrite=fopen(filename,wb+)=NULL)printf(cantt open the file person.dat! );exit(0);fwrite(tmp,sizeof(struct person),5,fpwrite);fclose(fpwrite);/*初始化记录函数*/void initscorefiles()int i;struct person a5;for(i=0;i5;i+)ai.score=0; /*5人的分数为0*/strcpy(ai.name,nobody); /*5 人的名为n obody*/writefiles(a); /*调用记录写入函数*/*排序函数,如果玩家分数超出最低记录,则将玩家分数拔出到合适的位置,同时删除原先 的最低记录 */void comparescore(struct person des)

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!