扑克发牌动画

犀利不糊涂 2014-05-12 01:07:41
谁知道MFC中如何做出扑克发牌动画?
不要发牌洗牌算法,就把扑克的背面发出来这个动画就可以了。
我的思路大体如下:
先是一堆牌在背景中间,
然后点击“开始”按钮,一堆牌慢慢减少直到没有。
同时,牌堆中的扑克依次分别发给3个玩家,最后留3张。
SetTimer 我知道,可就是不能同时实现一边减少,一边在依次发牌,难道要多个SETTIMER?
另外,是在OnTimer中实现相关的算法,还是在OnPaint中实现?
我自己想应该在OnTimer中,可我的OnPaint中有关键的双缓冲代码。
思路好乱阿。



...全文
296 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2014-06-16
  • 打赏
  • 举报
回复
您好 我是本版版主 此帖已多日无人关注 请您及时结帖 如您认为问题没有解决可按无满意结帖处理 另外本版设置了疑难问题汇总帖 并已在版面置顶 相关规定其帖子中有说明 您可以根据规定提交您帖子的链接 如您目前不想结帖只需回帖说明 我们会删除此结帖通知 见此回复三日内无回应 我们将强制结帖 相关规定详见界面界面版关于版主结帖工作的具体办法
犀利不糊涂 2014-05-13
  • 打赏
  • 举报
回复
void CChildView::OnPaint() { CPaintDC dc(this); // 用于绘制的设备上下文 // TODO: 在此处添加消息处理程序代码 // 不要为绘制消息而调用 CWnd::OnPaint() CDC *cDC = this->GetDC(); GetClientRect(&m_client); m_cacheDC.CreateCompatibleDC(NULL); m_cacheCBitmap.CreateCompatibleBitmap(cDC, m_client.Width(), m_client.Height()); m_cacheDC.SelectObject(&m_cacheCBitmap); ValidateRect(&m_client); m_gameback.Draw(m_cacheDC, m_client); for (int i = 0; i < m_cardsnum; i++) m_card.Draw(m_cacheDC, cardx + i * 4, cardy, 71, 96, 923, 192, 71, 96);//准备一堆牌,并且发牌时慢慢减少一张牌 if (isfapai) { int kk = 54 - m_cardsnum; //kk就是已经发的扑克牌数 在ONTIMER中m_cardsnum- -; for (int j = 0; j < kk; j++) { timer = (int)(j / 3+1); //timer就是发的轮数,3个人都发过了算一轮。 if (j % 3 == 0) for (int i = 0; i <timer; i++) m_card.Draw(m_cacheDC, play1x, play1y + i * 8, 71, 96, 923, 192, 71, 96); if (j % 3 == 2) for (int i = 0; i < timer; i++) m_card.Draw(m_cacheDC, play2x, play2y + i * 8, 71, 96, 923, 192, 71, 96); if (j % 3 == 1) for (int i = 0; i < timer; i++) m_card.Draw(m_cacheDC, play3x + i * 14, play3y, 71, 96, 923, 192, 71, 96); } } cDC->StretchBlt(0, 0, m_client.Width(), m_client.Height(), &m_cacheDC, 0, 0, m_client.Width(), m_client.Height(), SRCCOPY); m_cacheDC.DeleteDC(); m_cacheCBitmap.DeleteObject(); ReleaseDC(cDC); } 图片的LOAD 在PreCreateWindow中,其他变量也很好理解。测试逻辑是对的。但问题是,不知道是不是循环太多。运行起来比较慢。如果后面再加飞牌的动画效果更糟糕了。有好的逻辑吗?或者问题在哪里??
莫在逍遥 2014-05-12
  • 打赏
  • 举报
回复
第一,GDI是为了那些图形处理软件还有各种游戏引擎和UI设计的,因为那些需要这个,第二,想做出你说的这种效果,我有个想法用MFC里面的CStatic类显示图片,然后不断修改他的坐标达到动画效果
犀利不糊涂 2014-05-12
  • 打赏
  • 举报
回复
主要是想学学简单的动画,不过你的回答也是我疑惑的地方,MFC为什么要搞一些乌七八糟的GDI,直接引用别人专业的素材就可以了,难道程序员都要会画画?就好像win系统自带的画图一样。跟小孩子过家家一样的东西。
Eleven 2014-05-12
  • 打赏
  • 举报
回复
找个gif图片,然后贴图不是更简单一些?

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