24点游戏随机显示扑克牌在客户区

本文详细介绍了如何使用随机数生成不同扑克牌并将其显示在界面上的方法,包括位图加载和画布操作等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

24点游戏中,每次点击一下发牌就会随机产生4张扑克牌。要实现这个效果,有两个问题需要解决。

  • 1.如何随机出不同的扑克牌
  • 2.如何将扑克牌显示在客户区

游戏效果图:



解决办法:

1.如何随机出不同的扑克牌:

这个问题很容易解决,直接用rand()随机函数就行了。

我们知道我们导入到BitMap里面的每个图片在resource.h里面都有一个宏定义,对应一个对应的数字。

所以,我们随机这些数字就行了。如:card1.LoadBitmap(140);  //载入位图,140为ID值

当然这里的140我们用一个变量来代替。


2.如何显示扑克牌在界面上:

我这里举个例子,显示两张图片:在Onpaint()里面的else()语句里面添加如下代码。

void CPoint24Dlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting

		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CPaintDC pDC(this);
		CBitmap card1,card2,card3,card4,*pOldBitMap;
		CDC *dc, MemDC;       //dc当前设备描述表,MemDC临时设备描述表

		dc = GetDC();         //获得当前设备描述表指针
		MemDC.CreateCompatibleDC(dc); //创建与当前设备描述表兼容的设备环境

		card1.LoadBitmap(140);        //载入位图,140为ID值
		pOldBitMap = MemDC.SelectObject(&card1);  //将扑克牌位图选进设备描述表中
		dc->BitBlt(50,30,BitmapW,BitmapH,&MemDC,0,0,SRCCOPY);   //拷贝临时DC中的位图到当前设备描述表
		MemDC.SelectObject(pOldBitMap);    //恢复原来DC位图
		DeleteObject(&card1);  //删掉扑克牌位图
		////////////////////////
		card2.LoadBitmap(141);
		pOldBitMap=MemDC.SelectObject(&card2);
		dc->BitBlt(130,30,BitmapW,BitmapH,&MemDC,0,0,SRCCOPY);
		MemDC.SelectObject(pOldBitMap);
		DeleteObject(&card2);
		MemDC.DeleteDC();//删除后台DC

		CDialog::OnPaint();
	}
}


转载请保留原文地址:http://blog.youkuaiyun.com/nonknown/article/details/17687055

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值