亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cblockpool.cpp

?? 俄羅斯方塊3D 程序+源碼俄羅斯方塊3D(程序+源碼
?? CPP
字號:
#include "CBlockPool.h"
#include "CBlockFollowing.h"
#include "CGameState.h"
#include <cassert>

extern CGameState		theGameState;
extern CBlockFollowing	theBlockFollowing;

//////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////
CBlockPool::CBlockPool()
{
	m_iRow				= 0;
	m_iColumn			= 0;
	m_iHighestLine		= -1;
	m_iFirstFullLine	= -1;
}

//////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////
CBlockPool::~CBlockPool()
{

}

//////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////
bool CBlockPool::Init( int row, int col )
{
	bool re;
	re = m_BlockPool.SetSize( row, col );					//分配方塊池大小

	if ( re )
	{
		m_iRow		= row;
		m_iColumn	= col;

		m_iHighestLine		= -1;							//方塊堆最高行
		m_iFirstFullLine	= -1;							//第一個滿行
	}
	return re;
}

//////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////
void CBlockPool::Free()
{
	m_BlockPool.Free();
	m_iRow = 0;
	m_iColumn = 0;
	m_iHighestLine		= -1;							//方塊堆最高行
	m_iFirstFullLine	= -1;							//第一個滿行
}

//////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////
bool CBlockPool::ReSet( int row, int col )
{
	Free();
	return Init( row, col );
}


//////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////
bool CBlockPool::IsAvailable( int row, int col )
{
	bool re = true;
	re &= ( row >= 0 && row < m_iRow );
	re &= ( col >= 0 && col < m_iColumn );

	if ( re )
		re &= ( m_BlockPool[row][col].IsAvailable() );

	return re;
}

//////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////
void CBlockPool::SetCell( const POSITION &position, int iVaule )
{
	m_BlockPool[ position.row ][ position.col ] = iVaule;
}


//////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////
void CBlockPool::UpdateHighestLine( int row )
{
#ifdef _DEBUG
	assert( row >= 0 && row < m_iRow );
#endif

	if ( row > m_iHighestLine )
		m_iHighestLine = row;
}


//////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////
int CBlockPool::GetNumOfLine( int row )
{
	int sum = 0;
	for ( int i = 0; i < m_iColumn; ++i )
	{
		if ( m_BlockPool[row][i].IsAvailable() == false )
			++sum;
	}

	return sum;
}

//////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////
void CBlockPool::ClearLine( int row )
{
	for ( int i = 0; i < m_iColumn; ++i )
		m_BlockPool[row][i] = 0;
}

//////////////////////////////////////////////////////////////////////
//獲取需要調整的方塊,既需下落的方塊
//////////////////////////////////////////////////////////////////////
bool CBlockPool::GetAdjustBlock()
{
	if ( m_iFirstFullLine < 0 || m_iHighestLine < 0 )
		return false;

	theBlockFollowing.OnCreateBlock();

	CBlock block;

	for ( int i = m_iFirstFullLine; i <= m_iHighestLine; ++i )
	{
		for ( int j = 0; j < m_iColumn; ++j )
		{
			if ( m_BlockPool[i][j].IsAvailable() == false )
			{
				block.SetRow( i );
				block.SetCol( j );
				block.SetMaterialIndex( m_BlockPool[i][j].GetData() );

				theBlockFollowing.AddBlocks( block );			//將需要調整的方塊裝入FollowingBlock中
				m_BlockPool[i][j] = 0;							//對應的格子置0
			}
		}
	}

	if ( theBlockFollowing.GetNumBlock() <= 0 )					//如果沒有要調整的方塊
		return false;

	return true;
}

//////////////////////////////////////////////////////////////////////
//檢測并處理滿行
//遍歷方塊池記錄每一行的方塊數
//找出滿行,并清空他們,記錄第一個滿行
//////////////////////////////////////////////////////////////////////
void CBlockPool::CheckFullLine()
{
	m_iFirstFullLine = -1;
	int iNumFullLine = 0;
	int j = 0;
	for ( int i = 0; i <= m_iHighestLine; ++i )
	{
		j = GetNumOfLine( i );				//獲取每一行數目

		if ( j == m_iColumn || j == 0 )
		{
			if ( m_iFirstFullLine == -1 )
				m_iFirstFullLine = i;					//找出最低的滿行

			ClearLine( i );
			
			if ( j == m_iColumn )
				++iNumFullLine;
		}
	}
	
	theGameState.AddScore( iNumFullLine * 10 );

	if ( GetAdjustBlock() )
	{
		theGameState.SetGameState( ADJUST_POOL );		//如果發現滿行,則開始調整方塊池
	}
	else
	{
		OnFinishAdjust();								//如果沒有發現滿行,還原重要標志,開始再次下落
	}
}

//////////////////////////////////////////////////////////////////////
//調整方塊堆,讓空行之上的方塊下落填補空位
//////////////////////////////////////////////////////////////////////
void CBlockPool::AdjustPool()
{
	theBlockFollowing.Drop();
}

//////////////////////////////////////////////////////////////////////
//完成方塊的調整
//////////////////////////////////////////////////////////////////////
void CBlockPool::OnFinishAdjust()
{
	m_iFirstFullLine	= -1;							//第一個滿行
	theGameState.SetGameState( READY_DROP );
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人av免费在线播放| 日韩一卡二卡三卡国产欧美| 欧美亚洲高清一区二区三区不卡| 日韩精品电影在线| 成人综合婷婷国产精品久久蜜臀 | 91国产精品成人| 日韩三级免费观看| 伊人一区二区三区| 国产成人免费网站| 精品国产一区二区亚洲人成毛片| 日韩午夜激情视频| 亚洲欧美国产高清| 成人一级黄色片| 久久综合网色—综合色88| 亚洲国产精品欧美一二99| aaa欧美色吧激情视频| 久久精品欧美日韩精品| 久草热8精品视频在线观看| 国产精品一区2区| 91亚洲精品乱码久久久久久蜜桃| av电影在线观看不卡| 久久久久久久综合日本| 麻豆国产精品一区二区三区| 欧美色欧美亚洲另类二区| 亚洲激情综合网| av中文一区二区三区| 欧美国产日产图区| 丁香激情综合国产| 中文字幕乱码久久午夜不卡 | 久久综合久久鬼色中文字| 亚洲自拍偷拍综合| 久久精品久久综合| 欧美二区三区的天堂| 日日摸夜夜添夜夜添国产精品 | 一区二区三区欧美视频| 午夜欧美视频在线观看| 日本高清免费不卡视频| 一区av在线播放| 在线精品国精品国产尤物884a| 91精品国产入口| 蜜桃av一区二区| av电影在线不卡| 亚洲日本在线天堂| 色婷婷亚洲精品| 亚洲国产日韩a在线播放| 欧美群妇大交群的观看方式| 日韩av网站在线观看| 亚洲精品一区二区精华| 国产999精品久久| 亚洲精品中文在线影院| 欧美日韩一级片在线观看| 免费久久99精品国产| 99re亚洲国产精品| 亚洲一区二区视频| 日韩一区二区高清| 成人深夜视频在线观看| 亚洲综合在线视频| 欧美一区二区三区在线观看视频| 亚洲天堂成人网| 777xxx欧美| 国产麻豆成人精品| 亚洲一区在线视频| 91在线观看高清| 天堂一区二区在线| 欧美影视一区在线| 激情小说亚洲一区| 亚洲柠檬福利资源导航| 欧美一区二区在线观看| 亚洲高清免费观看高清完整版在线观看| 国产麻豆成人精品| 久久综合九色综合久久久精品综合| 午夜精品一区二区三区三上悠亚| 日本韩国欧美三级| 久99久精品视频免费观看| 亚洲欧洲精品一区二区精品久久久 | 亚洲午夜羞羞片| 2014亚洲片线观看视频免费| 97精品电影院| 精品一区二区三区不卡| 亚洲欧美日韩一区二区| 精品粉嫩aⅴ一区二区三区四区| 日本亚洲欧美天堂免费| 国产精品欧美一区二区三区| 欧美丰满高潮xxxx喷水动漫| 五月天久久比比资源色| 中文字幕va一区二区三区| 欧美一区二区二区| 91久久国产综合久久| 国产不卡视频一区二区三区| 性久久久久久久| 亚洲乱码精品一二三四区日韩在线| 99国产精品99久久久久久| 亚洲欧洲日韩一区二区三区| 日韩视频在线你懂得| 精品中文字幕一区二区| 亚洲一区二区av在线| 中文字幕一区免费在线观看 | 日韩精品欧美成人高清一区二区| 欧美日韩国产乱码电影| 日韩中文欧美在线| 亚洲影视资源网| 亚洲欧美日本在线| 18成人在线视频| 亚洲国产高清在线| 国产午夜精品理论片a级大结局| 成人av午夜电影| 国产成人综合亚洲91猫咪| 蜜臀av一区二区在线免费观看 | 欧美日本国产视频| 精品一区二区三区的国产在线播放| 久久毛片高清国产| 久久午夜免费电影| www欧美成人18+| 久久久久久日产精品| 久久综合九色综合97婷婷女人| 91在线播放网址| 免费在线欧美视频| 久久国产精品免费| 久久机这里只有精品| 久久国产精品区| 一区二区三区精品在线| 精品国产免费人成在线观看| 欧美成人官网二区| 久久久久久久综合日本| 欧美日韩国产经典色站一区二区三区| 狠狠色狠狠色综合日日91app| 亚洲欧美另类小说| 精品国产自在久精品国产| 亚洲男人天堂av| 亚洲精品大片www| 亚洲国产精品自拍| 久久欧美一区二区| 欧美三片在线视频观看| 7777精品伊人久久久大香线蕉完整版 | 欧美色精品在线视频| 在线不卡a资源高清| 日韩欧美国产一区二区三区| 色综合久久66| 欧美日韩成人综合天天影院| 日韩欧美中文一区二区| 久久精品视频在线免费观看| 亚洲天天做日日做天天谢日日欢| 欧美精品一区二区三区蜜桃| 欧美日韩aaaaaa| 精品国产电影一区二区| 欧美三级韩国三级日本一级| 日韩欧美综合一区| 国产精品每日更新在线播放网址| 欧美成人bangbros| 自拍偷自拍亚洲精品播放| 日日夜夜精品免费视频| 国产91精品精华液一区二区三区| 韩国欧美国产一区| 91色婷婷久久久久合中文| 欧美人成免费网站| 国产精品久久二区二区| 日本美女一区二区三区视频| 国产精品一线二线三线| 欧美午夜精品电影| 欧美色精品在线视频| 久久精品一区二区| 午夜欧美2019年伦理| www.成人网.com| 日韩三区在线观看| 日韩精品一区二区三区老鸭窝| 欧美高清性hdvideosex| 国产精品不卡在线| 精品一区二区成人精品| 色噜噜狠狠色综合欧洲selulu| 91麻豆蜜桃一区二区三区| 欧美一级高清片| 亚洲一区二区三区四区中文字幕| 亚洲六月丁香色婷婷综合久久| 亚洲欧美日韩人成在线播放| 国产精品主播直播| 日韩欧美中文字幕公布| 亚洲va国产va欧美va观看| 丝袜国产日韩另类美女| 色婷婷激情久久| 国产精品国产三级国产aⅴ入口| 亚洲视频在线一区| 成人中文字幕在线| 久久精品夜色噜噜亚洲a∨| 日本不卡一二三| 欧美日韩国产免费| 亚洲一区二区三区四区的| 日本麻豆一区二区三区视频| 欧美视频一二三区| 亚洲精品成人a在线观看| 99在线精品视频| 国产精品白丝在线| a级精品国产片在线观看| 久久精品欧美日韩精品| 国产麻豆精品久久一二三| 精品国产99国产精品| 久久99久久久欧美国产| 精品久久人人做人人爽| 国产精品伦一区二区三级视频| 偷拍自拍另类欧美| 欧美人与性动xxxx|