贪吃蛇游戏毕业设计_第1页
贪吃蛇游戏毕业设计_第2页
贪吃蛇游戏毕业设计_第3页
贪吃蛇游戏毕业设计_第4页
贪吃蛇游戏毕业设计_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、唐 山 学 院毕 业 设 计设计题目:贪吃蛇游戏 信息工程二系04计算机与信息管理(3)班系 别:_翟 丽 丽班 级:_姜 方 正班 级:_指 导 教 师:_2006年6月9 日贪吃蛇游戏摘 要贪吃蛇游戏是一个深受人们喜爱的游戏,它能够让你在忙碌的工作中放松一下自己,游戏贪吃蛇就是在屏幕上画出蛇,同时随机地给出食物。游戏者通过键盘操作控制贪吃蛇的移动,去吃食物,吃到后食物消失,然后再随机给出食物同时蛇的身体增长。撞到墙壁或身体交叉蛇头撞到自己的身体,则游戏结束。这个程序关键点是表示蛇的图形以及蛇的移动。用一个小矩形块表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用两节表示。移动时必须从蛇

2、头开始,所以蛇不能向相反的方向移动,也就是蛇尾不能改作蛇头。如果不按任何键,蛇自行在当前方向上前移,当游戏者按了有效的方向键后,蛇头朝着指定的方向移动,一步移动一节身体,所以当按了有效的方向键后,先确定蛇头的位置,然后蛇身体随着蛇头移动,图形的实现是从蛇头的新位置开始画出蛇,这时,由于没有清屏的原因,原来蛇的位置差一个单位,所以看起来蛇会多一节身体,所以将蛇的最后一节用背景色覆盖。食物的出现和消失也是画矩形块和覆盖矩形块。 本程序实现的主要技巧在二维数组的应用上。编写此游戏掌握了用C语言知识的了解,通过这次毕业设计,提高了我们的编程的水平。关键词:食物和蛇Tanchishe game Abst

3、ractTanchishe game is a very popular game is that it can allow you to relax at work in a busy themselves in the game Tanchiyi screen is painted snake while random to give food. Tanchiyi operational control of the game through keyboard movement, eat food, after eating food disappeared, and then rando

4、mly given food and snake physical growth. Hit the walls or physical cross-snake hit their physical, the game ended. The key point is that the procedures of the snake and the snake mobile graphics. Using a small rectangle pieces that snake section body, the body of each long section, add a rectangle

5、pieces, with two sections that snakeheads. Movement must start from the snake, the snake can not be contrary to the direction of movement that is capable not for snakeheads. If we do not by any keys, snakes themselves in the current direction of everything, when those games by an effective direction

6、 keys, snake head towards the designated direction movements, step movement section of the body, so when the effective direction keys, to identify the snake's position, and then snake body with snakeheads movement graphic realization from the snakeheads new location beginning painted snake, then

7、, In the absence of the Qing Ping reasons, the original location of poor snakes in a flat, it appears more than one section will snake physical, the final section will snake with background color cover. The emergence and disappearance of food plots and cover rectangle is a rectangle pieces. The main

8、 achievement of this procedure in two-dimensional array of techniques applied. Prepared this game mastered by C language knowledge understanding, through this graduation design and improve our programming level.Key words: Food and snakes目 录1 引言11.1游戏的发展历史11.2游戏的特点12 C语言的简介22.1 C语言的发展及背景22.2 C语言的功能及特

9、点22.3 系统的开发环境22.3.1 Turbo C 的产生与发展22.3.2 Turbo C 2.0基本配置要求32.3.3 Turbo C 2.0内容简介32.3.4 Turbo c2.0的界面42.3.5 Turbro的特点43游戏分析53.1 游戏的可行性分析53.1.1技术上的可行性53.1.2运行上的可行性53.2 需求分析54 游戏设计64.1游戏设计的思想64.2游戏功能设计64.3游戏设计方案64.3.1总体设计方案64.3.2蛇和食物的设计方案74.4游戏流程图85 个人设计95.1游戏具体过程函数GamePlay()95.1游戏具体过程界面105.3程序分析106 结论

