MFC游戏开发6by七十一雾央


讲述图像双缓冲技术,并实现一个游戏动画demo 《MFC游戏开发》源代码 http://blog.csdn.net/u011371356 欢迎大家关注
资源截图
代码片段和文件信息

// ChildView.cpp : CChildView 类的实现
//

#include “stdafx.h“
#include “GameMFC.h“
#include “ChildView.h“

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

//定时器的名称用宏比较清楚
#define TIMER_PAINT 1
#define TIMER_HEROMOVE 2
//四个方向
#define DOWN 0
#define LEFT 1
#define RIGHT 2
#define UP 3

// CChildView

CChildView::CChildView()
{
}

CChildView::~CChildView()
{
}


BEGIN_MESSAGE_MAP(CChildView CWnd)
ON_WM_PAINT()
ON_WM_KEYDOWN()
ON_WM_LBUTTONDOWN()
ON_WM_TIMER()
ON_WM_CREATE()
END_MESSAGE_MAP()


//将png贴图透明
void TransparentPNG(CImage *png)
{
for(int i = 0; i GetWidth(); i++)
{
for(int j = 0; j GetHeight(); j++)
{
unsigned char* pucColor = reinterpret_cast(png->GetPixelAddress(i  j));
pucColor[0] = pucColor[0] * pucColor[3] / 255;
pucColor[1] = pucColor[1] * pucColor[3] / 255;
pucColor[2] = pucColor[2] * pucColor[3] / 255;
}
}
}

// CChildView 消息处理程序

BOOL CChildView::PreCreateWindow(CREATESTRUCT& cs) 
{
if (!CWnd::PreCreateWindow(cs))
return FALSE;

cs.dwExstyle |= WS_EX_CLIENTEDGE;
cs.style &= ~WS_BORDER;
cs.lpszClass = AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS 
::LoadCursor(NULL IDC_ARROW) reinterpret_cast(COLOR_WINDOW+1) NULL);

//-----------------------------------游戏数据初始化部分-------------------------

//加载背景
m_bg.Load(“bg.png“);
//加载英雄图片
MyHero.hero.Load(“heroMove.png“);
TransparentPNG(&MyHero.hero);
//初始化英雄状态
MyHero.direct=UP;
MyHero.frame=0;
//设置英雄初始位置
MyHero.x=100;    
MyHero.y=400;

return TRUE;
}

void CChildView::OnPaint() 
{
//获取窗口DC指针
CDC *cDC=this->GetDC();
//获取窗口大小
GetClientRect(&m_client);
//创建缓冲DC
m_cacheDC.CreateCompatibleDC(NULL);
m_cacheCBitmap.CreateCompatibleBitmap(cDCm_client.Width()m_client.Height());
m_cacheDC.Selectobject(&m_cacheCBitmap);

//————————————————————开始绘制——————————————————————
//贴背景现在贴图就是贴在缓冲DC:m_cache中了
m_bg.Draw(m_cacheDCm_client);
//贴英雄
MyHero.hero.Draw(m_cacheDCMyHero.xMyHero.y8080MyHero.frame*80MyHero.direct*808080);
//最后将缓冲DC内容输出到窗口DC中
cDC->BitBlt(00m_client.Width()m_client.Height()&m_cacheDC00SRCCOPY);

//————————————————————绘制结束—————————————————————

//在绘制完图后使窗口区有效
ValidateRect(&m_client);
//释放缓冲DC
m_cacheDC.DeleteDC();
//释放对象
m_cacheCBitmap.Deleteobject();
//释放窗口DC
ReleaseDC(cDC);
}

//按键响应函数
void CChildView::onkeydown(UINT nChar UINT nRepCnt UINT nFlags)
{
//nChar表示按下的键值
switch(nChar)
{
case ‘d‘:         //游戏中按下的键当然应该不区分大小写了
case ‘D‘:
MyHero.direct=RIGHT;
MyHero.x+=5;
break;
case ‘a‘:
case ‘A‘:
MyHero.direct=LEFT;
MyHero.x-=5;
break;
case ‘w‘:
case ‘W‘:
MyHero.direct=UP;
MyHero.y-=5;
break;
case ‘s‘:
case ‘S‘:
MyHero.direct=DOWN;
MyHero.y+=5;
break;
}
}

