使用c++怎么制作一个打地鼠游戏

  介绍

使用c++怎么制作一个打地鼠游戏?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

具体内容如下

# include  & lt; afxwin.h>   ,   class  CMyWnd : public  CFrameWnd   {   私人:   ,CDC  * m_pmdc;   ,CBitmap  * m_pbitmap [5];   ,CRect  myRect [6];   ,CString  picPath [5];   ,int 冲击;   ,BOOL  m_state [6];   ,int 计数器;   ,int  num;   ,int  hammer_x;   ,int  hammer_y;   公众:   ,CMyWnd ()   ,{   ,   ,创建(NULL,“Third  App");   ,   ,CClientDC 直流(这个);   ,picPath[0]=? ./图像/background.bmp";   ,picPath[1]=? ./图像/mouse1.bmp";   ,picPath[2]=? ./图像/mouse2.bmp";   ,picPath[3]=? ./图像/hammer1.bmp";   ,picPath[4]=? ./图像/hammer2.bmp";   ,//,myRect [0] .SetRect (10130110);   ,myRect [1] .SetRect (190、10290110);   ,myRect [2] .SetRect (340、10440110);   ,myRect [3] .SetRect (30140130240);   ,myRect [4] .SetRect (190140290240);   ,myRect [5] .SetRect (340140440240);   ,//,打=0;   ,(int  i=0; i<6,我+ +)   m_state才能[我]=FALSE;   ,   ,counter=0;   ,hammer_x=hammer_y=0;   ,num=0;   ,//不显示鼠标   ,//ShowCursor(假);   ,   ,m_pmdc=new 疾病预防控制中心;   ,(int 我=0;i<5,我+ +)   ,{   m_pbitmap才能[我]=new  CBitmap;   m_pbitmap才能[我]→LoadImage m_hObject=(HBITMAP):: (NULL, picPath[我],   ,,,,,,IMAGE_BITMAP,, 0, 0, LR_LOADFROMFILE);   ,}   ,m_pmdc→CreateCompatibleDC(及直流);   ,MoveWindow (200、20480320);   ,这个→凝固时间(1,1000,零);   ,   ,}   ,void  myPait (int 旗帜);   ,   ,~ CMyWnd ()   ,{   ,(int 我=0;i<5,我+ +)   ,delete  m_pbitmap[我];   ,delete  m_pmdc;   ,   ,}   ,DECLARE_MESSAGE_MAP ()   ,afx_msg  void  OnLButtonUp (UINT  nFlags, CPoint 点);//,afx_msg  void  OnPaint ();   ,afx_msg  void 定时(UINT_PTR  nIDEvent);   ,afx_msg  void  OnMouseMove (UINT  nFlags, CPoint 点);//,afx_msg  void  OnPaint ();   };   ,   class  CMyApp: public  CWinApp   {   公众:   ,BOOL  InitInstance ();   };   ,   BOOL  CMyApp:: InitInstance ()   {   ,CMyWnd  * pf=new  CMyWnd;   ,pf→显示窗口(m_nCmdShow);   ,这个→m_pMainWnd=pf;   ,return 真实;   }   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 点)   {   ,//TODO:在此添加消息处理程序代码和/或调用默认值   ,计数器+ +;   ,m_state (num)=FALSE;   ,num=rand () % 6;   ,m_state (num)=TRUE;   ,(int  i=0; i<6,我+ +)   ,{   ,如果(myRect[我].PtInRect(点),和m_state[我])   ,{   打击才能+ +;   ,}   其他的,   打击才能=0;   ,}   ,CFrameWnd: OnLButtonUp (nFlags,,点);   }   ,   ,   void  CMyWnd::定时(UINT_PTR  nIDEvent)   {   ,//TODO:在此添加消息处理程序代码和/或调用默认值   ,CClientDC 直流(这);,//,device  context  for 绘画   ,m_pmdc→SelectObject (m_pbitmap [0]);   m_pmdc, dc.BitBlt(0, 0480320年,0,0,SRCCOPY);   ,m_pmdc→SelectObject (m_pbitmap [3]);   148148年,dc.BitBlt (hammer_x hammer_y m_pmdc, 0, 0, SRCAND);   ,m_pmdc→SelectObject (m_pbitmap [4]);   148148年,dc.BitBlt (hammer_x hammer_y m_pmdc, 0, 0, SRCPAINT);   ,(int  i=0; i<6,我+ +)   ,{   ,如果(m_state[我])   ,{   m_pmdc→才能SelectObject (m_pbitmap [1]);   dc.BitBlt才能(myRect[我].left myRect直[我]上,100100年,m_pmdc, 0, 0, SRCAND);   m_pmdc→才能SelectObject (m_pbitmap [2]);   dc.BitBlt才能(myRect[我].left myRect直[我]上,100100年,m_pmdc, 0, 0, SRCPAINT);   ,}   ,}   ,如果(hit>=3)   ,{   ,消磨时间的(1);   ,弹出窗口(“你赢了!“);   ,}   ,如果(counter>=10)   ,{   ,消磨时间的(1);   ,弹出窗口(“你输了!“);   ,}   ,CFrameWnd:定时(nIDEvent);   }   ,   ,   ,   void  CMyWnd: OnMouseMove (UINT  nFlags, CPoint 点)   {   ,//TODO:在此添加消息处理程序代码和/或调用默认值   ,hammer_x=point.x;   ,hammer_y=point.y;   ,CFrameWnd: OnMouseMove (nFlags,,点);   }

使用c++怎么制作一个打地鼠游戏