下载

1下载券

加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 C语言项目开发全程实录

C语言项目开发全程实录.doc

C语言项目开发全程实录

徐自引
2018-01-05 0人阅读 举报 0 0 暂无简介

简介:本文档为《C语言项目开发全程实录doc》,可适用于教育、出版领域

C语言项目开发全程实录章第贪吃蛇游戏,TC实现,随着电子产品性能的不断提升所附带的娱乐性游戏也越来越丰富。贪吃蛇游戏作为一个古老而又经典的游戏被不断完善而且可以使用多种语言实现。本章详细阐述了使用C语言实现贪吃蛇游戏基本功能的流程和相关技术。通过本章的学习读者能够学到,,游戏设计思路,游戏页面设计,难度控制函数设计,画墙函数设计,运行过程函数设计,游戏结束页面设计章导第读C语言项目开发全程实录贪吃蛇游戏概述贪吃蛇起源于西方来自于蛇骗夏娃和亚当偷吃禁果的神话。人们为了说明蛇的一个“贪”字开发出了贪吃蛇游戏。本章使用C语言开发一个贪吃蛇游戏详细阐述了开发流程和开发技术。下面来看一下详细的开发过程。功能阐述本游戏只需要用户双击运行程序就可以进入游戏界面然后选择游戏难度(本游戏分为个难度水平)即可进入游戏。系统预览本游戏系统的游戏界面很丰富下面列出几个典型页面其他页面请参见光盘中的源程序。贪吃蛇游戏系统主页面的运行效果如图所示。游戏运行效果如图所示。图贪吃蛇游戏主页面图游戏运行效果游戏失败运行效果如图所示。图游戏失败运行效果第章贪吃蛇游戏,TC实现,关键技术graphicsh文件是TC中的图形库如果要使用应该用TC进行编译。下面对graphicsh文件中的函数进行简单介绍。主要函数的分类及函数说明如表所示。表graphicsh文件中主要函数及说明函数说明像素函数画像素点函数putpixel()返回像素点函数getpixel()直线和线型函数画线函数line()画线函数lineto()相对画线函数linerel()设置线型函数setlinestyle()获取线型设置函数getlinesettings()设置画线模式函数setwritemode()多边形函数画矩形函数rectangle()画条函数bar()画条块函数bard()画多边形函数drawpoly()圆、弧和曲线函数获取纵横比函数getaspectratio()画圆函数circle()画圆弧函数arc()画椭圆弧函数ellipse()画椭圆区函数fillellipse()画扇区函数pieslice()画椭圆扇区函数sector()获取圆弧坐标函数getarccoords()填充函数设置填充图样和颜色函数setfillstyle()设置用户图样函数setfillpattern()填充闭域函数floodfill()填充多边形函数fillpoly()C语言项目开发全程实录续表函数说明填充函数获取填充设置函数getfillsettings()获取用户图样设置函数getfillpattern()图像函数图像存储大小函数imagesize()保存图像函数getimage()输出图像函数putimage()下面对程序中使用到的一些函数进行简单介绍。bioskey()函数bioskey()函数的功能是直接使用BIOS服务的键盘接口。函数原型:intbioskey(intcmd)bioskey()函数的原型在biosh头文件中。bioskey()完成直接键盘操作cmd的值决定执行什么操作。参数的设置值及其含义如表所示。表cmd参数的设置值及含义参数值含义bioskey()返回下一个在键盘输入的值(它将等待到按下一个键)。它返回一个位的二进制数包括两个不同的值。当按下一个普通键时低位存放该字符的ASCII码高位存放该键的扫cmd=描码对于特殊键(如方向键、F,F等)低位为高位字节存放该键的扫描码bioskey()查询是否按下一个键若按下一个键则返回非零值否则返回cmd=bioskey()返回Shift、Ctrl、Alt、ScrollLock、NumLock、CapsLock、Insert键的状态。各键状态存cmd=放在返回值的低位字节中。字节位的设置及含义如表所示表字节位的设置及含义字节位含义右边Shift键状态左边Shift键状态Ctrl键状态Alt键状态ScrollLock键状态NumLock键状态CapsLock键状态Insert键状态第章贪吃蛇游戏,TC实现,initgraph()函数和closegraph()函数(initgraph()函数initgraph()函数的功能是初始化图形系统。函数原型:voidfarinitgraph(intfar*graphdriver,intfar*graphmode,charfar*pathtodriver)(closegraph()函数closegraph()函数的功能是关闭图形系统。函数原型:voidfarclosegraph(void)setbkcolor()函数setbkcolor()函数用指定的颜色值来设置当前的背景色如果指定的颜色值超出了当前设备的表示范围则设置为最近似的、设备可以表示的颜色。函数原型:COLORREFSetBkColor(HDChdc,COLORREFcrColor)参数说明如下。hdc:设置上下文句柄。crColor:标识新的背景颜色值。如果想要获得COLORREF的值则使用RGB宏。如果函数成功返回值是原背景色的COLORREF值如果函数失败则返回CLRINVALID。outtextxy()函数outtextxy()函数在指定位置显示一字符串。函数原型:voidfarouttextxy(intx,inty,char*textstring)settextstyle()函数settextstyle()函数用于为图形输出设置当前的文本属性。C语言项目开发全程实录函数原型:voidfarsettextstyle(intfont,intdirection,charsize)函数的参数说明如表所示。表settextstyle()函数的参数说明参数说明字体。取值为DEFAULTFONT、TRIPLEXFONT、SMALLFONT、SANSSERIFFONT或GOTHICfontFONT也可以用,代替字符的排列方向包括横向和竖向为横向排列为竖向排列direction字体大小。可用interger作参数sizesetcolor()函数setcolor()函数用于设置当前屏幕的画笔颜色。函数原型:voidsetcolor(intcolor)getch()函数getch()函数用于从控制台无回显地获取一个字符。函数原型:intgetch(void)返回值:从键盘上读取到的字符。在WindowsMSDOS中可以利用getch()函数使程序调试结束后等待编程者按下键盘才返回编辑界面。该函数包含在头文件conioh中。在使用时在主函数结尾“return”之前加上getch()即可。getch()函数可以让系统在用户按下任意键而不需要按Enter键时就可以接收到用户的输入可以用来作为pressanykeytocontinue的实现。程序预处理模块文件引用在本游戏系统中需要引用一些头文件以便程序更好地运行。引用头文件需要使用#include命令第章贪吃蛇游戏,TC实现,下面即是要引用的文件和引用代码实现代码如下:#include<stdioh>*输入输出函数*#include<stdlibh>*常用子程序*#include<conioh>*调用DOS控制台IO*#include<graphicsh>*图形库文件*#include<dosh>*MSDOS和调用的一些常量和函数*宏定义宏定义也是预处理命令的一种以#define开头提供了一种可以替换源代码中字符串的机制。本系统将用户使用键盘操作贪吃蛇时使用的方向键的键值定义为宏。定义形式如下:#defineLEFTxb*向左键*#defineRIGHTxd*向右键**#defineDOWNx*向下键#defineUPx*向上键*#defineEscxb*Esc退出键*#defineN*贪吃蛇的最大长度*声明结构体food是表示食物基本信息的结构体snake是定义贪吃蛇基本信息的结构体声明结构体的代码如下:structfood{intx*食物的横坐标*inty*食物的纵坐标*intflag*标志是否要出现食物*}foodstructsnake{intxNintyNintnode*蛇的节数*intdir*蛇移动方向*intlife*标志是死是活*}snakeC语言项目开发全程实录函数声明在本程序中使用了几个自定义的函数这些函数的功能及声明形式如下:voidGameOver()*结束游戏*voidPlay()*玩游戏过程*voiddwall()*画墙*voidwall(intx,inty)*画组成墙的砖*intSpeed()*选择贪吃蛇的速度*主函数模块设计程序运行后首先从main()函数开始在main()主函数中首先对图形化界面进行初始化调用自定义函数Speed()获取蛇的行进速度然后清屏画墙开始游戏。实现代码如下:main(){intgdriver=DETECT,gmodeinitgraph(gdriver,gmode,"")speed=Speed()*将函数返回值赋给speed*cleardevice()*清屏*dwall()*开始画墙*Play()*开始玩游戏*getch()closegraph()*退出图形界面*}速度选择界面模块概述本模块主要实现对游戏难度水平的选择。玩家在本界面选择好游戏的难度后就可以进入相应的游戏界面如图所示。第章贪吃蛇游戏,TC实现,图游戏主界面速度选择界面的实现自定义speed()函数用来选择贪吃蛇的速度程序代码如下:intspeed()*选择贪吃蛇运行的速度*{intmgotoxy(,)printf("leveln")gotoxy(,)printf("leveln")gotoxy(,)printf("levelnttpleasechoose:")scanf("d",m)switch(m){case:returncase:returncase:returndefault:cleardevice()Speed()}}画墙函数的设计模块概述本模块主要是实现画墙贪吃蛇撞到墙后游戏结束。本游戏中画的墙如图所示。C语言项目开发全程实录图画墙的界面画墙函数的实现自定义dwall()函数用来画墙程序代码如下:voiddwall()*用前面画好的砖来画墙*{intjfor(j=j<=j=){wall(j,)*画上面墙*wall(j,)*画下面墙*}for(j=j<=j=){wall(,j)*画左面墙*wall(,j)*画右面墙*}}在上面代码中调用了一个函数wall()该函数主要是用来画组成墙的砖通过循环输出砖块形成游戏需要的围墙实现代码如下:voidwall(intx,inty){intsizx=intsizy=setcolor()*白色画砖的上边和左边*line(x,y,xsizx,y)line(x,y,xsizx,y)line(x,y,x,ysizy)第章贪吃蛇游戏,TC实现,line(x,y,x,ysizy)setcolor()*红色画砖的右面和下面*line(x,ysizy,xsizx,ysizy)line(x,ysizy,xsizx,ysizy)line(xsizx,y,xsizx,ysizy)line(xsizx,y,xsizx,ysizy)setfillstyle(,)*用淡红色填充砖的中间部分*bar(x,y,xsizx,ysizy)}游戏运行函数的设计模块概述在自定义函数play()中主要实现了贪吃蛇游戏的具体过程。在游戏过程中程序会判断键盘输入的键值如使用上、下、左、右方向键来控制贪吃蛇的运动方向并实现对食物出现位置的控制。本游戏运行界面如图所示。图游戏运行界面游戏运行函数的实现自定义play()函数用来实现贪吃蛇游戏的具体过程程序代码如下:voidplay(void)*游戏实现过程*{srand((unsignedlong)time())C语言项目开发全程实录foodflag=*表示需出现新食物表示食物已存在*snakelife=*标志贪吃蛇活着*snakedir=*方向向右*snakex=snakey=*定位蛇头初始位置*snakex=snakey=snakenode=*贪食蛇节数*do{while(!kbhit())*在没有按键的情况下蛇自己移动身体*{if(foodflag==)*需要出现新食物*do{foodx=rand()foody=rand()foodflag=*标志已有食物*}while(foodx!=||foody!=)if(foodflag==)*画出食物*{setcolor(GREEN)setlinestyle(,,)rectangle(foodx,foody,foodx,foody)}for(i=snakenodei>i)*实现蛇向前移动*{snakexi=snakexisnakeyi=snakeyi}switch(snakedir){case:snakex=break*向右移*case:snakex=break*向左移*case:snakey=break*向上移*第章贪吃蛇游戏,TC实现,case:snakey=break*向下移*}for(i=i<snakenodei){if(snakexi==snakexsnakeyi==snakey)*判断蛇是否吃到自己*{GameOver()*游戏结束*snakelife=*蛇死*break}}if(snakex<||snakex>||snakey<||snakey>)*蛇是否撞到墙壁*{GameOver()*游戏结束*snakelife=*蛇死*break}if(snakex==foodxsnakey==foody)*判断是否吃到食物*{setcolor()*用背景色遮盖掉食物*rectangle(foodx,foody,foodx,foody)snakenode*蛇的身体长一节*foodflag=*需要出现新的食物*}setcolor()*画蛇*for(i=i<snakenodei){setlinestyle(,,)rectangle(snakexi,snakeyi,snakexi,snakeyi)}delay(speed)setcolor()*用背景色遮盖蛇的最后一节*rectangle(snakexsnakenode,snakeysnakenode,snakexsnakenode,snakeysnakenode)}if(snakelife==)*如果蛇死就跳出循环*breakkey=bioskey()*接收按键*if(key==UPsnakedir!=)*判断是否往相反的方向移动*C语言项目开发全程实录snakedir=elseif(key==DOWNsnakedir!=)*判断是否往相反的方向移动*snakedir=elseif(key==RIGHTsnakedir!=)*判断是否往相反的方向移动*snakedir=elseif(key==LEFTsnakedir!=)*判断是否往相反的方向移动*snakedir=}while(key!=Esc)*按Esc键退出游戏*}游戏结束界面的设计模块概述在蛇撞墙死后游戏会弹出游戏结束的界面。本游戏中结束界面如图所示。图游戏结束界面游戏结束界面的实现自定义GameOver()函数用来提示游戏结束程序代码如下:voidGameOver(void){cleardevice()setcolor(RED)*设置字体为红色*settextstyle(,,)outtextxy(,,"GAMEOVER,BYEBYE!")sleep()}第章贪吃蛇游戏,TC实现,开发总结贪吃蛇游戏是一款老少皆宜的经典游戏其基本规则是:通过按键盘的上、下、左、右键来控制蛇运行的方向当蛇吃了食物后身体长度自动增加当蛇撞墙或吃到自身时则蛇死。本章通过对贪吃蛇游戏程序的介绍使读者了解一个简单的游戏程序开发的基本思路和过程并加深对图形图像技术的理解为今后程序的开发奠定基础。

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/20

C语言项目开发全程实录

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利