资源简介
讲述图像双缓冲技术,并实现一个游戏动画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七十一雾央\GameMFC\Debug\GameMFC.exe
文件 1740132 2013-07-15 17:03 MFC游戏开发6by七十一雾央\GameMFC\Debug\GameMFC.ilk
文件 5393408 2013-07-15 17:03 MFC游戏开发6by七十一雾央\GameMFC\Debug\GameMFC.pdb
文件 1417800 2013-07-14 23:08 MFC游戏开发6by七十一雾央\GameMFC\GameMFC\bg.png
文件 4026 2013-07-15 16:53 MFC游戏开发6by七十一雾央\GameMFC\GameMFC\ChildView.cpp
文件 966 2013-07-15 16:50 MFC游戏开发6by七十一雾央\GameMFC\GameMFC\ChildView.h
文件 136836 2013-07-15 17:03 MFC游戏开发6by七十一雾央\GameMFC\GameMFC\Debug\ChildView.obj
文件 2902 2013-07-15 17:03 MFC游戏开发6by七十一雾央\GameMFC\GameMFC\Debug\cl.command.1.tlog
文件 49572 2013-07-15 17:03 MFC游戏开发6by七十一雾央\GameMFC\GameMFC\Debug\CL.read.1.tlog
文件 2264 2013-07-15 17:03 MFC游戏开发6by七十一雾央\GameMFC\GameMFC\Debug\CL.write.1.tlog
文件 4027 2013-07-15 14:43 MFC游戏开发6by七十一雾央\GameMFC\GameMFC\Debug\GameMFC.Build.CppClean.log
文件 667 2013-07-15 14:43 MFC游戏开发6by七十一雾央\GameMFC\GameMFC\Debug\GameMFC.exe.em
文件 732 2013-07-15 14:43 MFC游戏开发6by七十一雾央\GameMFC\GameMFC\Debug\GameMFC.exe.em
文件 381 2013-07-15 17:03 MFC游戏开发6by七十一雾央\GameMFC\GameMFC\Debug\GameMFC.exe.intermediate.manifest
文件 59 2013-07-15 17:03 MFC游戏开发6by七十一雾央\GameMFC\GameMFC\Debug\GameMFC.lastbuildstate
文件 2550 2013-07-15 17:03 MFC游戏开发6by七十一雾央\GameMFC\GameMFC\Debug\GameMFC.log
文件 54984 2013-07-15 16:50 MFC游戏开发6by七十一雾央\GameMFC\GameMFC\Debug\GameMFC.obj
文件 33685504 2013-07-15 14:43 MFC游戏开发6by七十一雾央\GameMFC\GameMFC\Debug\GameMFC.pch
文件 75312 2013-07-15 14:43 MFC游戏开发6by七十一雾央\GameMFC\GameMFC\Debug\GameMFC.res
文件 204 2013-07-15 14:43 MFC游戏开发6by七十一雾央\GameMFC\GameMFC\Debug\GameMFC_manifest.rc
文件 2 2013-07-15 17:03 MFC游戏开发6by七十一雾央\GameMFC\GameMFC\Debug\li
文件 2 2013-07-15 17:03 MFC游戏开发6by七十一雾央\GameMFC\GameMFC\Debug\li
文件 2 2013-07-15 17:03 MFC游戏开发6by七十一雾央\GameMFC\GameMFC\Debug\li
文件 2 2013-07-15 17:03 MFC游戏开发6by七十一雾央\GameMFC\GameMFC\Debug\li
文件 2 2013-07-15 17:03 MFC游戏开发6by七十一雾央\GameMFC\GameMFC\Debug\li
文件 2 2013-07-15 17:03 MFC游戏开发6by七十一雾央\GameMFC\GameMFC\Debug\li
文件 2 2013-07-15 17:03 MFC游戏开发6by七十一雾央\GameMFC\GameMFC\Debug\li
文件 2 2013-07-15 17:03 MFC游戏开发6by七十一雾央\GameMFC\GameMFC\Debug\li
文件 2 2013-07-15 17:03 MFC游戏开发6by七十一雾央\GameMFC\GameMFC\Debug\li
文件 2 2013-07-15 17:03 MFC游戏开发6by七十一雾央\GameMFC\GameMFC\Debug\li
............此处省略58个文件信息
相关资源
- 《MFC游戏开发》笔记九 碰撞检测 怪物
- MFC+开发人员指南.pdf
- MFC 套接字Socket文件传输
- 源代码——MFC的WebBrowser控件 C++与ja
- 基于mfc和sql的学生信息管理系统
- MFC c++ 实现简易电话簿
- visual c++ 自绘控件 菜单 MFC界面 资源
- 兄弟 DCP-7080 7080D 7180DN MFC7380 7480D 788
- 基于数据库的MFC登陆验证系统
- vc++之mfc屏幕监控系统源代码
- mfc下实现的学生成绩管理系统
- C++ MFC连接数据库(VisualStudio开发)
- 整理C++实现excel和wps表格读写
- 《C++游戏开发》笔记十四 平滑过渡的
- 基于OpenCV的人脸验证和人脸识别MFC程
- ffmpeg简易播放器-音视频同步
- MFC.Windows程序设计.第二版英文版.pdf
- MFC通过OpenCV 显示到Picture control
- Halcon+MFC实现相机畸变校正与手眼九点
- dll封装MFC对话框资源
- 吃豆子游戏 C++
- MFC滚动字幕源码
- C++ MFC 吹泡泡 源代码
- 基于遗传算法的MFC矩形排样UI
- MFC IP地址 网关 MAC地址获取
- VS2008下MFC做的模拟时钟,还带数字显
- 基于MFC的图片浏览器代码
- modbus tcp/rtu客户端服务端通讯程序合集
- directX12游戏开发 英文版pdf + 配套源码
- 基于MFC的音乐播放器代码
评论
共有 条评论