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

发布时间:2020-12-24 16:17:54 作者:Leah
来源:亿速云 阅读:247

使用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++怎么制作一个打地鼠游戏的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

推荐阅读:
  1. ios打地鼠游戏源码
  2. js实现如何打地鼠小游戏

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c++

上一篇:利用Java爬虫怎么实现一个解析功能

下一篇:Demo数据类型如何在Java中使用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》