c++游戏设计二:反转扑克牌

原创 2014年12月02日 10:54:33
<span style="font-family: Arial, Helvetica, sans-serif;">#include <afxwin.h></span>
class CMyWnd :public CFrameWnd
{
private:
	CDC *m_pmdc[4];
	CBitmap *m_pbitmap;
	CString myPath[5];
	int currentState[4];
	CRect myRect[4];
	
public:
	CMyWnd()
	{
		Create(NULL,"Second App");
		CClientDC dc(this);

		//Initialize the path
		myPath[0]="../image/back.bmp";
		myPath[1]="../image/q.bmp";
		myPath[2]="../image/10.bmp";
		myPath[3]="../image/j.bmp";
		myPath[4]="../image/joker.bmp";
		//Intialize the rect
		myRect[0].SetRect(50,50,200,250);
		myRect[1].SetRect(50,350,200,550);
		myRect[2].SetRect(400,50,550,250);
		myRect[3].SetRect(400,350,550,550);

		memset(currentState,0,4);
		MoveWindow(200,20,600,600);

		m_pbitmap=new CBitmap;
		
		for(int i=0;i<4;i++)
		{
			m_pbitmap->m_hObject=(HBITMAP)::LoadImage(NULL,myPath[0],
              IMAGE_BITMAP, 0,0,LR_LOADFROMFILE);
			m_pmdc[i]=new CDC;
			m_pmdc[i]->CreateCompatibleDC(&dc);
			m_pmdc[i]->SelectObject(m_pbitmap);
			m_pbitmap->DeleteObject();
		}
	}
	~CMyWnd()
	{
		delete m_pbitmap;
		for(int i=0;i<4;i++)
		{
			delete m_pmdc[i];
		}
		
	}
	DECLARE_MESSAGE_MAP()
	afx_msg void OnPaint();
	afx_msg void OnTimer(UINT_PTR nIDEvent);
	afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
};

class CMyApp:public CWinApp
{
public:
	BOOL InitInstance();
};

BOOL CMyApp::InitInstance()
{
	CMyWnd *pf=new CMyWnd;
	pf->ShowWindow(m_nCmdShow);
	pf->UpdateWindow();
	this->m_pMainWnd=pf;
	return TRUE;
}
CMyApp FirstApp;

BEGIN_MESSAGE_MAP(CMyWnd, CFrameWnd)
	ON_WM_PAINT()
	ON_WM_LBUTTONUP()
	END_MESSAGE_MAP()


void CMyWnd::OnPaint()
{
	CPaintDC dc(this); // device context for painting
	
		// TODO: 在此处添加消息处理程序代码
		// 不为绘图消息调用 CFrameWnd::OnPaint()	
		for(int i=0;i<4;i++)
		{
			dc.StretchBlt(myRect[i].left,myRect[i].top,150,200,m_pmdc[i],0,0,150,200,SRCCOPY);

			/*在这里我们删除m_pbitmap中对象的原因是
			不清楚内存指向的情况,多个m_pmdc指向一个m_pbitmap的话,会导致后面的不可用
			那么我们就暂时理解成一个map只能被一个cdc所用,这个map是给了cdc一个地址呢还是直接将其剪切到cdc的地址空间了呢?
			
			m_pbitmap->DeleteObject();
			if(flag==0)
				m_pbitmap->m_hObject=(HBITMAP)::LoadImage(NULL,myPath[0],
              IMAGE_BITMAP, 0,0,LR_LOADFROMFILE);*/
		}

}


void CMyWnd::OnLButtonUp(UINT nFlags, CPoint point)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	for(int i=0;i<4;i++)
	{
		if(myRect[i].PtInRect(point))
		{
			this->currentState[i]++;
			if(this->currentState[i]%2==0)
			{
				m_pbitmap->m_hObject=(HBITMAP)::LoadImage(NULL,this->myPath[i+1],
				 IMAGE_BITMAP, 0,0,LR_LOADFROMFILE);
			}
			else
			{
				m_pbitmap->m_hObject=(HBITMAP)::LoadImage(NULL,this->myPath[0],
              IMAGE_BITMAP, 0,0,LR_LOADFROMFILE);
			}
			m_pmdc[i]->SelectObject(m_pbitmap);		
			InvalidateRect(&myRect[i]);
		}
	}
	
	CFrameWnd::OnLButtonDown(nFlags, point);
}


                

扑克牌游戏的设计与实现

写一个扑克牌游戏需要解决以下几个问题:(1)每张牌如何编码对于编码最简单的莫如从0-53(不设大小王的游戏中是0-51),不过为了计算花色和点数,我们编码的时候一定是一个花色从小到大排,然后是下一个花...
  • free000
  • free000
  • 2007年05月13日 01:01
  • 1731

opencv将二值图序列反转并腐蚀处理

opencv将二值图序列反转并腐蚀处理
  • xiaoxiaoxixixi
  • xiaoxiaoxixixi
  • 2017年06月19日 16:38
  • 304

c/c++ 静态断言 static_assert

静态断言即,在编译时期就能发现问题所在,而不用等到运行时期(因为有些时候并不是所有断言 一次就能运行出来)c++ 11 & BOOST 库 有类似的方法。这里搞一个简单的 自检方式/*除零异常方式...
  • u013865277
  • u013865277
  • 2016年09月21日 22:46
  • 279

一种基于C++的扑克牌实现

构造器 第一步、利用两个整型数组分别定义扑克牌的类别(比如黑桃、红心等,这里只是区分,并没有印色)和编号(这里只是简单的编序号,没有印上诸如“A、K、Q、J”等); 第二步、有四种花色,每种花色有...
  • currydua
  • currydua
  • 2017年06月07日 19:34
  • 692

正在做的一款HTML5多人在线扑克牌游戏:99分

用Node.JS做服务端,用WebSockets通信,实现HTML5多人在线游戏。 这款扑克牌游戏名称叫99分,源于活动聚会时常多人玩的一种扑克游戏,特别适合6人、8人、10人玩。 这个游戏由3个...
  • cuixiping
  • cuixiping
  • 2012年07月18日 10:10
  • 6180

二值化图像的颜色翻转

在图像处理中,二值化是很重要的一步,有时经过二值化以后,感兴趣的区域的值与期望值不一样。比如,感兴趣区域期望是白色的,但实际却是黑色的,这时就需要进行翻转,已达到自己实际处理的要求。        代...
  • xmy629
  • xmy629
  • 2016年07月26日 19:07
  • 285

线段树区间翻转模板

struct Seg { int val[4*N]; bool rev[4*N]; void init( int id, int l, int r, int *b ) { rev[id]=0...
  • shuimu12345678
  • shuimu12345678
  • 2012年11月14日 13:38
  • 1617

扑克牌游戏-华为OJ-C++实现

/*扑克牌游戏大家应该都比较熟悉了,一副牌由54张组成,含3~A、2各4张,小王1张,大王1张。牌面从小到大用如下字符和字符串表示(其中,小写joker表示小王,大写JOKER表示大王): 3 4 5...
  • suifeng50
  • suifeng50
  • 2014年06月23日 15:11
  • 2270

翻转二叉树 - C++

class Solution { public: /** * @param root: a TreeNode, the root of the binary tree * ...
  • zx8225885qw
  • zx8225885qw
  • 2017年04月23日 18:28
  • 331

翻转二叉树(C++)

用递归的方法翻转二叉树
  • light_bo
  • light_bo
  • 2015年06月25日 21:39
  • 2391
收藏助手
不良信息举报
您举报文章:c++游戏设计二:反转扑克牌
举报原因:
原因补充:

(最多只允许输入30个字)