C++实现打地鼠游戏设计

本文实例为大家分享了C++实现打地鼠游戏的具体代码,供大家参考,具体内容如下

代码:

#include <afxwin.h>

class CMyWnd :public CFrameWnd

{

private:

CDC *m_pmdc;

CBitmap *m_pbitmap[5];

CRect myRect[6];

CString picPath[5];

int hit;

BOOL m_state[6];

int counter;

int num;

int hammer_x;

int hammer_y;

public:

CMyWnd()

{

Create(NULL,"Third App");

CClientDC dc(this);

picPath[0]="../image/background.bmp";

picPath[1]="../image/mouse1.bmp";

picPath[2]="../image/mouse2.bmp";

picPath[3]="../image/hammer1.bmp";

picPath[4]="../image/hammer2.bmp";

//

myRect[0].SetRect(30,10,130,110);

myRect[1].SetRect(190,10,290,110);

myRect[2].SetRect(340,10,440,110);

myRect[3].SetRect(30,140,130,240);

myRect[4].SetRect(190,140,290,240);

myRect[5].SetRect(340,140,440,240);

//

hit=0;

for(int i=0;i<6;i++)

m_state[i]=FALSE;

counter=0;

hammer_x=hammer_y=0;

num=0;

//不显示鼠标

//ShowCursor(FALSE);

m_pmdc=new CDC;

for(int i=0;i<5;i++)

{

m_pbitmap[i]=new CBitmap;

m_pbitmap[i]->m_hObject=(HBITMAP)::LoadImage(NULL,picPath[i],

IMAGE_BITMAP, 0,0,LR_LOADFROMFILE);

}

m_pmdc->CreateCompatibleDC(&dc);

MoveWindow(200,20,480,320);

this->SetTimer(1,1000,NULL);

}

void myPait(int flag);

~CMyWnd()

{

for(int i=0;i<5;i++)

delete m_pbitmap[i];

delete m_pmdc;

}

DECLARE_MESSAGE_MAP()

afx_msg void OnLButtonUp(UINT nFlags, CPoint point);

// afx_msg void OnPaint();

afx_msg void OnTimer(UINT_PTR nIDEvent);

afx_msg void OnMouseMove(UINT nFlags, CPoint point);

// afx_msg void OnPaint();

};

class CMyApp:public CWinApp

{

public:

BOOL InitInstance();

};

BOOL CMyApp::InitInstance()

{

CMyWnd *pf=new CMyWnd;

pf->ShowWindow(m_nCmdShow);

this->m_pMainWnd=pf;

return TRUE;

}

CMyApp FirstApp;BEGIN_MESSAGE_MAP(CMyWnd, CFrameWnd)

ON_WM_LBUTTONUP()

// ON_WM_PAINT()

ON_WM_TIMER()

ON_WM_MOUSEMOVE()

// ON_WM_PAINT()

END_MESSAGE_MAP()

void CMyWnd::OnLButtonUp(UINT nFlags, CPoint point)

{

// TODO: 在此添加消息处理程序代码和/或调用默认值

counter++;

m_state[num]=FALSE;

num=rand()%6;

m_state[num]=TRUE;

for(int i=0;i<6;i++)

{

if(myRect[i].PtInRect(point)&&m_state[i])

{

hit++;

}

else

hit=0;

}

CFrameWnd::OnLButtonUp(nFlags, point);

}

void CMyWnd::OnTimer(UINT_PTR nIDEvent)

{

// TODO: 在此添加消息处理程序代码和/或调用默认值

CClientDC dc(this); // device context for painting

m_pmdc->SelectObject(m_pbitmap[0]);

dc.BitBlt(0,0,480,320,m_pmdc,0,0,SRCCOPY);

m_pmdc->SelectObject(m_pbitmap[3]);

dc.BitBlt(hammer_x,hammer_y,148,148,m_pmdc,0,0,SRCAND);

m_pmdc->SelectObject(m_pbitmap[4]);

dc.BitBlt(hammer_x,hammer_y,148,148,m_pmdc,0,0,SRCPAINT);

for(int i=0;i<6;i++)

{

if(m_state[i])

{

m_pmdc->SelectObject(m_pbitmap[1]);

dc.BitBlt(myRect[i].left,myRect[i].top,100,100,m_pmdc,0,0,SRCAND);

m_pmdc->SelectObject(m_pbitmap[2]);

dc.BitBlt(myRect[i].left,myRect[i].top,100,100,m_pmdc,0,0,SRCPAINT);

}

}

if(hit>=3)

{

KillTimer(1);

MessageBox("你赢了!");

}

if(counter>=10)

{

KillTimer(1);

MessageBox("你输了!");

}

CFrameWnd::OnTimer(nIDEvent);

}

void CMyWnd::OnMouseMove(UINT nFlags, CPoint point)

{

// TODO: 在此添加消息处理程序代码和/或调用默认值

hammer_x=point.x;

hammer_y=point.y;

CFrameWnd::OnMouseMove(nFlags, point);

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

以上是 C++实现打地鼠游戏设计 的全部内容, 来源链接: utcz.com/p/245767.html

回到顶部