资源预览内容
第1页 / 共33页
第2页 / 共33页
第3页 / 共33页
第4页 / 共33页
第5页 / 共33页
第6页 / 共33页
第7页 / 共33页
第8页 / 共33页
第9页 / 共33页
第10页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
梁健雄游戏制作湛江海洋大学应电 012 班 2004.4.31游 戏 制 作梁健雄,2004.4.2,湛江海洋大学应用电子 012 班虽然说的很简洁,但这些都是我自己理解之后,一字字打出来的,都是在互联网上找到并总结的。具体的程序在网上有很多的下载,我也不会很正规的说一大堆。如果可以写完上面那四个例子,我就可以详细地设计一个龙与地下城风格的 MMORPG 的游戏,是大型的 3D 再线游戏。这是我这次学习游戏编程的毕业论文吧。这次学习编游戏花了比较长的时间,由 2003 年 12 月到 2004-5-3。我的学习主要是上网查找源代和教程,所上的网站是 “www.17173.com” , “www.gameres.com”。还有分析程序,看了Visual C+游戏设计 、Visual C+网络游戏建模与实现 、 Java 游戏程序设计 、 游戏设计概论 。梁健雄游戏制作湛江海洋大学应电 012 班 2004.4.32目录前言-3游戏的库函数准备-3要那些处理-3学习总结-41 是简单的射击游戏-5具体过程:-5列举这个程序例子:-52 是有规模的 RPG 游戏,但也是很小的-9具体过程:-9列举这个程序例子:-103 也是 RPG 游戏,很齐全的-17具体过程:-17列举这个程序例子:-264 最后是一个 3D 的简单游戏程序-27具体过程:-27列举这个程序例子:-27独立设计-30大型的 3D 在线游戏-30具体过程:-30列举这个程序例子:-32梁健雄游戏制作湛江海洋大学应电 012 班 2004.4.33前言整个游戏程序是由两个部分组成的。第一是库函数,封装了 directx 或者 openGL。都是些接口函数,包括图形、声音、影片、3D、输入输出、网络连接等等。第二个是具体的怎样把“图形、声音、输入输出”出现在你编的程序上,即整个游戏的流程图。1游戏的库函数准备编游戏一定要通过库函数或者别人编好的图形输入输出函数来用的。DirectdrawDirect3DDirectaudioDirectinputDirectplayDirectshow2要那些处理Winmain()Winproc() Gamemain()梁健雄游戏制作湛江海洋大学应电 012 班 2004.4.34学习总结我要用几个例子,由简单到复杂的讲述游戏编程的大概。1 是简单的射击游戏,用 DirectDraw,DirectAudio两个对象就行了。就是说只要声音、图片,不用Direct3D、DirectInput。2 是有规模的 RPG 游戏,但也是很小的,主要用到DirectDraw、DirectAudio 、DirectInput。3 也是 RPG 游戏,很齐全的,分开不同部分有不同功能。包括显示、战斗和菜单。用到所有的directx 对象,除了 Direct3D。4 最后是一个 3D 的简单游戏程序。梁健雄游戏制作湛江海洋大学应电 012 班 2004.4.351 是简单的射击游戏具体过程:它的流程全部在 gamemain()函数中,但 directX 库也少不了。滚屏完美实现,其中的图片处理。所有精灵显示完成(画面有些闪烁)检测碰撞完成。对精灵的显示做了部分优化。加入记分部分,左边数字显示搞定。记分数字显示全部完成,金币的动画显示完成。开始加入开场及结束画面。开始结束画面加入完毕加入暂停部分。加入游戏结束时的评价。加入变速部分。列举这个程序例子:1游戏的库函数准备DirectdrawDirectaudioDirectinput2要那些处理Winmain()Winproc() Gamemain()梁健雄游戏制作湛江海洋大学应电 012 班 2004.4.36Winmain.cpp/-标准 WINMAIN()主函数-int WINAPI WinMain( )t=Game_Init();if(t!=0)sprintf(buffer,err %d,t);MessageBox(my_hwnd,Game_Init,buffer,MB_OK | MB_ICONQUESTION );PostQuitMessage(0);/ enter main event loopwhile(TRUE) if(end=0)Game_Main();/正常游戏-else if(end=1)game_pause();/游戏暂停-else if(end=2)game_esc();/在游戏中按下 ESC 键-else if(end=3)game_death();/被敌机打中-else if(end=4)game_past();/过关了-else if(end=5)game_over();/打爆机了-else game_begain();/游戏的主菜单- / end while/ closedown game hereGame_Shutdown();/ return to Windows like thisreturn(msg.wParam); / end WinMainGamemain.cpp/-游戏的主体-int Gamemain(void *parms = NULL, int num_parms = 0)梁健雄游戏制作湛江海洋大学应电 012 班 2004.4.37if(KEYDOWN(VK_ESCAPE)/是否按下 ESC 键- Sleep(300);end=2;/进入菜单 2-bb=0;if(KEYDOWN(VK_RETURN)/是否按下回车键-end=1;/-暂停-bb=0;gamepause_s.dsbuffer-Play(0,0,0);/播放暂停的声音Sleep(500);return (1);STAR_TIME=GetTickCount();if(KEYDOWN(VK_LEFT) | KEYDOWN(my_left)/是否按下向左的键plane.x-=plane_v;plane.stat=1;if(KEYDOWN(VK_RIGHT) | KEYDOWN(my_right)/是否按下向右的键plane.x+=plane_v;plane.stat=2;if(KEYDOWN(VK_UP) | KEYDOWN(my_up)/是否按下向上的键plane.y-=plane_v;if(KEYDOWN(VK_DOWN) | KEYDOWN(my_down)/是否按下向上的键plane.y+=plane_v;/是否越界-if(plane.xMMWIDTH)plane.x=MMWIDTH;if(plane.yMMHEIGHT)plane.y=MMHEIGHT;/操作我机子弹-if(plane.num0)/是否有子弹-/结束-操作我机子弹-/是否生成敌机-if(p_e_n0) /是否有敌机-/结束是否有敌机-/结束对敌机的操作-/操作敌机子弹-if(f_e_n0)/结束操作敌机子弹-/显示分数和难度-梁健雄游戏制作湛江海洋大学应电 012 班 2004.4.38lpddsback-Blt();lpddsback-GetDC(&my_dc);/显示自己的子弹-my_rect(108,62,121,88);if(plane.num0)/显示自己的飞机-my_rect(plane.stat*50,0,plane.stat*50+50,62);plane.stat=0;lpddsback-BltFast();/显示敌人的子弹-if(f_e_n0)/显示敌人的飞机机-if(p_e_n0)/-p 用来记录幅数-p+;if(p=30) p=0;/-控制时间-while(GetTickCount() - STAR_TIME) Flip(NULL,DDFLIP_WAIT)/返回-return(1);/-end Gamemain-梁健雄游戏制作湛江海洋大学应电 0
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号