//鼠标左键单击响应函数
void CChildView::OnLButtonDown(UINT nFlags CPoint point)
{
char bufPos[50];
sprintf(bufPos“你单击了点X:%dY:%d“point.x

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     227328  2013-07-15 17:03  MFC游戏开发6by七十一雾央GameMFCDebugGameMFC.exe

     文件    1740132  2013-07-15 17:03  MFC游戏开发6by七十一雾央GameMFCDebugGameMFC.ilk

     文件    5393408  2013-07-15 17:03  MFC游戏开发6by七十一雾央GameMFCDebugGameMFC.pdb

     文件    1417800  2013-07-14 23:08  MFC游戏开发6by七十一雾央GameMFCGameMFCg.png

     文件       4026  2013-07-15 16:53  MFC游戏开发6by七十一雾央GameMFCGameMFCChildView.cpp

     文件        966  2013-07-15 16:50  MFC游戏开发6by七十一雾央GameMFCGameMFCChildView.h

     文件     136836  2013-07-15 17:03  MFC游戏开发6by七十一雾央GameMFCGameMFCDebugChildView.obj

     文件       2902  2013-07-15 17:03  MFC游戏开发6by七十一雾央GameMFCGameMFCDebugcl.command.1.tlog

     文件      49572  2013-07-15 17:03  MFC游戏开发6by七十一雾央GameMFCGameMFCDebugCL.read.1.tlog

     文件       2264  2013-07-15 17:03  MFC游戏开发6by七十一雾央GameMFCGameMFCDebugCL.write.1.tlog

     文件       4027  2013-07-15 14:43  MFC游戏开发6by七十一雾央GameMFCGameMFCDebugGameMFC.Build.CppClean.log

     文件        667  2013-07-15 14:43  MFC游戏开发6by七十一雾央GameMFCGameMFCDebugGameMFC.exe.embed.manifest

     文件        732  2013-07-15 14:43  MFC游戏开发6by七十一雾央GameMFCGameMFCDebugGameMFC.exe.embed.manifest.res

     文件        381  2013-07-15 17:03  MFC游戏开发6by七十一雾央GameMFCGameMFCDebugGameMFC.exe.intermediate.manifest

     文件         59  2013-07-15 17:03  MFC游戏开发6by七十一雾央GameMFCGameMFCDebugGameMFC.lastbuildstate

     文件       2550  2013-07-15 17:03  MFC游戏开发6by七十一雾央GameMFCGameMFCDebugGameMFC.log

     文件      54984  2013-07-15 16:50  MFC游戏开发6by七十一雾央GameMFCGameMFCDebugGameMFC.obj

     文件   33685504  2013-07-15 14:43  MFC游戏开发6by七十一雾央GameMFCGameMFCDebugGameMFC.pch

     文件      75312  2013-07-15 14:43  MFC游戏开发6by七十一雾央GameMFCGameMFCDebugGameMFC.res

     文件        204  2013-07-15 14:43  MFC游戏开发6by七十一雾央GameMFCGameMFCDebugGameMFC_manifest.rc

     文件          2  2013-07-15 17:03  MFC游戏开发6by七十一雾央GameMFCGameMFCDebuglink-cvtres.read.1.tlog

     文件          2  2013-07-15 17:03  MFC游戏开发6by七十一雾央GameMFCGameMFCDebuglink-cvtres.write.1.tlog

     文件          2  2013-07-15 17:03  MFC游戏开发6by七十一雾央GameMFCGameMFCDebuglink.5320-cvtres.read.1.tlog

     文件          2  2013-07-15 17:03  MFC游戏开发6by七十一雾央GameMFCGameMFCDebuglink.5320-cvtres.write.1.tlog

     文件          2  2013-07-15 17:03  MFC游戏开发6by七十一雾央GameMFCGameMFCDebuglink.5320.read.1.tlog

     文件          2  2013-07-15 17:03  MFC游戏开发6by七十一雾央GameMFCGameMFCDebuglink.5320.write.1.tlog

     文件          2  2013-07-15 17:03  MFC游戏开发6by七十一雾央GameMFCGameMFCDebuglink.7812-cvtres.read.1.tlog

     文件          2  2013-07-15 17:03  MFC游戏开发6by七十一雾央GameMFCGameMFCDebuglink.7812-cvtres.write.1.tlog

     文件          2  2013-07-15 17:03  MFC游戏开发6by七十一雾央GameMFCGameMFCDebuglink.7812.read.1.tlog

     文件          2  2013-07-15 17:03  MFC游戏开发6by七十一雾央GameMFCGameMFCDebuglink.7812.write.1.tlog

............此处省略58个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)