10、147谢辞148参考文献159附录1610外文资料27唐 山 学 院 毕 业 设 计1 引言1.1游戏的发展历史电脑游戏的诞生几乎是伴随着电脑的产生就开始了。早在60年代人们还在使用最原始的大型计算机的时候,就有一小部分的程序员在开始开发一些小的游戏,只不过在当时,人们却把他们看成是在做有关计算机方面的研究而已。由于当时硬件和软件条件方面的限制,这些游戏只能为一些比较高层的计算机相关人员所知晓。到了1981年,也就是IBM公司推出了自己的第一款PC机之后,计算机开始进入了人们的日常生活当中。在最近的一二十年里,计算机硬件和软件都得到了前所未有的发展,出现了一些好的游戏开发平台,人们可以简单快捷

11、地进行游戏开发,32位操作系统,高速处理器等硬件的出现,也使游戏设计者不用因顾及一些其他的因素而不能尽情地投入到游戏开发之中。到了信息时代的今天,各国都在大力加强自己的软件实力。计算机游戏也成为了众多软件开发厂商的战略计划之一。 1.2游戏的特点游戏作为当前比较流行的一种娱乐方式,它和其他方式相比,有自身的特点所在。当然,当前来看,其他传统的娱乐方式,比如说:电影,电视,广播等都是不错的选择,但是这些方式已经越来越不能够满足人们娱乐的高要求。和游戏相比起来,这些传统的娱乐方式是单方向的,作为观众或者是听众的我们只能是简单的接受。如同我们平常所说的通信方式一样,它只实现了单工,而不能进行全双工通

12、信。也就是说,我们只能一味的接收已经是别人做好的信息,而不能充分发挥自己的才智。我们只能选择用耳朵听,用眼睛看。但是游戏不同,我们在看,在听的同时,我们还可以自己动手,在游戏的过程中,玩家可以充分发挥自身的聪敏才智,毫无顾及的施展自己的才华。我们在派遣自己的部队去攻打敌人的时候,我们需要考虑诸多方面的因素来想办法赢得战斗的胜利,我们可以根据自己的势力来选择是进攻还是防守。2 C语言的简介2.1 C语言的发展及背景C 语言是介于汇编语言和高级语言之间的语言,属于高级语言; 是集汇编语言和高级语言的优点于一身的程序设计语言。它的前身是“ALGOL”。其创始人是布朗·W·卡尼汉和

13、丹尼斯·M·利奇。C语言问世时是带有很大的局限性,因为它只能用于UNIX系统上。然而随着科学技术的进步,计算机工业的发展,C语言逐渐脱离UNIX。1987年美国标准化协会制定了C语言的国际标准,简称“ANSI C”,从此以后它便成为一种广泛使用的程序语言。它兼备高级语言与低级语言的优点,属于一种中间语言;是一种结构化程序设计语言,非常适合结构化程序设计;有较丰富的数据类型、运算符以及函数供以选用;直接与内存打交道,使修改、编辑其他程序与文档变得轻松,简单。C语言以它的功能丰富、表达能力强、使用灵活、应用面广、目标程序效序高、可移植性好、能对硬件直接进行操作等优点愈来愈赢得人

14、们的表睐。2.2 C语言的功能及特点近年来,C语言无论在国内还是在国外都得到迅速的推广应用。语言简洁、紧凑,使用方便、灵活。运算符丰富。灵活使用各种运算符可以实现在其他高级语言中难以实现的运算。数据结构丰富,具有现代化语言的各种数据结构。C的数据类型有整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。具有结构化的控制语句(如ifelse语句、while语句、dowhile语句、switch语句、for语句)。用函数作为程序的模块单位,便于实现程序的模块化。C是理想的结构化语言,符合现代编程风格的要求。语法限制不太严格,程序设计自由度大。例如对数组下标越界不做检查,由程序编写者自

15、己保证程序的正确。对变量的类型使用比较灵活,例如整型量与字符型数据以及逻辑型数据可以通用。C语言允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。因此,C既具有高级语言的功能,又具有低级语言的许多功能,可用来写系统软件。C语言的这种双重性,使它既是成功的系统描述语言,又是通用的程序设计语言。生成的目标代码质量高,程序执行效率高。一般只比汇编程序生成的目标代码效率低10一20。(8)用C语言写的程序可移植性好(与汇编语言相比)。基本上不做修改就能用于各种型号的计算机和各种操作系统。2.3 系统的开发环境2.3.1 Turbo C 的产生与发展 Tu

