//========================================================================
//TITLE:
// "是男人就挺过二十秒"源代码
//AUTHOR:
// norains
//DATE:
//wednesday 25-April-2007
//Environment:
// EVC4.0 + Standard SDK 4.2
// EVC4.0 + Standard SDK 5.0
//========================================================================
"是男人就挺过二十秒"简单的源代码,但基本结构已经完备,编译完毕在wince下便可正常游戏.
//
Bullets.h:interfacefortheCBulletsclass.
//
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
/**/
//
#ifndefBULLETS_H
#define
BULLETS_H
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
class
CBullets
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
public:
BOOLCheckCollision(constRECTrcArea);
voidDestroy();
voidMove();
voidDraw(HDChdc);
BOOLInitialize(intiCount,intiMaxMoveDistance,constRECT*prcWnd);
CBullets();
virtual~CBullets();
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
protected:
doubleAverageRandom(doublemin,doublemax);
intm_iCount;
RECTm_rcWnd;
intm_iMaxMoveDistance;
CRITICAL_SECTIONm_csBulletData;//TheMove()andtheCheckCollision()couldnotbecallinthesametime
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
typedefstruct
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
LONGx;
LONGy;
intiMoveDistX;
intiMoveDistY;
}BULLETDATA,*LPBULLETDATA;
LPBULLETDATAlpBullet;//Pointertothebullet
voidInitializeBullet(LPBULLETDATAlpBullet);
}
;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
#endif
//
#ifndefBULLETS_H
//
Bullets.cpp:implementationoftheCBulletsclass.
//
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
/**/
//
#include
"
stdafx.h
"
#include
"
Bullets.h
"
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
-------------------------------------------------------------------
//
Macrodefine
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
Theradiusofthebullet
#define
BULLET_RADIUS2
//
Thecolorofthebullet
#define
BULLET_COLORRGB(0,0,0)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
/**/
//
//
Construction/Destruction
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
/**/
//
CBullets::CBullets()
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
m_iCount=0;
m_iMaxMoveDistance=0;
lpBullet=NULL;
memset(&m_rcWnd,0,sizeof(m_rcWnd));
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//Initializethecriticalsection
InitializeCriticalSection(&m_csBulletData);
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
CBullets::
~
CBullets()
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
DeleteCriticalSection(&m_csBulletData);
}
//
--------------------------------------------------------------------
//
Description:
//
Initializethebullets
//
//
Parameters:
//
iCount:[in]Thecountofthebullettocreate
//
iMaxMoveDistance:[in]Themaxdistancetomovebyeachmovingaction,
//
andthevalueshouldnotmorethanthehalfoftheplane
//
prcWnd:[in]Therectofthewindowtoplaythebullet
//
//
ReturnValues:
//
TRUE:Succeed
//
FALSE:Failed
//
--------------------------------------------------------------------
BOOLCBullets::Initialize(
int
iCount,
int
iMaxMoveDistance,
const
RECT
*
prcWnd)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
m_iCount=iCount;
m_rcWnd=*prcWnd;
m_iMaxMoveDistance=iMaxMoveDistance;
lpBullet=newBULLETDATA[m_iCount];
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
if(lpBullet==NULL)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
returnFALSE;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//SettheseedfortheAverageRandom()function
srand(GetTickCount());
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
for(inti=0;i<m_iCount;i++)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
InitializeBullet(&lpBullet[i]);
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
returnTRUE;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
--------------------------------------------------------------------
//
Description:
//
Initializethesinglebulletsposition
//
--------------------------------------------------------------------
void
CBullets::InitializeBullet(LPBULLETDATAlpBullet)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
//BecausethereturnvalueofAverageRandom()isdoubletype,
//andchangthevaluetoint.
//Ifyourusinglikethat:AverageRandom(1,4);
//thenumber4ishardtocreate!
intiRandom=(int)AverageRandom(1,5);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//Thebulletmustbeginintheedge
if(iRandom==1)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
lpBullet->x=m_rcWnd.left;
lpBullet->y=(int)AverageRandom(m_rcWnd.top,m_rcWnd.bottom);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//Setthemovedirection
lpBullet->iMoveDistX=1;
intiDirection=(int)AverageRandom(1,3);
if(iDirection==1)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
lpBullet->iMoveDistY=1;
}
else
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
lpBullet->iMoveDistY=-1;
}
}
elseif(iRandom==2)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
lpBullet->x=m_rcWnd.right;
lpBullet->y=(int)AverageRandom(m_rcWnd.top,m_rcWnd.bottom);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//Setthemovedirection
lpBullet->iMoveDistX=-1;
intiDirection=(int)AverageRandom(1,3);
if(iDirection==1)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
lpBullet->iMoveDistY=1;
}
else
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
lpBullet->iMoveDistY=-1;
}
}
elseif(iRandom==3)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
lpBullet->x=(int)AverageRandom(m_rcWnd.left,m_rcWnd.right);
lpBullet->y=m_rcWnd.top;
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//Setthemovedirection
lpBullet->iMoveDistY=1;
intiDirection=(int)AverageRandom(1,3);
if(iDirection==1)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
lpBullet->iMoveDistX=1;
}
else
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
lpBullet->iMoveDistX=-1;
}
}
elseif(iRandom==4)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
lpBullet->x=(int)AverageRandom(m_rcWnd.left,m_rcWnd.right);
lpBullet->y=m_rcWnd.bottom;
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//Setthemovedirection
lpBullet->iMoveDistY=-1;
intiDirection=(int)AverageRandom(1,3);
if(iDirection==1)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
lpBullet->iMoveDistX=1;
}
else
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
lpBullet->iMoveDistX=-1;
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//Setthemovedistance
iRandom=(int)AverageRandom(1,m_iMaxMoveDistance);
lpBullet->iMoveDistX*=iRandom;
iRandom=(int)AverageRandom(1,m_iMaxMoveDistance);
lpBullet->iMoveDistY*=iRandom;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
--------------------------------------------------------------------
//
Description:
//
Createtherandomnumber.Beforecallingthemethod,youmustsettheseed
//
byusingsrand()function.
//
//
Parameters:
//
dMin:[in]Theminnumber
//
dMax:[in]Themaxnumber
//
--------------------------------------------------------------------
double
CBullets::AverageRandom(
double
dMin,
double
dMax)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
intiMin=(int)(dMin*10000);
intiMax=(int)(dMax*10000);
intiRand=rand()*rand();
intiDiff=iMax-iMin;
doubledResult=(iRand%iDiff+iMin)/10000.0;
returndResult;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
--------------------------------------------------------------------
//
Description:
//
Movethebullets
//
---------------------------------------------------------------------
void
CBullets::Move()
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
EnterCriticalSection(&m_csBulletData);
for(inti=0;i<m_iCount;i++)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
lpBullet[i].x+=lpBullet[i].iMoveDistX;
lpBullet[i].y+=lpBullet[i].iMoveDistY;
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
if(lpBullet[i].x<m_rcWnd.left||lpBullet[i].x>m_rcWnd.right||lpBullet[i].y<m_rcWnd.top||lpBullet[i].y>m_rcWnd.bottom)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
InitializeBullet(&lpBullet[i]);
}
}
LeaveCriticalSection(&m_csBulletData);
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
--------------------------------------------------------------------
//
Description:
//
DrawthebullettotheDC
//
---------------------------------------------------------------------
void
CBullets::Draw(HDChdc)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
HBRUSHhBrush=CreateSolidBrush(BULLET_COLOR);
HGDIOBJhOldSel=SelectObject(hdc,hBrush);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
RECTrcBullet=...{0};
for(inti=0;i<m_iCount;i++)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
rcBullet.left=lpBullet[i].x-BULLET_RADIUS;
rcBullet.top=lpBullet[i].y-BULLET_RADIUS;
rcBullet.right=lpBullet[i].x+BULLET_RADIUS;
rcBullet.bottom=lpBullet[i].y+BULLET_RADIUS;
Ellipse(hdc,rcBullet.left,rcBullet.top,rcBullet.right,rcBullet.bottom);
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
SelectObject(hdc,hOldSel);
DeleteObject(hBrush);
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
--------------------------------------------------------------------
//
Description:
//
Destroythebullet
//
---------------------------------------------------------------------
void
CBullets::Destroy()
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
if(lpBullet!=NULL)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
delete[]lpBullet;
lpBullet=NULL;
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
--------------------------------------------------------------------
//
Description:
//
Checkthecollision
//
//
ReturnValues:
//
TRUE:Collided.
//
FALSE:Nocollision
//
---------------------------------------------------------------------
BOOLCBullets::CheckCollision(
const
RECTrcArea)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
BOOLbCollide=FALSE;
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
EnterCriticalSection(&m_csBulletData);
for(inti=0;i<m_iCount;i++)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
if(lpBullet[i].x>=rcArea.left&&lpBullet[i].x<=rcArea.right&&lpBullet[i].y>=rcArea.top&&lpBullet[i].y<=rcArea.bottom)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
bCollide=TRUE;
break;
}
}
LeaveCriticalSection(&m_csBulletData);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
returnbCollide;
}
//
GameWnd.h:interfacefortheCGameWndclass.
//
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
/**/
//
#ifndefGAMEWND_H
#define
GAMEWND_H
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
#include
"
Bullets.h
"
#include
"
Plane.h
"
#include
"
Text.h
"
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
class
CGameWnd
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
public:
BOOLShowWindow(BOOLbShow);
BOOLInitialize(HINSTANCEhInst);
staticCGameWnd*GetInstance();
virtual~CGameWnd();
protected:
voidCheckMenu();
voidOnMenuLevel(intiLevel);
voidOnCreate(HWNDhWnd,UINTwMsg,WPARAMwParam,LPARAMlParam);
voidSetSkewingOnKey();
voidOnKeyUp(HWNDhWnd,UINTwMsg,WPARAMwParam,LPARAMlParam);
voidOnKeyDown(HWNDhWnd,UINTwMsg,WPARAMwParam,LPARAMlParam);
voidOnLButtonUp(HWNDhWnd,UINTwMsg,WPARAMwParam,LPARAMlParam);
voidOnLButtonDown(HWNDhWnd,UINTwMsg,WPARAMwParam,LPARAMlParam);
voidOnMouseMove(HWNDhWnd,UINTwMsg,WPARAMwParam,LPARAMlParam);
voidEndGame();
staticDWORDWINAPIRefreshScreenThread(PVOIDpArg);
voidStartGame();
voidOnPaint(HWNDhWnd,UINTwMsg,WPARAMwParam,LPARAMlParam);
voidOnDestroy(HWNDhWnd,UINTwMsg,WPARAMwParam,LPARAMlParam);
staticLRESULTWndProc(HWNDhWnd,UINTwMsg,WPARAMwParam,LPARAMlParam);
CGameWnd();
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
staticCGameWnd*m_pInstance;
HINSTANCEm_hInst;
HWNDm_hWnd;
RECTm_rcWndPlay;//Thewindowtoplaythegame,bebaseonthewindowscale
RECTm_rcWndMain;//Themainwindow
CBulletsm_Bullets;
CPlanem_Plane;
BOOLm_bMovePlane;//Movetheplaneornot
BOOLm_bCollide;
POINTm_ptPlaneSkewing;//Thenextpointtomovetofortheplane
HWNDm_hWndCB;//Commandbar
ULONGm_ulTimeCount;//Thecontinuetimecount
CTextm_TxtTime;
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//Thegamesettingdata
typedefstruct
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
//Fortheplane
intiPlaneMoveDistance;//Thedistancetomoveperacttion
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//Forthebullet
intiBulletMaxMoveDistance;//Themaxdistancetomove
intiBulletCount;//Thecountofbullets
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//Forthegame
intiRefreshInterval;//Theintervaltimetorefreshscreen
}SETTINGDATA,*LPSETTINGDATA;
SETTINGDATAm_Setting;
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//Thekeypushedstatus
typedefstruct
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
BOOLbPushKeyUp;
BOOLbPushKeyDown;
BOOLbPushKeyLeft;
BOOLbPushKeyRight;
}PUSHKEYSTATUS,*LPPUSHKEYSTATUS;
PUSHKEYSTATUSm_KeyStatus;
}
;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
#endif
//
#ifndefGAMEWND_H
//
GameWnd.cpp:implementationoftheCGameWndclass.
//
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
/**/
//
#include
"
stdafx.h
"
#include
"
GameWnd.h
"
#include
"
resource.h
"
#include
"
commctrl.h
"
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
----------------------------------------------------------------
//
Macrodefine
#define
WND_CLASSTEXT("Evade_Class")
#define
WND_TITLETEXT("Evade_Title")
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
TheIDforthecommandbar
#define
ID_COMMANDBAR100
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
Screenwidth
#define
SCREEN_WIDTHGetSystemMetrics(SM_CXSCREEN)
//
Screenheight
#define
SCREEN_HEIGHTGetSystemMetrics(SM_CYSCREEN)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
Thewindowposition
#define
MAINWND_POS_X0
#define
MAINWND_POS_Y0
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
Level_1value
#define
LEVEL1_BULLET_COUNT100
#define
LEVEL1_BULLET_MAXMOVEDISTANCE3
#define
LEVEL1_PLANE_MOVEDISTANCE3
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
Level_2value
#define
LEVEL2_BULLET_COUNT150
#define
LEVEL2_BULLET_MAXMOVEDISTANCE4
#define
LEVEL2_PLANE_MOVEDISTANCE3
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
Level_3value
#define
LEVEL3_BULLET_COUNT200
#define
LEVEL3_BULLET_MAXMOVEDISTANCE5
#define
LEVEL3_PLANE_MOVEDISTANCE3
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
Defaultvalue
#define
DEFAULT_BULLET_COUNTLEVEL1_BULLET_COUNT
#define
DEFAULT_BULLET_MAXMOVEDISTANCELEVEL1_BULLET_MAXMOVEDISTANCE
#define
DEFAULT_PLANE_MOVEDISTANCELEVEL1_PLANE_MOVEDISTANCE
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
#define
DEFAULT_REFRESH_INTERVAL50
//
0.05s
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
#define
DEFAULT_TEXT_TIME_COLORRGB(0,0,255)
#define
DEFAULT_TEXT_TIME_HEIGHT16
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
Theoffsetofthetimetext
#define
TXT_TIME_OFFSET_TOP2
#define
TXT_TIME_OFFSET_LEFT(SCREEN_WIDTH-100)
#define
TXT_TIME_OFFSET_RIGHT4
#define
TXT_TIME_HEIGHT40
//
-----------------------------------------------------------------
//
Initialize
CGameWnd
*
CGameWnd::m_pInstance
=
NULL;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
/**/
//
//
Construction/Destruction
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
/**/
//
CGameWnd::CGameWnd()
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
m_hWndCB=NULL;
m_bMovePlane=FALSE;
m_bCollide=FALSE;
m_hInst=NULL;
m_hWnd=NULL;
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
memset(&m_rcWndPlay,0,sizeof(m_rcWndPlay));
memset(&m_ptPlaneSkewing,0,sizeof(m_ptPlaneSkewing));
memset(&m_KeyStatus,0,sizeof(m_KeyStatus));
memset(&m_rcWndMain,0,sizeof(m_rcWndMain));
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
m_Setting.iBulletCount=DEFAULT_BULLET_COUNT;
m_Setting.iBulletMaxMoveDistance=DEFAULT_BULLET_MAXMOVEDISTANCE;
m_Setting.iRefreshInterval=DEFAULT_REFRESH_INTERVAL;
m_Setting.iPlaneMoveDistance=DEFAULT_PLANE_MOVEDISTANCE;
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
m_TxtTime.SetTextColor(DEFAULT_TEXT_TIME_COLOR);
m_TxtTime.SetTextHeight(DEFAULT_TEXT_TIME_HEIGHT);
m_TxtTime.SetFormat(DT_RIGHT|DT_VCENTER);
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
CGameWnd::
~
CGameWnd()
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
if(m_pInstance!=NULL)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
deletem_pInstance;
m_pInstance=NULL;
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
----------------------------------------------------------------
//
Description:
//
Gettheobjectinstance
//
-----------------------------------------------------------------
CGameWnd
*
CGameWnd::GetInstance()
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
if(m_pInstance==NULL)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
m_pInstance=newCGameWnd();
}
returnm_pInstance;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
----------------------------------------------------------------
//
Description:
//
Initializethewindow
//
-----------------------------------------------------------------
BOOLCGameWnd::Initialize(HINSTANCEhInst)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
m_hInst=hInst;
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
WNDCLASSws;
memset(&ws,0,sizeof(ws));
ws.lpfnWndProc=WndProc;
ws.hInstance=hInst;
ws.lpszClassName=WND_CLASS;
ws.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
if(RegisterClass(&ws)==FALSE)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
returnFALSE;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//Findthetaskbar
HWNDhWndTaskBar=FindWindow(TEXT("HHTaskBar"),NULL);
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
RECTrcTaskBar=...{0};
GetWindowRect(hWndTaskBar,&rcTaskBar);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
m_rcWndMain.left=MAINWND_POS_X;
m_rcWndMain.top=MAINWND_POS_Y;
m_rcWndMain.right=SCREEN_WIDTH;
m_rcWndMain.bottom=SCREEN_HEIGHT-(rcTaskBar.bottom-rcTaskBar.top);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
m_hWnd=CreateWindow(
WND_CLASS,
WND_TITLE,
WS_POPUP,
m_rcWndMain.left,
m_rcWndMain.top,
m_rcWndMain.right-m_rcWndMain.left,
m_rcWndMain.bottom-m_rcWndMain.top,
NULL,
NULL,
hInst,
NULL
);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
if(IsWindow(m_hWnd)==FALSE)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
returnFALSE;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
RECTrcCmdBar=...{0};
GetWindowRect(m_hWndCB,&rcCmdBar);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
m_rcWndPlay.left=m_rcWndMain.left;
m_rcWndPlay.right=m_rcWndMain.right;
m_rcWndPlay.top=m_rcWndMain.top+(rcCmdBar.bottom-rcCmdBar.top);
m_rcWndPlay.bottom=m_rcWndMain.bottom;
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
RECTrcTxtTime;
rcTxtTime.top=m_rcWndPlay.top+TXT_TIME_OFFSET_TOP;
rcTxtTime.left=m_rcWndPlay.left+TXT_TIME_OFFSET_LEFT;
rcTxtTime.right=m_rcWndPlay.right-TXT_TIME_OFFSET_RIGHT;
rcTxtTime.bottom=rcTxtTime.top+TXT_TIME_HEIGHT;
m_TxtTime.SetPosition(&rcTxtTime);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
CheckMenu();
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
returnTRUE;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
----------------------------------------------------------------
//
Description:
//
Thewindowprocess
//
-----------------------------------------------------------------
LRESULTCGameWnd::WndProc(HWNDhWnd,UINTwMsg,WPARAMwParam,LPARAMlParam)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
switch(wMsg)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
caseWM_DESTROY:
m_pInstance->OnDestroy(hWnd,wMsg,wParam,lParam);
return0;
caseWM_PAINT:
m_pInstance->OnPaint(hWnd,wMsg,wParam,lParam);
return0;
caseWM_ERASEBKGND:
//Needn'ttoredrawthebackground
return0;
caseWM_MOUSEMOVE:
m_pInstance->OnMouseMove(hWnd,wMsg,wParam,lParam);
return0;
caseWM_LBUTTONDOWN:
m_pInstance->OnLButtonDown(hWnd,wMsg,wParam,lParam);
return0;
caseWM_LBUTTONUP:
m_pInstance->OnLButtonUp(hWnd,wMsg,wParam,lParam);
return0;
caseWM_KEYDOWN:
m_pInstance->OnKeyDown(hWnd,wMsg,wParam,lParam);
return0;
caseWM_KEYUP:
m_pInstance->OnKeyUp(hWnd,wMsg,wParam,lParam);
return0;
caseWM_CREATE:
m_pInstance->OnCreate(hWnd,wMsg,wParam,lParam);
return0;
caseWM_COMMAND:
switch(LOWORD(wParam))
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
caseIDM_LEVEL_1:
m_pInstance->OnMenuLevel(IDM_LEVEL_1);
return0;
caseIDM_LEVEL_2:
m_pInstance->OnMenuLevel(IDM_LEVEL_2);
return0;
caseIDM_LEVEL_3:
m_pInstance->OnMenuLevel(IDM_LEVEL_3);
return0;
caseIDM_START:
m_pInstance->StartGame();
return0;
caseIDM_EXIT:
DestroyWindow(hWnd);
return0;
}
break;
}
returnDefWindowProc(hWnd,wMsg,wParam,lParam);
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
----------------------------------------------------------------
//
Description:
//
Showthewindow
//
-----------------------------------------------------------------
BOOLCGameWnd::ShowWindow(BOOLbShow)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
if(m_hWnd==NULL)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
returnFALSE;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
if(bShow==TRUE)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
::ShowWindow(m_hWnd,SW_SHOW);
}
else
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
::ShowWindow(m_hWnd,SW_HIDE);
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
returnTRUE;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
----------------------------------------------------------------
//
Description:
//
OnmessageWM_DESTROY
//
-----------------------------------------------------------------
void
CGameWnd::OnDestroy(HWNDhWnd,UINTwMsg,WPARAMwParam,LPARAMlParam)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
PostQuitMessage(0x00);
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
----------------------------------------------------------------
//
Description:
//
OnmessageWM_PAINT
//
-----------------------------------------------------------------
void
CGameWnd::OnPaint(HWNDhWnd,UINTwMsg,WPARAMwParam,LPARAMlParam)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
PAINTSTRUCTps;
HDChdc=BeginPaint(hWnd,&ps);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//CreatethememoryDC
HBITMAPhBitmap=CreateCompatibleBitmap(hdc,m_rcWndMain.right-m_rcWndMain.left,m_rcWndMain.bottom-m_rcWndMain.top);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
HDChdcMem=CreateCompatibleDC(hdc);
HGDIOBJhOldSel=SelectObject(hdcMem,hBitmap);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
Rectangle(hdcMem,m_rcWndMain.left,m_rcWndMain.top,m_rcWndMain.right,m_rcWndMain.bottom);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
m_Bullets.Draw(hdcMem);
if(m_bCollide==FALSE)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
m_Plane.DrawNormal(hdcMem);
}
else
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
m_Plane.DrawDestroy(hdcMem);
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
m_TxtTime.Draw(hdcMem);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
BitBlt(hdc,
m_rcWndMain.left,
m_rcWndMain.top,
m_rcWndMain.right-m_rcWndMain.left,
m_rcWndMain.bottom-m_rcWndMain.top,
hdcMem,
0,
0,
SRCCOPY);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
SelectObject(hdcMem,hOldSel);
DeleteObject(hBitmap);
DeleteDC(hdcMem);
EndPaint(hWnd,&ps);
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
----------------------------------------------------------------
//
Description:
//
Startthegame
//
-----------------------------------------------------------------
void
CGameWnd::StartGame()
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
m_bCollide=FALSE;
m_ulTimeCount=0;
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//Theplane
m_Plane.Initialize(&m_rcWndPlay);
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
POINTptPos=...{0};
ptPos.x=(m_rcWndPlay.right-m_rcWndPlay.left)/2;
ptPos.y=(m_rcWndPlay.bottom-m_rcWndPlay.top)/2;
m_Plane.SetCurrentPos(&ptPos);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//Thebullets
m_Bullets.Initialize(m_Setting.iBulletCount,m_Setting.iBulletMaxMoveDistance,&m_rcWndPlay);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
HANDLEhdThrd;
DWORDdwID;
hdThrd=CreateThread(NULL,NULL,RefreshScreenThread,NULL,NULL,&dwID);
CloseHandle(hdThrd);
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
----------------------------------------------------------------
//
Description:
//
Endthegame
//
-----------------------------------------------------------------
void
CGameWnd::EndGame()
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
InvalidateRect(m_hWnd,&m_rcWndPlay,TRUE);
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
----------------------------------------------------------------
//
Description:
//
Refreshthescreen
//
-----------------------------------------------------------------
DWORDWINAPICGameWnd::RefreshScreenThread(PVOIDpArg)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
DWORDdwResult=0;
while(TRUE)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//Movethebullets
m_pInstance->m_Bullets.Move();
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//Movetheplane
m_pInstance->m_Plane.Move(m_pInstance->m_ptPlaneSkewing.x,m_pInstance->m_ptPlaneSkewing.y);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//Checkcollision
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
RECTrcPlane=...{0};
m_pInstance->m_Plane.GetCurrentRect(&rcPlane);
m_pInstance->m_bCollide=m_pInstance->m_Bullets.CheckCollision(rcPlane);
if(m_pInstance->m_bCollide==TRUE)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
m_pInstance->EndGame();
break;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
m_pInstance->m_ulTimeCount+=m_pInstance->m_Setting.iRefreshInterval;
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
TCHARszTime[80]=...{0};
_stprintf(szTime,TEXT("%dms"),m_pInstance->m_ulTimeCount);
m_pInstance->m_TxtTime.SetText(szTime);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//Refreshthescreen
InvalidateRect(m_pInstance->m_hWnd,&m_pInstance->m_rcWndPlay,TRUE);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
Sleep(m_pInstance->m_Setting.iRefreshInterval);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
return0;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
----------------------------------------------------------------
//
Description:
//
OnmessageWM_MOUSEMOVE
//
-----------------------------------------------------------------
void
CGameWnd::OnMouseMove(HWNDhWnd,UINTwMsg,WPARAMwParam,LPARAMlParam)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
/**//*
if(m_bMovePlane==FALSE)
{
return;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
intiPosX=LOWORD(lParam);
intiPosY=HIWORD(lParam);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
POINTptPlaneCurPos={0};
m_Plane.GetCurrentPos(&ptPlaneCurPos);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//Thedistancefromcurrentplanepositiontothecurrentmouseposition
doubledDistance=sqrt(pow((iPosX-ptPlaneCurPos.x),2)+pow((iPosY-ptPlaneCurPos.y),2));
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
if(dDistance!=0)
{
m_ptPlaneSkewing.x=(int)(iPosX*(m_Setting.iPlaneMoveDistance/dDistance));
m_ptPlaneSkewing.y=(int)(iPosY*(m_Setting.iPlaneMoveDistance/dDistance));
}
else
{
m_ptPlaneSkewing.x=0;
m_ptPlaneSkewing.y=0;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//Setthedirection
if(iPosX<ptPlaneCurPos.x)
{
m_ptPlaneSkewing.x*=-1;
}
if(iPosY<ptPlaneCurPos.y)
{
m_ptPlaneSkewing.y*=-1;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
if(ptPlaneCurPos.x<m_rcWndPlay.left||ptPlaneCurPos.x>m_rcWndPlay.right)
{
m_ptPlaneSkewing.x=0;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
if(ptPlaneCurPos.y<m_rcWndPlay.top||ptPlaneCurPos.y>m_rcWndPlay.bottom)
{
m_ptPlaneSkewing.y=0;
}
*/
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
----------------------------------------------------------------
//
Description:
//
OnmessageWM_LBUTTONDOWN
//
-----------------------------------------------------------------
void
CGameWnd::OnLButtonDown(HWNDhWnd,UINTwMsg,WPARAMwParam,LPARAMlParam)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
SetCapture(m_hWnd);
m_bMovePlane=TRUE;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
----------------------------------------------------------------
//
Description:
//
OnmessageWM_LBUTTONUP
//
-----------------------------------------------------------------
void
CGameWnd::OnLButtonUp(HWNDhWnd,UINTwMsg,WPARAMwParam,LPARAMlParam)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
ReleaseCapture();
m_bMovePlane=FALSE;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
----------------------------------------------------------------
//
Description:
//
OnmessageWM_KEYDOWN
//
-----------------------------------------------------------------
void
CGameWnd::OnKeyDown(HWNDhWnd,UINTwMsg,WPARAMwParam,LPARAMlParam)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
intiKey=(int)wParam;
switch(iKey)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
caseVK_UP:
m_KeyStatus.bPushKeyUp=TRUE;
break;
caseVK_DOWN:
m_KeyStatus.bPushKeyDown=TRUE;
break;
caseVK_LEFT:
m_KeyStatus.bPushKeyLeft=TRUE;
break;
caseVK_RIGHT:
m_KeyStatus.bPushKeyRight=TRUE;
break;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
SetSkewingOnKey();
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
----------------------------------------------------------------
//
Description:
//
OnmessageWM_KEYUP
//
-----------------------------------------------------------------
void
CGameWnd::OnKeyUp(HWNDhWnd,UINTwMsg,WPARAMwParam,LPARAMlParam)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
intiKey=(int)wParam;
switch(iKey)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
caseVK_UP:
m_KeyStatus.bPushKeyUp=FALSE;
break;
caseVK_DOWN:
m_KeyStatus.bPushKeyDown=FALSE;
break;
caseVK_LEFT:
m_KeyStatus.bPushKeyLeft=FALSE;
break;
caseVK_RIGHT:
m_KeyStatus.bPushKeyRight=FALSE;
break;
}
SetSkewingOnKey();
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
----------------------------------------------------------------
//
Description:
//
Settheskewingbaseonthekeystatus
//
-----------------------------------------------------------------
void
CGameWnd::SetSkewingOnKey()
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
memset(&m_ptPlaneSkewing,0,sizeof(m_ptPlaneSkewing));
if(m_KeyStatus.bPushKeyLeft==TRUE&&m_KeyStatus.bPushKeyRight!=TRUE)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
m_ptPlaneSkewing.x=-1*abs(m_Setting.iPlaneMoveDistance);
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
if(m_KeyStatus.bPushKeyRight==TRUE&&m_KeyStatus.bPushKeyLeft!=TRUE)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
m_ptPlaneSkewing.x=abs(m_Setting.iPlaneMoveDistance);
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
if(m_KeyStatus.bPushKeyUp==TRUE&&m_KeyStatus.bPushKeyDown!=TRUE)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
m_ptPlaneSkewing.y=-1*abs(m_Setting.iPlaneMoveDistance);
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
if(m_KeyStatus.bPushKeyDown==TRUE&&m_KeyStatus.bPushKeyUp!=TRUE)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
m_ptPlaneSkewing.y=abs(m_Setting.iPlaneMoveDistance);
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
----------------------------------------------------------------
//
Description:
//
OnmessageWM_CREATE
//
-----------------------------------------------------------------
void
CGameWnd::OnCreate(HWNDhWnd,UINTwMsg,WPARAMwParam,LPARAMlParam)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
InitCommonControls();
m_hWndCB=CommandBar_Create(m_hInst,hWnd,ID_COMMANDBAR);
CommandBar_InsertMenubar(m_hWndCB,m_hInst,IDM_MAIN,0);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
----------------------------------------------------------------
//
Description:
//
OnthemenucommandIDM_LEVEL_X
//
-----------------------------------------------------------------
void
CGameWnd::OnMenuLevel(
int
iLevel)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
switch(iLevel)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
caseIDM_LEVEL_1:
m_Setting.iBulletCount=LEVEL1_BULLET_COUNT;
m_Setting.iBulletMaxMoveDistance=LEVEL1_BULLET_MAXMOVEDISTANCE;
m_Setting.iPlaneMoveDistance=LEVEL1_PLANE_MOVEDISTANCE;
break;
caseIDM_LEVEL_2:
m_Setting.iBulletCount=LEVEL2_BULLET_COUNT;
m_Setting.iBulletMaxMoveDistance=LEVEL2_BULLET_MAXMOVEDISTANCE;
m_Setting.iPlaneMoveDistance=LEVEL2_PLANE_MOVEDISTANCE;
break;
caseIDM_LEVEL_3:
m_Setting.iBulletCount=LEVEL3_BULLET_COUNT;
m_Setting.iBulletMaxMoveDistance=LEVEL3_BULLET_MAXMOVEDISTANCE;
m_Setting.iPlaneMoveDistance=LEVEL3_PLANE_MOVEDISTANCE;
break;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
CheckMenu();
EndGame();
StartGame();
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
----------------------------------------------------------------
//
Description:
//
Checkthemenu
//
-----------------------------------------------------------------
void
CGameWnd::CheckMenu()
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
HMENUhMenu=CommandBar_GetMenu(m_hWndCB,0);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//Uncheckotheritems
CheckMenuItem(hMenu,IDM_LEVEL_1,MF_UNCHECKED|MF_BYCOMMAND);
CheckMenuItem(hMenu,IDM_LEVEL_2,MF_UNCHECKED|MF_BYCOMMAND);
CheckMenuItem(hMenu,IDM_LEVEL_3,MF_UNCHECKED|MF_BYCOMMAND);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//Usethecountofbulletsasflag
switch(m_Setting.iBulletCount)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
caseLEVEL1_BULLET_COUNT:
CheckMenuItem(hMenu,IDM_LEVEL_1,MF_CHECKED|MF_BYCOMMAND);
break;
caseLEVEL2_BULLET_COUNT:
CheckMenuItem(hMenu,IDM_LEVEL_2,MF_CHECKED|MF_BYCOMMAND);
break;
caseLEVEL3_BULLET_COUNT:
CheckMenuItem(hMenu,IDM_LEVEL_3,MF_CHECKED|MF_BYCOMMAND);
break;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
}
//
Plane.h:interfacefortheCPlaneclass.
//
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
/**/
//
#ifndefPLANE_H
#define
PLANE_H
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
class
CPlane
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
public:
voidInitialize(constRECT*lprcWndPlay);
voidGetCurrentPos(LPPOINTlpptOut);
voidMove(intiX,intiY);
voidDrawDestroy(HDChdc);
voidGetCurrentRect(RECT*lprcOut);
voidSetCurrentPos(constLPPOINTlppt);
voidDrawNormal(HDChdc);
CPlane();
virtual~CPlane();
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
protected:
POINTm_ptPos;
RECTm_rcWndPlay;
}
;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
#endif
//
#ifndefPLANE_H
//
Plane.cpp:implementationoftheCPlaneclass.
//
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
/**/
//
#include
"
stdafx.h
"
#include
"
Plane.h
"
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
------------------------------------------------------------------
//
Macrodefine
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
Theradiusoftheplane
#define
PLANE_RADIUS4
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
/**/
//
//
Construction/Destruction
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
/**/
//
CPlane::CPlane()
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
memset(&m_ptPos,0,sizeof(m_ptPos));
memset(&m_rcWndPlay,0,sizeof(m_rcWndPlay));
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
CPlane::
~
CPlane()
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
--------------------------------------------------------------------
//
Description:
//
DrawtheplanenormalstatustotheDC
//
---------------------------------------------------------------------
void
CPlane::DrawNormal(HDChdc)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
HBRUSHhBrush=CreateSolidBrush(RGB(0,255,0));
HGDIOBJhOldSel=SelectObject(hdc,hBrush);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
Ellipse(hdc,
m_ptPos.x-PLANE_RADIUS,
m_ptPos.y-PLANE_RADIUS,
m_ptPos.x+PLANE_RADIUS,
m_ptPos.y+PLANE_RADIUS);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
SelectObject(hdc,hOldSel);
DeleteObject(hBrush);
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
--------------------------------------------------------------------
//
Description:
//
DrawtheplanedestroystatustotheDC
//
---------------------------------------------------------------------
void
CPlane::DrawDestroy(HDChdc)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
HBRUSHhBrush=CreateSolidBrush(RGB(255,0,0));
HGDIOBJhOldSel=SelectObject(hdc,hBrush);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
Ellipse(hdc,
m_ptPos.x-PLANE_RADIUS,
m_ptPos.y-PLANE_RADIUS,
m_ptPos.x+PLANE_RADIUS,
m_ptPos.y+PLANE_RADIUS);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
SelectObject(hdc,hOldSel);
DeleteObject(hBrush);
}
//
--------------------------------------------------------------------
//
Description:
//
Setcurrentposition
//
---------------------------------------------------------------------
void
CPlane::SetCurrentPos(
const
LPPOINTlppt)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
m_ptPos=*lppt;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
--------------------------------------------------------------------
//
Description:
//
Getthecurrentrectofplane
//
---------------------------------------------------------------------
void
CPlane::GetCurrentRect(RECT
*
lprcOut)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
lprcOut->left=m_ptPos.x-PLANE_RADIUS;
lprcOut->top=m_ptPos.y-PLANE_RADIUS;
lprcOut->right=m_ptPos.x+PLANE_RADIUS;
lprcOut->bottom=m_ptPos.y+PLANE_RADIUS;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
--------------------------------------------------------------------
//
Description:
//
Movethedistancebaseonthecurrentposition
//
---------------------------------------------------------------------
void
CPlane::Move(
int
iX,
int
iY)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
m_ptPos.x+=iX;
m_ptPos.y+=iY;
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
if(m_ptPos.x<m_rcWndPlay.left)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
m_ptPos.x=0;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
if(m_ptPos.x>m_rcWndPlay.right)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
m_ptPos.y=m_rcWndPlay.right;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
if(m_ptPos.y<m_rcWndPlay.top)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
m_ptPos.y=m_rcWndPlay.top;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
if(m_ptPos.y>m_rcWndPlay.bottom)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
m_ptPos.y=m_rcWndPlay.bottom;
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
--------------------------------------------------------------------
//
Description:
//
Getthecurrentpositionofplane
//
---------------------------------------------------------------------
void
CPlane::GetCurrentPos(LPPOINTlpptOut)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
*lpptOut=m_ptPos;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
--------------------------------------------------------------------
//
Description:
//
Initializetheplayingwindow
//
---------------------------------------------------------------------
void
CPlane::Initialize(
const
RECT
*
lprcWndPlay)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
m_rcWndPlay=*lprcWndPlay;
}
//
Evade.cpp:Definestheentrypointfortheapplication.
//
#include
"
stdafx.h
"
#include
"
GameWnd.h
"
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
int
WINAPIWinMain(HINSTANCEhInstance,
HINSTANCEhPrevInstance,
LPTSTRlpCmdLine,
int
nCmdShow)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
//TODO:Placecodehere.
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
CGameWnd*pGameWnd=CGameWnd::GetInstance();
if(pGameWnd==NULL)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
return0x05;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
if(pGameWnd->Initialize(hInstance)==FALSE)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
return0x10;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
pGameWnd->ShowWindow(TRUE);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
MSGmsg;
while(GetMessage(&msg,NULL,0,0))
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
return0;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
注:代码出现的CText类参见我这篇文章:http://blog.csdn.net/norains/archive/2007/04/17/1568429.aspx