俄罗斯方块遇到的小问题

qingdujun
博客专家认证
2013-11-17 11:20:41
我编写了一个俄罗斯方块,添加了一个WM_KEYDOWN消息响应。
在里面实现按键 上下左右 移动砖块。

现在就是有个问题:
砖块移动的时候,不流畅,总是一卡一卡的,和我当初在dos上用kbhit() Sleep()实现效果差不多。

这个问题要怎么解决?求大神指教啊!
...全文
208 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yaozhiyong110 2013-11-18
  • 打赏
  • 举报
回复
你应该在界面只更新移动的那个区域 所以用InvalidRect擦除指定区域不要用Invalidate()擦除整个区域
yaozhiyong110 2013-11-18
  • 打赏
  • 举报
回复
你双缓冲都没用当然会闪烁了...
qingdujun 2013-11-18
  • 打赏
  • 举报
回复
引用 1 楼 yaozhiyong110 的回复:
你应该在界面只更新移动的那个区域 所以用InvalidRect擦除指定区域不要用Invalidate()擦除整个区域
void CTetrisView::DrawImage2(CBin *bin, unsigned char **image, CDC *pDC)
{
	unsigned int width,i,j;
	unsigned int height;
	width = bin2->getWidth();//获得宽度
	height = bin2->getHeight();//获得高度
	int nSize = 20;//砖块大小
	//////////////  双缓冲   ///////////
	CRect rect;
	GetClientRect(&rect);
	pDC->FillSolidRect(400,rect.top,rect.bottom,rect.right,RGB(255,255,255));//绘制背景色

	pDC->Rectangle(400,0,600,400);
	char buf[100];
	sprintf(buf,"分数:%d",numLines2*10);
	pDC->TextOut(620,20,buf);
	pDC->TextOut(620,60,"操作说明:");
	pDC->TextOut(670,90,"左移:←");
	pDC->TextOut(670,110,"右移:→");
	pDC->TextOut(670,130,"下移:↓");
	pDC->TextOut(670,150,"旋转:↑");
	////////////////////////////////////
	CRect rc;
	COLORREF BrickColor[8] = {0xFFFFFF, 0xFF0000, 0x00FF00, 0x0000FF, 
		0x00FFFF, 0xFFFF00, 0x800000, 0x800080};//砖块颜色
	//////////////// 2 /////////////////
	for (i = 0; i < height; ++i)//一行一行的画砖块
	{
		for (j = 0; j < width; ++j)
		{
			rc = CRect(j*nSize+400, i*nSize, (j+1)*nSize+400, (i+1)*nSize);
			//绘制面板
			if (0 != image[i][j])
			{
				pDC->FillRect(rc, &CBrush(BrickColor[image[i][j]]));//画临时砖块(运动中)
				pDC->Draw3dRect(rc,GetLightColor(BrickColor[image[i][j]]),GetDarkColor(BrickColor[image[i][j]]));
			}
		}
	}
	////////////////////////////////////
}
这样的话 每次都是全部画上的。。。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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