16、rbo C 是美国Borland 公司的产品,Borland公司是一家专门从事软件开发、研制的大公司。该公司相继推出了一套 Turbo系列软件, 如Turbo  BASIC,  Turbo Pascal, Turbo Prolog, 这些软件很受用户欢迎。该公司在1987年首次推出Turbo C 1.0 产品, 其中使用了全然一新的集成开发环境, 即使用了一系列下拉式菜单, 将文本编辑、程序编译、连接以及程序运行一体化, 大大方便了程序的开发。1988 年, Borland 公司又推出Turbo C1.5版本, 增加了图形库和文本窗口函数库等, 而 Turbo C 2.0

17、则是该公司1989年出版的。Turbo C2.0在原来集成开发环境的基础上 增加了查错功能, 并可以在Tiny模式下直接生成.COM (数据、代码、堆栈处在同一 64K 内存中) 文件。还可对数学协处理器 (支持8087/80287/80387等)进行仿真。     Borland 公司后来又推出了面向对象的程序软件包Turbo C+, 它继承发展 Turbo C 2.0 的集成开发环境, 并包含了面向对象的基本思想和设计方法。     1991年为了适用Microsoft 公司的Windows 3.0 版本, Borland 公司又

18、将Turbo C+ 作了更新, 即Turbo C 的新一代产品Borlandc C+也已经问世了。 2.3.2 Turbo C 2.0基本配置要求     Turbo C 2.0可运行于IBM-PC系列微机, 包括XT, AT及IBM 兼容机。 此时要求 DOS 2.0或更高版本支持, 并至少需要448K的RAM, 可在任何彩、单色80列监视器上 运行。支持数学协处理器芯片, 也可进行浮点仿真, 这将加快程序的执行。 2.3.3 Turbo C 2.0内容简介 Turbo C 2.0有六张低密软盘(或两张高密软盘)。下面对Turbo C 2.0的主要文 件作一简单

19、介绍:      INSTALL.EXE    安装程序文件      TC.EXE         集成编译      TCINST.EXE     集成开发环境的配置设置程序      TCHELP.TCH     帮助文件  

20、0;   THELP.COM      读取TCHELP.TCH的驻留程序      README         关于Turbo C的信息文件      TCCONFIG.EXE   配置文件转换程序      MAKE.EXE       项目管

21、理工具      TCC.EXE        命令行编译      TLINK.EXE      Turbo C系列连接器      TLIB.EXE       Turbo C系列库管理工具      C0?.OBJ   &#

22、160;    不同模式启动代码      C?.LIB         不同模式运行库      GRAPHICS.LIB   图形库      EMU.LIB        8087仿真库      FP87.LIB 

23、0;     8087库      *.H            Turbo C头文件      *.BGI          不同显示器图形驱动程序      *.C      

24、      Turbo C例行程序(源文件) 其中: 上面的?分别为:      T         Tiny(微型模式)      S         Small(小模式)      C       

25、;  Compact(紧凑模式)      M         Medium(中型模式)      L         Large(大模式)      H         Huge(巨大模式)2.3.4 Turbo c2.0的界面

26、2.3.5 Turbro的特点C语言系统很多,有些新系统的功能更强大。但TURBO C环境有许多特点,在基本的C程序设计课程教学中被广泛使用。本系统既简单又功能完整,开始使用需要理解的概念少,容易入门,特别适合初学者。TURBO C系统对计算机要求低,在任何微机上都能很好运行,编译加工速度快,对于做程序练习和一般的程序开发都很合适。另外,TURBO C的编程和调试环境也很完整,反映了集成化开发环境的特点。掌握了这个程序开发工具的使用方法,不但掌握了一个实用的程序开发工具,也能为进一步学习使用其他编程工具打下很好的基础。3游戏分析3.1 游戏的可行性分析可行性分析(Feasibility Ana

27、lysis)也称为可行性研究,是在系统调查的基础上,针对新系统的开发是否具备必要性和可能性,对新系统的开发从技术、经济、社会的方面进行分析和研究,以避免投资失误,保证新系统的开发成功。可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。该系统的可行性分析包括以下几个方面的内容。3.1.1技术上的可行性技术上的可行性分析主要分析技术条件能否顺利完成开发工作,硬、软件能否满足开发者的需要等。我们所设计的贪吃蛇游戏,是以C语言作为本系统的开发工具,大量运用C语言中的图形库函数完成建图的过程以及算法的演示过程。它兼备高级语言与低级语言的优点,属于一种中间语言。它是面向结构化程序设计

