介绍
使用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++怎么制作一个打地鼠游戏