資源簡介
講述圖像雙緩沖技術,并實現一個游戲動畫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個文件信息
評論
共有 條評論