c语言游戏讲解

上传人:M****1 文档编号:486042516 上传时间:2023-04-19 格式:DOCX 页数:20 大小:192.92KB
返回 下载 相关 举报
c语言游戏讲解_第1页
第1页 / 共20页
c语言游戏讲解_第2页
第2页 / 共20页
c语言游戏讲解_第3页
第3页 / 共20页
c语言游戏讲解_第4页
第4页 / 共20页
c语言游戏讲解_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《c语言游戏讲解》由会员分享,可在线阅读,更多相关《c语言游戏讲解(20页珍藏版)》请在金锄头文库上搜索。

1、1:C语言游戏设计1.1 :课程设计目标c语言编写一款打飞机游戏,掌握函数的使用和编程的整体思路。1.2 :整体设计思路总体设想:运行游戏时显示游戏的界面,允许用户选择个性化设置,A、D、W分别控制飞机的左右移动和发射子弹,不同的敌机飞行和攻击,并不时伴有奖励。游行运行时播放音效,同时记录飞机的生命和得分,达到一定的分数进入下一关。需要构建的函数:位图调用模块、界面输出函数、主菜单函数、设置函数、速度选择函数、游戏控制函数、敌机移动函数、子弹移动函数、boss函数、计时函数1.3 :需调用的头文件:include/常规库头文件控制台输入输出流头文件系统函数头文件时间函数头文件函数库includ

2、e/include/include/include/windowsinclude/导入声音头文件pragmacomment(lib,winmm.lib)/导入声音头文件库1.4:游戏过程模拟:1记录飞机飞行时间和Menu菜单函数Mpovepall敌弹Movepal敌机函数Boss函数Bmp位图调用Set设置函数Movebul子弹速度11Print界面输出Indelay速控函数IDelay游控函数飞机的移动,子弹的发射,音乐的播放,信息的记录1.5:显示效果如下图所示Update计时函数游戏界面初始设置界面:呼rE:hahaDebughaha,eie游戏说明:飞行控制:A向左D向右上发射钾Esc

3、:开始游戏游戏时间为1喷钟本游贷由王期坐改编双击回车键直凝进入游戏:.2算法实现2.1 需要了解的知识点:Main函数和menu函数编写比较顺利,在bmp函数中遇到如何显示窗口和调用图片的问题,看了一些例子和网上的资料,逐渐掌握了一下知识点:O设备上下文:设备,显示器,打印机,数码相机,扫描仪这些类似的设备上下文,就是上面设备的相关信息,比如屏幕分辨率等QHANDLE通用句柄,实际上是一个指向指针的指针,在Windows操作系统中,内存操作器经常移动对象,来满足各种程序的内存需要,为了解决寻找对象问题,内存管理器开辟出一块专门的内存储存空间,把移动后的地址存储在该空间,这样就可以通过该地址间接

