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);
}

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

(0)

相关推荐

  • QT实现简单打地鼠游戏

    本文实例为大家分享了QT实现简单打地鼠游戏的具体代码,供大家参考,具体内容如下 开发工具:VS2017,qt5.9.8 开发语言:c++ 实现功能: 有若干地鼠洞,每次出现一只地鼠,当击中地鼠后,分数加1,地鼠更换位置.当分数大于20时,游戏结束. 实现思路: 1.先初始化一个页面,放一只地鼠和若干个地鼠洞,为地鼠和地鼠洞添加槽函数.  2.当点击时就执行相应函数.判断是否击中,从而对其进行加分或者减分.  3.当击中地鼠后,应该刷新页面,让地鼠换个位置出现.  4.重复2.3,直到分数到达一定

  • 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 hamme

  • Java编程经典小游戏设计-打砖块小游戏源码

    [程序中使用的数据结构和符号说明] HitBrick类 GreenBallThread控制小球路线 xUp,yUp,bouncing定义变量存储16位数值形式 x,y小球坐标 xDx,yDy坐标增量 MAX_X,MAX_Y坐标最大值 renew初始化 label标签 Rx,Ry横板坐标 Brick[]砖块 ball小球 HitBrick()定义小球横板及砖块位置坐标 keyPressd(keyEent)定义小球启动键(按空格键启动) keyReleased(keyEvent)接收键盘事件侦听器接

  • android实现打地鼠游戏

    今天上课老师用Java实现了打地鼠游戏的界面和具体逻辑,那么我也尝试使用Android语言实现其功能. 首先是打地鼠游戏的玩法 1.每隔1秒或者0.5秒地鼠会出现在九宫格中的任一位置 2.点击界面,如果地鼠出现的位置与点击位置相同,则认为打中地鼠.否则游戏继续. 3.打中地鼠后,游戏立即停止. 先上两张效果图 布局实现 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:to

  • 基于vue实现简易打地鼠游戏

    本文实例为大家分享了vue实现简易打地鼠游戏的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>打地鼠简易版</title> <script src="js/vue.js"></script> <style type="text/css"&g

  • android利用handler实现打地鼠游戏

    本文实例为大家分享了android利用handler实现打地鼠游戏的具体代码,供大家参考,具体内容如下 xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"

  • JavaScript实现打地鼠游戏

    本文实例为大家分享了JavaScript实现打地鼠游戏的具体代码,供大家参考,具体内容如下 游戏说明: 点击"开始游戏"按钮,在图中随机产生老鼠,老鼠消失前单击老鼠进行击打,打中一次即可获得100的积分,没有打中老鼠,扣取100积分 css模块 <style> #div0{ text-align: center; width: 1360px; height: 600px; margin: 60px auto; background-image: url("imag

  • JavaScript实现简单打地鼠游戏

    本文实例为大家分享了JavaScript实现打地鼠游戏的具体代码,供大家参考,具体内容如下 效果如下: html代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script src="js/index.js"></script> <link rel="s

  • Python实现打地鼠游戏

    目录 开发工具 相关模块 环境搭建 原理简介 主要代码 开发工具 python版本:3.6.4 相关模块 pygame:以及一些python自带的模块. 环境搭建 安装python并添加到环境变量,pip安装需要的相关模块即可. 原理简介 打地鼠的游戏规则相信大家都知道,这里就不多介绍了,反正就是不停地拿锤子打洞里钻出来的地鼠呗~首先,让我们确定一下游戏中有哪些元素.打地鼠打地鼠,地鼠当然得有啦,那我们就写个地鼠的游戏精灵类呗 显然,地鼠有被锤子击中和未被锤子击中这两种状态,所以需要加载两张图,

  • Java实现Android拼图游戏设计过程解析

    目录 1.项目介绍 2.项目原理 3.项目设计 4.项目实现 5.获取布局 6.准备图片 7.初始化item 8.游戏图片的切换 9.游戏胜利的判断 10.游戏封面 1.项目介绍 这是一款基于 Java 开发的移动端安卓小游戏——大家来拼图 2.项目原理 把选定的一张图片切分很多份,先是 33 格式,在一定的时间内点击格子交换使图形拼成一张完整的图片就算闯关成功,这样关卡也很容易设计,33:44:55:6*6: 3.项目设计 我们需要一个容器,可以放这些图片的块块,为了方便,我们准备使用Rela

随机推荐