28、的语言,具有结构化的控制语句,以函数作为程序模块以实现程序的模块化,非常适合结构化程序设计。它有较丰富的数据类型、运算符以及函数供以选用。它直接与内存打交道,使修改、编辑其他程序与文档变得轻松,简单。它保证了代码的模块化要求,而代码模块化的提高,非常有利于以后对新系统的扩展与修改。综上所述,本系统的设计与开发在技术上和硬件设备上的条件都是满足的,因此,它在技术上是可行的。3.1.2运行上的可行性本系统为一个小型的贪吃蛇游戏,所耗费的资源非常的小,学校的电脑无论是硬件还是软件都能够满足条件,因此,本系统在运行上是可行的。3.2 需求分析本程序为贪吃蛇游戏,想必大家都玩过这个游戏,程序源代码用TC

29、2.0编译通过,需要图形驱动文件的支持,在TC2.0的集成环境中有.本程序利用数据结构中的链表,来将蛇身连接,同时当蛇每吃到一个食物,及身体就会增长一节,程序会时刻将一些信息显示在屏幕上,包括所得分数,要吃的食物.另外,此游戏可能与CPU的速度有关系.游戏有良好的人机界面,我们还可以自己动手,在游戏的过程中,玩家可以充分发挥自身的聪敏才智,毫无顾及的施展自己的才华。 4 游戏设计4.1游戏设计的思想知识要点: (1)数组元素为结构体的数组应用。(2)全局变量应用。(3)按键的处理。(4)数组元素与蛇、食物的对应关系。(5)图形方式。采用现有的资源,先进的游戏开发方案,充分利用学校现有的资源,减

30、少开发中的时间和财力、物力,提高游戏开发的水平和应用效果。游戏要满足用户的需求,它作为当前比较流行的一种娱乐方式,它和其他方式相比,有自身的特点所在。本程序实现的主要技巧在二维数组的应用上。编写此游戏掌握了用C语言编程的技巧,通过游戏程序增加编程的兴趣,提高学生编程的水平。同时,也为忙碌工作的人们提供了休闲娱乐的空间。4.2游戏功能设计游戏界面要清晰美观,一个矩形区作为游戏区域,在矩形区中有食物和贪吃蛇。贪吃蛇用小方块表示,开始的时候蛇有2节,每吃到食物一次蛇身加长一节,蛇身最长可以达到200节。食物也是用一个小方块表示,并且每次食物的位置是随机出现的。游戏中使贪吃蛇尽可能的长,但不能使贪吃蛇

31、撞到四周的墙壁,而且蛇的身体不能撞到一起,否则游戏结束。4.3游戏设计方案4.3.1总体设计方案游戏贪吃蛇就是在屏幕上画出蛇,同时随机地给出食物。游戏者通过键盘操作控制贪吃蛇的移动,去吃食物,吃到后食物消失,然后再随机给出食物同时蛇的身体增长。画蛇的原理就是利用人眼的视觉效应先将蛇头向前移动一格,然后所有蛇身依次向前移动一格,最后用背景色覆盖。这样在人眼看来好像蛇在向前移动。食物的给出,首先需要产生一个随机数,然后通过这个随机数计算得到食物的横纵坐标,在屏上显示出来。控制蛇的移动方向,然后根据按键改变蛇的移动方向。4.3.2蛇和食物的设计方案用一个小矩形块表示蛇的一节身体,身体每长一节,增加一

32、个矩形块,蛇头用两节表示。移动时必须从蛇头开始,所以蛇不能向相反的方向移动,也就是蛇尾不能改作蛇头。表示食物和蛇的矩形块都设计为10*10个像素单位,食物的基本数据域为它所出现的位置,用x和y坐标表示,则矩形块用函数rectangle(x,y,x+10,y+10)或rectangle(x,y,x+10,y-10)画出。由于每次只出现一个食物,而食物被吃掉后,才出现下一个食物,所以设定yes表示是否要出现食物的变量。蛇的一节身体为一个矩形块,这样表示每个矩形块只需起点坐标x和y。身体是不断增长的,所以用数组存放每一节的坐标,最大设定为N=200,node表示当前节数。另外还需要保存蛇移动方向的变

