版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、小游戏 打砖块制作人 : 步宇星 20062366 信息学院 06计算机系开发平台: Visual C+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(trueif (PeekMessage(&msg,NULL,0,0,PM_REMOVE / 如果是WM_QUIT退出事件循环if (msg.message = WM_QUITbreak;/ 翻译消息TranslateMessage(&
3、;msg;/ 把消息送给回调函数DispatchMessage(&msg; / end if/ 进入游戏主程序 在这里进行每一帧的绘制if(!Game_Main(return (0; / end while/ 做游戏结束工作Game_Shutdown(;为了保证响应windows,Game_Main(采用状态机的方式工作,每次操作完返回给windows下次再进入Game_Main(时根据所在状态工作,/ 游戏状态#define GAME_STATE_INIT 0#define GAME_STATE_START_LEVEL 1#define GAME_STATE_RUN 2#define
4、 GAME_STATE_PAUSE 3#define GAME_STATE_OVER 4#define GAME_STATE_SHUTDOWN 5#define GAME_STATE_EXIT 6游戏先进入 GAME_STATE_INIT 状态 做好初始化工作进入 GAME_STATE_START_LEVEL 状态 重置每关的初始数据进入 GAME_STATE_RUN 循环 在这里执行游戏逻辑、输入检测,并绘制每一帧并返回windows重复第三步第三步中 按下Enter键进入GAME_STATE_PAUSE 状态 游戏将暂停,直到按下space键回到第三步第三步中 将生命用完(life值小于0
5、)进入GAME_STATE_OVER状态,直到按下R键回到第二步上述步骤中如按下Esc键 则进入GAME_STATE_SHUTDOWN状态 此时做结束工作 并发送WM_DESTROY消息进入GAME_STATE_EXIT状态 此时Game_Main(不做任何操作就返回2、图像处理部分考虑到游戏对速度的要求,图像处理主要利用比GDI快得多的DirectDraw完成(文字显示用了GDI)。所有Direct的相关代码都在被我封装在ddrawlib.cpp中,其中的全局变量和函数原型以及宏和定义都在ddrawlib.h申明。我这么做的目的是让自己习惯于利用引擎的API来编程。实际上ddrawlib就是
6、一个基于Direct的简单2D游戏引擎。关于该引擎的函数库说明,源代码中有详细的注释,这里不多讲了。3、声音处理部分声音处理部分并没有像图像一样用Direct去写。因为它对速度不的影响并不大。而DirectSound或者DirectMusic(或者2者的结合DirectAudio)过于复杂了。所以音效我只用了WIN API PlaySound函数。而背景音乐用了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中如检测到还未过关就停止了也调用此函数重放int Play_Music(if(list_numint index = (level-1%list_num;/ 创建MCI设备句柄/ 如果句柄不为空先关闭
8、设备if(m_Audio!=NULLMCIWndStop(m_Audio;MCIWndClose(m_Audio;/创建m_Audio = MCIWndCreate(main_window_handle,main_instance,WS_CHILD | MCIWNDF_NOMENU,(char*playlistindex;/播放MCIWndPlay(m_Audio;return (1;/检测音乐使否已放完是就重播,不是就返回0,是就返回1int Music_Is_Stop(if(MCIWndGetPosition(m_Audio = MCIWndGetLength(m_Audioreturn (1;return (0;个人小结:我通过这个编写过程获得了不少的经验,练习了怎么编写WIN32程序,知道了怎么规划游戏过程的框架,知道了怎么锁定帧率,知
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 桂赣渝对外贸易与经济增长的关系比较及对广西的启示:基于区域经济发展视角
- 根际土壤-微生物-蜈蚣草系统:砷的形态转化与解毒机制探秘
- 维修作业安全培训教育课件
- 核电工程钢板混凝土组合剪力墙面外弯剪性能的多维度解析与优化策略
- 核心企业主导的供应链融资模式创新与实践-基于苏宁集团的深度剖析
- 2026届浙江省义乌地区重点达标名校中考五模数学试题含解析
- 校园网虚拟化高可用系统的深度设计与多元应用研究
- 树种与试材规格对ACQ-D处理材铜流失性的多维度解析
- 辽宁省东港地区2026届十校联考最后生物试题含解析
- 雨课堂学堂在线学堂云《体能训练理论与方法(北京体育)》单元测试考核答案
- 睡眠监测室工作制度
- 2026年山东济南历下区九年级中考语文一模考试试题(含解析)
- 2026四川成都双流区面向社会招聘政府雇员14人备考题库及答案详解(有一套)
- 2026年高中面试创新能力面试题库
- 2026北京市皇城粮油有限责任公司昌平区国资委系统内招聘6人笔试参考题库及答案解析
- 2025-2030光伏组件回收处理行业现状分析资源利用规划
- 2025-2026学年赣美版(新教材)小学美术三年级下册《美丽建设者》教学课件
- 2026年中国邮政集团有限公司重庆市分公司校园招聘笔试备考题库及答案解析
- 眼科护理操作规范
- (完整word版)wincc中使用VBS脚本读写SQLServer数据库文件
- 《高一物理动能定理》ppt课件
评论
0/150
提交评论