4、寻找到对象。(3HDC设备描述句柄,实现对窗口操作区域的GDI(图形设备接口,负责系统与绘图程序之间的信息交换,处理所有Window纲序的图形输出)操作,如画线、写文本、绘画制图等。(4BITMAP用于处理有像素数据定义的图像的对象(5GetDC(0)检索特定的客户区域或整个屏幕的宣示设备上下文环境的句柄,以后可以使用该句柄在设备上下文环境中绘图。(6Loadimage装载图标、光标或位图。HANDLELoadImage(HINSTANCEhinst,LPCTSTRlpszName,UINTuType,intcxDesired,intCyDesired,UINTfuLoad),hinst处理包

5、含被撞在图像模块的实例,装载oem图像时参数设为0;namef旨向装载图像资源的名称;type指定被装备图像类型cxdesired和cyDesired指定图标的宽度和高度,如果参数为0,则使用目前资源的高度。Fuload-LR_LOADFROMFILE据参数IpszName的值装载图像。若标记未被给定,IpszName的值为资源名称。(7CreateCompatibleDC该函数创建一个与指定设备兼容的内存设备上下文环境(D。通过GetDc()获取的HDCft接与相关设备沟通,而本函数创建的DC则是与内存中的一个表面相关联。C8SelectObject计算机编程语言函数,该函数选择一对象到指定

6、的设备上下文环境中,该新对象替换先前的相同类型的对象。(9GetObject函数功能:该函数得到指定图形对象的信息,根据图形对象,函数把填满的或结构,或表项(用于逻辑调色板)数目放入一个指定的缓冲区。BitBIt该函数对指定的源设备环境区域中的像素进行位块(bit_block)转换,以传送到目标设备环境.ReleaseDC函数释放设备上下文环境(D。供其他应用程序使用。函数的效果与设备上下文环境类有关。它只释放公用的和设备上下文环境,对于类或私有的则无效。12 DeleteDC:该函数删除指定的设备上下文环境.13 DeleteObject该函数删除一个逻辑笔、画笔、字体、位图、区域或者调色板

7、,释放所有与该对象有关的系统资源,在对象被删除之后,指定的句柄也就失效了14 system(modeconcols=48lines=25)表示窗口宽度和高度15 system(colorOA)color后面的0是背景色代号,A是前景色代号。各颜色代码如下:04色1=蓝色2=绿色3=湖蓝色4=红色5二紫色6=黄色7=白色8二灰色9=淡蓝色A=淡绿色B淡浅绿色,淡红色D=淡紫色E=淡黄色F=亮白色2.2代码讲解:/windows#include/#include/#include/#include/#include常规库头文件控制台输入输出流头文件系统函数头文件时间函数头文件函数库宏计时函数游戏控

8、速函数 速度选择函数 界面输出函数 子弹移动函数子弹移动函数敌机移动函数 敌机移动函数模块位图调用模块 设置函数 主菜单函数#include/导入声音头文件#pragmacomment(lib,winmm.lib)/导入声音头文件库#defineN50/voidUpdate(void);/voidDelay(void);/voidInDelay(void);/voidprint(intN);/voidmovebul(intN);/voidmovebul1(intN);/BOSSvoidmovepla(intN);/voidmovepla1(intN);/voidboss(intN);/boss

9、voidbmp(void);/voidset(void);/voidmenu(void);/intscr23N=0,pl=20,bl=1,width=40,speed=4,density=30,score=0,death=7,k1=0,k2=7;/全局变量定义|intminute=0,second=0,p=0,k3=0;longintmax=0;/时间结构体structclockintminute;intsecond;typedefstructclockCLOCK;/计时模块voidUpdate(void)Ip+;if(p=7)_p=0;second+;if(second=60)second=

10、0;minute+;k3=minute;if(minute=15)|minute=0;/游戏控速模块voidDelay(void)longt;for(t=0;t=max;t+)/速度选择函数voidInDelay(void)Iintsw=0;system(cls);doEprintf(请游戏的速度:0-10n);switch(getch()case0:max=0;break;caseT:max=1000;break;case2:max=10000;break;case3:max=100000;break;case4:max=1000000;break;case5:max=10000000;br

11、eak;case6:max=100000000;break;case7:max=1000000000;break;case8:max=10000000000;break;case9:max=100000000000;break;case10:max=500000000000;break;default:printf(输入错误,请重新选择)sw=1;while(sw);1./界面输出模块voidprint(intaN)inti,j;system(cls);for(i=0;i23;i+)for(j=-1;jwidth;j+)ai+1width-1=4;/ai-1=4;a0j-1=5;a22j=6;

12、if(a皿=0)printf();/清空if(aij=1)printf(%C%c%C”,17,87,16);/角色if(aij=2)printf(%c,43);/子弹if(aij=3)printf(%c,3);/敌机1if(aij=7)printf(%c,15);/敌机2if(aij=8)printf(%c,14);/BOSSif(aij=9)printf(%c,31);/BOSS/if(aij=4)printf(|);/if(aij=5)printf(%c,20);/if(a皿=6)printf(-);/攻击垂直边界上水平边界下水平边界if(i=1&j=width-1)printf( if(

13、i=3&j=width-1)printf( if(i=5&j=width-1)printf( if(i=7&j=width-1)printf( if(i=9&j=width-1)printf( if(i=12&j=width-1)printf( if(i=13&j=width-1)printf( if(i=14&j=width-1)printf( if(i=15&j=width-1)printf( if(i=16&j=width-1)printf(得分:%d,score);生命:d,death);设置:S键)速度:V键)时间:2d:%2d,minute,second)控制:);W);AD);5);13);printf(n);/BOSS攻击模块/子弹攻击模块voidmovebul(intaN)inti,j;for(i

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 市场营销

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号