33、量direction和表示生命的变量life,一但life为1,则蛇死,游戏结束。所以程序功能的实现就是数组的操作。#define N 200struct Food int x; /*食物的横坐标*/ int y; /*食物的纵坐标*/ int yes;/*判断是否要出现食物的变量*/food;/*食物的结构体*/struct snakeint x Nint y Nint node; /*蛇的节数*/int direction; /*蛇移动方向*/int life; /*蛇的生命,0活着,1死亡*/snake;4.4游戏流程图No生成开始画面游戏开始生成随机食物蛇向前移动判断方向画蛇结束游戏结

34、束结束画面蛇是否撞到自己蛇是否撞墙蛇是否吃到食物开始蛇加长YesNooooYesYesNoNoYesYes初始化食物5 个人设计5.1游戏具体过程函数GamePlay()这个函数是游戏的主要部分,难点在表示蛇的新位置并消除前一次的图形。采用的方法是每次移动的时候从最后一节开始到倒数第二节(因蛇头为两节),将前一节的坐标赋值给后一节的坐标,移动后只要把最后一节用背景色去除即可,因为新位置0到n-1节还是要出现在画面上的。然后蛇头按照方向键来更改位置。另外,食物的随机出现要确保它的位置在10的倍数位置上,因为蛇的坐标都是以10为模的,这样的话就可以让蛇吃到,蛇吃到食物的判断是蛇头的坐标和食物的坐标

35、相等。 其算法过程为:(1)设置初始值。为防止食物出现在一个位置上,要设置随机数发生器,真正产生随机数。初始时,蛇只有蛇头,设定一个开始的方向。(2)循环执行,直到按Esc键退出。1)没有按键的情况下,循环执行。如果没有食物,随机出现食物。如果有食物,则显示食物。蛇移动身体,根据蛇的方向改变坐标值,并判断蛇是否撞到自己吃了自己,如果出现这两种情况之一,则蛇死,调用游戏结束函数,结束本次游戏,重新开始。如果蛇吃到了食物,蛇的身体长一节,数组元素增加一个,身体节数、分数都进行相应的改变。 在新位置画出蛇。2)如果有按键,则识别键值。如果按键为Esc键则结束游戏。程序运行结束;如果所按键为方向键。则

36、根据该键改变代表蛇方向的变量direction的值,要考虑相反方向键无效。5.1游戏具体过程界面5.3程序分析/*玩游戏具体过程*/void GamePlay(void) randomize();/*随机数发生器*/ food.yes=1;/*1表示需要出现新食物,0表示已经存在食物*/ snake.life=0;/*活着*/ snake.direction=1;/*方向往右*/ snake.x0=100;snake.y0=100;/*蛇头*/ snake.x1=110;snake.y1=100; snake.node=2;/*节数*/ PrScore();/*输出得分*/ while(1)/

