欢迎来到天天文库
浏览记录
ID:33047284
大小:227.50 KB
页数:5页
时间:2019-02-19
《小游戏打砖块》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、小游戏打砖块制作人:步宇星20062366信息学院06计算机系开发平台:VisualC++6.0软件介绍:模拟红白机小游戏,打砖块。如果你是80年代出生或者孩子是80年代出生的话,或者你是一个心理年龄比较中,家里一定会有任天堂出品的红白机,或者小霸王。那些怀旧的经典游戏中有一款叫做打砖块的小游戏。本作品就是我在PC上仿真它做出来的。游戏开始时的截图。这是一个用DirectDraw做图形处理的全屏幕游戏。操作在屏幕下方。玩过的人都知道游戏规则,很简单,控制球棒接住球并把所有的方块打掉,就可以进入下一关。屏幕上方又显示level,level越高球速越快,另外每关背景和音乐也不一样。
2、这是第二关背景改变了下面的卡就不在给图了主要程序框架:本游戏是在win32平台下用开发的,所以跟每个win32程序一样都是以WinMain为程序入口,用WindowProc来处理消息(WM_CREATE、WM_ACTIVATE、WM_PAINT、WM_DESTROY)。1、主消息循环//游戏初始化Game_Init();//进入事件循环while(true){if(PeekMessage(&msg,NULL,0,0,PM_REMOVE)){//如果是WM_QUIT退出事件循环if(msg.message==WM_QUIT)break;//翻译消息TranslateMessage
3、(&msg);//把消息送给回调函数DispatchMessage(&msg);}//endif//进入游戏主程序在这里进行每一帧的绘制if(!Game_Main())return(0);}//endwhile//做游戏结束工作Game_Shutdown();为了保证响应windows,Game_Main()采用状态机的方式工作,每次操作完返回给windows下次再进入Game_Main()时根据所在状态工作,//游戏状态#defineGAME_STATE_INIT0#defineGAME_STATE_START_LEVEL1#defineGAME_STATE_RUN2#def
4、ineGAME_STATE_PAUSE3#defineGAME_STATE_OVER4#defineGAME_STATE_SHUTDOWN5#defineGAME_STATE_EXIT6游戏先进入GAME_STATE_INIT状态做好初始化工作进入GAME_STATE_START_LEVEL状态重置每关的初始数据进入GAME_STATE_RUN循环在这里执行游戏逻辑、输入检测,并绘制每一帧并返回windows重复第三步第三步中按下Enter键进入GAME_STATE_PAUSE状态游戏将暂停,直到按下space键回到第三步第三步中将生命用完(life值小于0)进入GAME_ST
5、ATE_OVER状态,直到按下R键回到第二步上述步骤中如按下Esc键则进入GAME_STATE_SHUTDOWN状态此时做结束工作并发送WM_DESTROY消息进入GAME_STATE_EXIT状态此时Game_Main()不做任何操作就返回2、图像处理部分考虑到游戏对速度的要求,图像处理主要利用比GDI快得多的DirectDraw完成(文字显示用了GDI)。所有Direct的相关代码都在被我封装在ddrawlib.cpp中,其中的全局变量和函数原型以及宏和定义都在ddrawlib.h申明。我这么做的目的是让自己习惯于利用引擎的API来编程。实际上ddrawlib就是一个基于D
6、irect的简单2D游戏引擎。关于该引擎的函数库说明,源代码中有详细的注释,这里不多讲了。3、声音处理部分声音处理部分并没有像图像一样用Direct去写。因为它对速度不的影响并不大。而DirectSound或者DirectMusic(或者2者的结合DirectAudio)过于复杂了。所以音效我只用了WINAPIPlaySound函数。而背景音乐用了MCI设备的API。音效:这部分没什么好说的。我只在需要有声音的时候调用了PlaySound。背景音乐:为了让用户能够改变背景音乐,我在MP3文件夹下留了一个playlist.txt文件。修改音乐方法如下1、先将音乐文件放到mp3文件
7、夹下。2、修改playlist.txt中的文件名。注:每行一首,并且行数对应在哪一关播放。例如在第三行写:she-找不到.mp3那么第3关就会循环播放这首歌。我检测了支持wma和mp3置两种格式,其他支不支持我也不知道。不过我想这已经足够了。另外最多只能50首。播放函数如下://播放音乐该函数在GAME_STATE_START_LEVEL中调用使每关开始重置音乐//在GAME_STATE_RUN中如检测到还未过关就停止了也调用此函数重放intPlay_Music(){if(list_num)
此文档下载收益归作者所有