基于VC++打老鼠游戏的设计(4)
时间:2022-07-09 16:29 来源:毕业论文 作者:毕业论文 点击:次
while(1) { if( PeekMessage(&msg,NULL,0,0,PM_NOREMOVE))//消息循环 { if (!GetMessage(&msg,NULL,0,0))//接收消息 { return msg。wParam; } TranslateMessage(&msg);//翻译消息 DispatchMessage(&msg);//处理消息 } else if( bActive) { UpdateFrame(); } else { WaitMessage(); } } KillTimer(hwnd,1);//时钟停止 return msg。wParam; } 键盘运用后,要先对其进行构造, 构造函数主要调用WindowFunc函数: LRESULT CALLBACK WindowFunc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam) { switch(message) { case WM_ACTIVATEAPP:// bActive = wParam; break; 游戏构造后,要进行游戏中各种页面的创建,主要运用了directdraw来对游戏形象进行创建。Directdraw主要用于视频的输入输出,通过DirectDraw,视频处理程序以更加方便快捷的方式来进行高效的编写。DirectDraw提供了完成管理多页面 、直接访问视频RAM 、换页、后台缓存、管理调色板、裁剪和视频端口的工具[11]。创建DirectDraw 对象一个实例如下, DirectDrawCreate(NULL, &lpDD, NULL); 该实例中lpDD是调用DirectDrawCreate 函数创建的DirectDraw对象的指针,指向DirectDraw对象的地址。之后可以通过调用IDirectDraw::SetCooperativeLevel和IDirectDraw::SetDisplayMode 方法来设定模式要求和选择显示分辨率[12]。设置模式为协作模式后,通过调用IDirectDrawSurface函数进行主页面和离屏页面的创建,实例如下: //创建主页面 lpDD->CreateSurface(&ddsd, &lpDDSFront, NULL); //创建离屏页面 lpDD->CreateSurface( &ddsd, &lpDDSBack, NULL ); 当窗口模式设置为协作级别,主页面和离屏页面创建后,则可以开始进行游戏中重要元素—游戏形象的创建,实例如下: //创建老鼠页面 lpDD->CreateSurface( &ddsd, &lpDDSMouse[0], NULL ); DDReLoadBitmap(lpDDSMouse[0], "MOUSE00。BMP"); DDSetColorKey(lpDDSMouse[0],RGB(0,0,255)); 本段程序中,老鼠形象通过函数DDReLoadBitmap调用设计好的BMP图像,MOUSE00老鼠图像分别对应上文中的黄老鼠。灰老鼠和粉老鼠图像同理对应MOUSE01和MOUSE02,程序同上,这里不再详细诉说。文献综述 //创建木锤 lpDD->CreateSurface( &ddsd, &lpDDSHammer, NULL ); DDReLoadBitmap(lpDDSHammer, "HAM。BMP"); DDSetColorKey(lpDDSHammer,RGB(0,0,255)); 同创建老鼠形象一样,也是通过函数调用以HAM。BMP为名的木槌形象,木槌形象如图4所示 图4 木槌形象 同理,可以通过函数DDReLoadBitmap调用图片,依次完成火花、标题、背景、时间和分数页面的创建。最后进行Clipper裁剪器的创建,Clipper裁剪器也是用DirectDraw进行创建。到此,游戏的前期工作已准备完毕。 3。3。2 进入游戏界面 在弹出游戏窗口后,根据游戏界面logo的提示,点击游戏页面任意处开始游戏。会弹出一个对话框,如图5所示: 图5 弹出的对话框 弹出的对话框的主要作用是向玩家介绍游戏的玩法和注意事项,实现这一现象的程序如下,主要是用来初始化老鼠洞: for (i =0 ;i<9;i++) { mouse[i] = 0; status[i] = 0; behit[i] = 0; } MessageBox(hwnd,"游戏开始咯!\n黄色的老鼠只要打一下\n灰色的老鼠要连续打三下\n粉红色的老鼠不要随便打哦\n时间限制20秒\n打掉一只灰色的老鼠可以加1秒\n","注意啦!",MB_OK); (责任编辑:qin) |