37、*可以重复玩游戏,压ESC键结束*/ while(!kbhit()/*在没有按键的情况下,蛇自己移动身体*/ if(food.yes=1)/*需要出现新食物*/ food.x=rand()%400+60; food.y=rand()%350+60; while(food.x%10!=0)/*食物随机出现后必须让食物能够在整格内,这样才可以让蛇吃到*/food.x+; while(food.y%10!=0)food.y+;food.yes=0;/*画面上有食物了*/ if(food.yes=0)/*画面上有食物了就要显示*/ setcolor(GREEN); rectangle(food.x,f

38、ood.y,food.x+10,food.y-10); for(i=snake.node-1;i>0;i-)/*蛇的每个环节往前移动,也就是贪吃蛇的关键算法*/ snake.xi=snake.xi-1; snake.yi=snake.yi-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; fo

39、r(i=3;i<snake.node;i+)/*从蛇的第四节开始判断是否撞到自己了,因为蛇头为两节,第三节不可能拐过来*/ if(snake.xi=snake.x0&&snake.yi=snake.y0) GameOver();/*显示失败*/ snake.life=1; break; if(snake.x0<55|snake.x0>595|snake.y0<55| snake.y0>455)/*蛇是否撞到墙壁*/ GameOver();/*本次游戏结束*/ snake.life=1; /*蛇死*/if(snake.life=1)/*以上两种判断以

40、后,如果蛇死就跳出内循环,重新开始*/ break;if(snake.x0=food.x&&snake.y0=food.y)/*吃到食物以后*/ setcolor(0);/*把画面上的食物东西去掉*/ rectangle(food.x,food.y,food.x+10,food.y-10); snake.xsnake.node=-20;snake.ysnake.node=-20; /*新的一节先放在看不见的位置,下次循环就取前一节的位置*/ snake.node+;/*蛇的身体长一节*/ food.yes=1;/*画面上需要出现新的食物*/ score+=10; PrScore

41、();/*输出新得分*/setcolor(4);/*画出蛇*/for(i=0;i<snake.node;i+) rectangle(snake.xi,snake.yi,snake.xi+10, snake.yi-10);delay(gamespeed);setcolor(0);/*用黑色去除蛇的的最后一节*/rectangle(snake.xsnake.node-1,snake.ysnake.node-1,snake.xsnake.node-1+10,snake.ysnake.node-1-10); /*endwhile(!kbhit)*/ if(snake.life=1)/*如果蛇死就

42、跳出循环*/ break; key=bioskey(0);/*接收按键*/ if(key=ESC)/*按ESC键退出*/ break; else if(key=UP&&snake.direction!=4)/*判断是否往相反的方向移动*/ snake.direction=3; else if(key=RIGHT&&snake.direction!=2) snake.direction=1; else if(key=LEFT&&snake.direction!=1)snake.direction=2; elseif(key=DOWN&&am

43、p;snake.direction!=3) snake.direction=4; /*endwhile(1)*/6 结论 这次毕业设计让我们不仅掌握语言规范,而且能够解决实际问题,掌握程序设计的思想、方法和算法。当我们遇到新问题或使用其他语言编写程序时能很快适应,因为我们所掌握的是编程能力而不是单纯的语言。 7谢辞毕业设计是对我大学生活的总结,因而投入了极大的热情和很高的积极性,更幸得导师李建茹老师的精心指导。其严以律己、宽以待人的崇高风范,朴实无华、平易近人的人格魅力,让我们感到温暖!使得设计能顺利完成,圆满结束了我的大学生活。    衷心感谢我的导师李建茹老师

44、在校来对我的指导和教诲。您开阔的思维、敏锐的洞察力一直给我很大的启发。唯一的遗憾是自己不够主动,错过了许多与您交流的机会。是您深深感染了我求知的热情,更让我知道学问应当具有现实意义,在生活的每一个转折点,你的鼓励和关心,一直让我感动。    谢谢同窗们一直以来给我的信任和无微不至的关心。我会一直铭刻于心。    文中的许多资料、观点得益于项目组整个团队的努力和交流。因此特别要感谢全体成员,没有他们,就没有这篇论文;特别是张丽娜,谢谢你把我带进这个有趣而又激动人心的项目;谢谢你,给以我无私的帮助。  写作期间还得到了师弟师妹的

45、帮助和支持。在此一并表示谢意。    感谢李老师和我们整组的同学们。在毕业设计期间虽然辛苦,但是快乐。作为一段生活的回顾,还要感谢同寝的好朋友,谢谢你们陪我走过这样的一段青葱岁月。谢谢你们一路给我的支持和帮助。    最后,要感谢我的爸爸妈妈。我永远不会忘记你们的良苦用心。而在最落魄的日子里,正是父母的亲切鼓励,让自己能够坚强前行。“长风破浪会有时,直挂云帆济沧海。”这是我少年时最喜欢的诗句。就用这话作为一个结尾,也是一段生活的结束。希望自己能够记取少年时的梦想,永不放弃。最后感谢所有支持我鼓励我的老师和同学,希望你们一路走好!8参考

46、文献1 谭浩强,张基温,唐永炎编著C语言程序设计教程第二版 北京 高等教育出版社 1998.72 郭翠英等编著C语言程序设计案例精编 北京 中国水利水电出版社 2004.33 谭浩强等编著C语言程序设计题解与上机指导 北京 清华大学出版社 2000.114 谭浩强编著C程序设计第三版 北京 清华大学出版社, 2006,3 5 美 Stephen G.Kochan 著C语言程序设计(英文版·第3版) 北京 人民邮电出版社 2006.56 杨旭 张晓蕾 蒋凌云 魏雪英 王浩轩编著C语言程序设计案例教程 北京 人民邮电出版社 2005.17(美)Brian W.Kernighan,Denn

47、is M.Ritchie著 C程序设计语言(第2版·新版) 北京 机械工业出版社 2004.18吕凤翥著 C语言程序设计 北京 清华大学出版社 2006.59严蔚敏著 数据结构题集 (c语言版) 北京 清华大学出版社 2005.110申在明 刘岩编著 C语言程序设计600例 北京 人民邮电出版社 19909附录C语言图形函数Turbo C提供了非常丰富的图形函数, 所有图形函数的原型均在graphics. h中, 本节主要介绍图形模式的初始化、独立图形程序的建立、基本图形功能、图形窗口以及图形模式下的文本输出等函数。另外, 使用图形函数时要确保有显示器图形驱动程序*BGI, 同时将集

48、成开发环境Options/Linker中的Graphics lib选为on, 只有这样才能保证正确使用图形函数。1. 图形模式的初始化不同的显示器适配器有不同的图形分辨率。即是同一显示器适配器, 在不同模式下也有不同分辨率。因此, 在屏幕作图之前, 必须根据显示器适配器种类将显示器设置成为某种图形模式, 在未设置图形模式之前, 微机系统默认屏幕为文本模式(80列, 25行字符模式), 此时所有图形函数均不能工作。设置屏幕为图形模式, 可用下列图形初始化函数:void far initgraph(int far *gdriver, int far *gmode, char *path);其中gd

49、river和gmode分别表示图形驱动器和模式, path是指图形驱动程序所在的目录路径。有关图形驱动器、图形模式的符号常数及对应的分辨率见表2。图形驱动程序由Turbo C出版商提供, 文件扩展名为.BGI。根据不同的图形适配器有不同的图形驱动程序。例如对于EGA、 VGA 图形适配器就调用驱动程序EGAVGA.BGI。表2. 图形驱动器、模式的符号常数及数值图形驱动器(gdriver) 图形模式(gmode) 色调 分辨率符号常数 数值 符号常数 数值CGA 1 CGAC0 0 C0 320*200CGAC1 1 C1 320*200CGAC2 2 C2 320*200CGAC3 3 C3

50、 320*200CGAHI 4 2色 640*200MCGA 2 MCGAC0 0 C0 320*200MCGAC1 1 C1 320*200MCGAC2 2 C2 320*200MCGAC3 3 C3 320*200MCGAMED 4 2色 640*200MCGAHI 5 2色 640*480EGA 3 EGALO 0 16色 640*200EGAHI 1 16色 640*350EGA64 4 EGA64LO 0 16色 640*200EGA64HI 1 4色 640*350EGAMON 5 EGAMONHI 0 2色 640*350IBM8514 6 IBM8514LO 0 256色 64

51、0*480IBM8514HI 1 256色 1024*768HERC 7 HERCMONOHI 0 2色 720*348ATT400 8 ATT400C0 0 C0 320*200ATT400C1 1 C1 320*200ATT400C2 2 C2 320*200ATT400C3 3 C3 320*200ATT400MED 4 2色 320*200ATT400HI 5 2色 320*200VGA 9 VGALO 0 16色 640*200VGAMED 1 16色 640*350VGAHI 2 16色 640*480PC3270 10 PC3270HI 0 2色 720*350DETECT 0

52、用于硬件测试有时编程者并不知道所用的图形显示器适配器种类, 或者需要将编写的程序用于不同图形驱动器, Turbo C提供了一个自动检测显示器硬件的函数, 其调用格式为:void far detectgraph(int *gdriver, *gmode);其中gdriver和gmode的意义与上面相同。另外, Turbo C提供了退出图形状态的函数closegraph(), 其调用格式为:void far closegraph(void);调用该函数后可退出图形状态而进入文本方式(Turbo C 默认方式), 并释放用于保存图形驱动程序和字体的系统内存。2. 独立图形运行程序的建立Turbo C对于用initgraph()函数直接进行的图形初始化程序, 在编译和链接时并没有将相应的驱动程序(*.BGI)装入到执行程序, 当程序进行到intitgraph()语句时, 再从该函数中第三个形式参数char *path中所规定的路径中去找相应的驱动程序。若没有驱动程序, 则在C:TC中去找, 如C:TC中仍没有或TC不存在,将会出现错误:BGI Error: Graphics not initialized (u

温馨提示

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

评论

0/150

提交评论