基于VC++打老鼠游戏的设计(4)_毕业论文

毕业论文移动版

毕业论文 > 计算机论文 >

基于VC++打老鼠游戏的设计(4)

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)