前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MFC俄罗斯方块增加多彩方块,闪烁消行

MFC俄罗斯方块增加多彩方块,闪烁消行

作者头像
立羽
发布2023-08-24 12:55:56
1290
发布2023-08-24 12:55:56
举报
文章被收录于专栏:Unity3d程序开发Unity3d程序开发

当满一行要发生消行的消息,首先定义一个每行消行消息的数组。

代码语言:javascript
复制
int m_bufBlink[MAX_ROW];//消行数组

初始化每个数组置零。

当某一行满行后,相应的数组某位置一。然后在定时器里实现闪烁数组位值的自加,对应的那行进行奇偶闪烁的处理。

代码语言:javascript
复制
//消行闪烁的特效的处理
void CTetrisGame::blinkEffects()
{
	for (int iRow = 0; iRow < MAX_ROW; iRow++)//闪烁数组位值自加,从1加到MAX_BLINK,奇偶闪烁的原理
	{
		if (m_bufBlink[iRow] >= 1 && m_bufBlink[iRow]<MAX_BLINK)
			m_bufBlink[iRow]++;
	} 
	blinkDeal();//奇偶闪烁
	rectDrop();//闪烁完,要上面的方块掉落,并且产生新的方块
}
代码语言:javascript
复制
//»æÖÆÏûÐÐʱµÄÉÁ˸Ч¹û
void CTetrisGame::blinkDeal()
{
	int iRow = 0;
	int iCol = 0;

	for ( iRow = 0; iRow < MAX_ROW; iRow++)
	{
		if (m_bufBlink[iRow]%2 == 0 && m_bufBlink[iRow]>0)//µ±ÉÁ˸Êý×éλֵÊÇżÊýʱ£¬ÏÔʾ¿Õ°×
		{
			for( iCol = 0; iCol < MAX_COL; iCol++)
			{
				m_bufMap[iRow][iCol].bHaveRect = FALSE; 
			}
		}
		if (m_bufBlink[iRow]%2 == 1)//µ±ÉÁ˸Êý×éλֵÊÇÆæÊýʱ£¬ÏÔʾԭ±¾µÄ·½¿é£¬ÒÔ´ËʵÏÖÉÁ˸
		{
			for( iCol = 0; iCol < MAX_COL; iCol++)
			{
				m_bufMap[iRow][iCol].bHaveRect = TRUE; 
			}
		}
	}
}
代码语言:javascript
复制
//ÉÁ˸Í꣬Ҫ½øÐз½¿éµÄÕûÌåµÄÏÂÂä
void CTetrisGame::rectDrop()
{
	int iRow = 0;
	int iCol = 0;
	int iRowTmp = 0;
	int iColTmp = 0;
		
	for (iRow = 0; iRow < MAX_ROW; iRow++)
	{
		if ( m_bufBlink[iRow] == MAX_BLINK)
		{
			for ( iRowTmp = iRow; iRowTmp > 0; iRowTmp--)
			{
				for (iColTmp = 0; iColTmp < MAX_COL; iColTmp++)
				{
					m_bufMap[iRowTmp][iColTmp].bHaveRect = m_bufMap[iRowTmp-1][iColTmp].bHaveRect;
				}
			}
			m_bufBlink[iRow] = 0;//λֵҪ½øÐÐÖÃÁã´¦Àí
			willRectProduce();//Ò»µ©ËùÓеķ½¿éÈ«²¿²úÉúÍ꣬Ҫ½øÐвúÉúеķ½¿éµÄ´¦Àí
		}
	}
}

实现效果

点击打开链接

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014-12-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档