当前位置: 首页 > 工具软件 > LuoYing RPG > 使用案例 >

网络游戏demo开发实例:多人在线RPG游戏(MMO RPG)demo的开发记录(第1篇)

公孙志
2023-12-01

version2

主要内容:贴图

所属部分:客户端

代码地址 https://github.com/changjixiong/MMO-RPGGame, 如何获得代码,请参考如何用SVN从github上检出代码的不同版本

邮件地址:changjixiong@gmail.com

本系列目录


由于VC自动生成的代码,有点罗嗦,而且,我也不需要用到RC文件,希望能看到精简的代码,所以windows 的窗口生成代码,我使用了《windows游戏编程大师技巧》里面的代码(见p66~p68)。


在CreateWindowEx 调用了一个自定义的函数AdjustWindow(HWND hwnd)用于调整窗口的大小和位置,需要注意的是,最初创建的窗口大小是640X480的,并且已经居中了,但是,这个尺寸是包含标题栏的,所以需要用函数AdjustWindow(HWND hwnd)调整一下,调整后窗口的尺寸比640X480略大的,而客户区的尺寸是640X480。

下面的代码初始化HDC 和 HBITMAP 用于贴图, 用BitBlt向屏幕贴图,最后释放资源。

        HDC hdcScreen	= GetDC(hwnd);
	HDC hdcGround	= CreateCompatibleDC(hdcScreen);

	HBITMAP bitmap	= (HBITMAP)LoadImage(NULL,"./pic/map/ground.BMP",IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
	HBITMAP bitOld	= (HBITMAP)SelectObject(hdcGround,bitmap);



	// enter main event loop, but this time we use PeekMessage()
	// instead of GetMessage() to retrieve messages
	while(TRUE)
		{
		// test if there is a message in queue, if so get it
		if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))
		   { 
		   // test if this is a quit
		   if (msg.message == WM_QUIT)
			   break;
		
		   // translate any accelerator keys
		   TranslateMessage(&msg);

		   // send the message to the window proc
		   DispatchMessage(&msg);
		   } // end if
    
		// main game processing goes here
		// Game_Main(); // or whatever your loop is called		
		BitBlt(hdcScreen, 0, 0, 640, 480, hdcGround, 0, 0, SRCCOPY);
		
		//
		} // end while

	//Game_Shutdown();	
	SelectObject(hdcGround, bitOld);
	DeleteObject(bitmap);
	DeleteDC(hdcGround);




 类似资料: