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++实现打地鼠游戏设计

相关文章:

你感兴趣的文章:

标签云: