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

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

?? matrix.cpp

?? 俄羅斯方塊代碼
?? CPP
字號:
#include "stdafx.h"
#include "RECT.h"
#include "Matrix.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

Matrix::Matrix(int rows, int cols)
{
	/////初始化數據///
	this->rows = rows;
	this->cols = cols;
	
	winX = 0;
	winY = 0;
	winWidth = 0;
	winHeight = 0;
	cellWidth = 0; 
	cellHeight = 0;
	pDC = NULL;
	matrixColor = RGB(0, 0, 0);
	newScore = 0; //成績	
	oldScore = 0; //成績	
	
	hasGrid = true;
	gridData = new int[rows * cols];
	for (int i = 0; i <= rows; i++)
	{
		for (int j = 0; j <= cols; j++)
		{
			gridData[i*cols + j] = 0;
		}
	}
}
void Matrix::Init()//初始化數據
{
	newScore = 0;//成績清零
	oldScore = 0;//成績清零

	//>>重畫窗口
	pDC->FillSolidRect(winWidth + winX + 8, winY + 180, 160, 240, RGB(0, 0, 0));
	pDC->FillSolidRect(winWidth + 9 + winX, winY + 350, 160, 20, RGB(100, 255, 100));
	
	pDC -> SetBkColor(RGB(0, 0, 0)); 
	pDC -> SetTextColor(RGB(255, 200, 200));
	pDC -> TextOut(winWidth + 19 + winX, winY + 330, "你的體力還有:  0");
	pDC -> TextOut(winWidth + 19 + winX, winY + 270, "你的功力為: 0 ");		
	pDC -> FillSolidRect(winWidth + 9 + winX, winY + 290, 160, 20, RGB(30, 155, 100));
	//<<重畫窗

	for (int i = 0; i < rows; i++)
	{
		for (int j = 0; j < cols; j++)
		{
			gridData[i*cols + j] = 0;
		}
	}
}


//判斷能否左
bool Matrix::CanLeft(Diamond const&m, int col, int row) const
{
	if (col <= 0)
		return false;
	
	for (int i = 0; i  <  m.rows; i++)
	{
		for (int j = 0; j < m.cols; j++)
		{
			if (m.CellData[i * m.cols + j]  ==  1)
			{
				if (gridData[(row + i) * cols +(col + j - 1)] ==  1)
					return false;
			}
		}
	}
	
	return true;
}

//判斷能否右
bool Matrix::CanRight(Diamond const&m, int col, int row) const
{
	if (col + m.cols >= cols)
		return false;
	for (int i = 0; i  <  m.rows; i++)
	{
		for (int j = m.cols - 1; j >= 0; j--)
		{
			if (m.CellData[i*m.cols + j] == 1)
			{
				if (gridData[(row + i) * cols +(col + j + 1)] == 1)
					return false;
			}
		}
	}
	return true;
}

//判斷能否向下
bool Matrix::CanDown(Diamond const&m, int col, int row) const
{	

	if (row + m.rows >=  rows)
		return false;
	for (int i = 0; i < m.cols; i ++)
	{
		for (int j = m.rows - 1; j >= 0; j--)
		{
			if (m.CellData[j * m. cols + i] == 1)
			{
				if (gridData[(row + j + 1) * cols +(col + i)] == 1)
					return false;
			}
		}
	}
	
	return true;
}

//判斷能否翻轉
bool Matrix::CanTrun(Diamond const&m, int col, int row) const
{
	if (m.rows > m.cols)
		if (col + m.rows > cols)
			return false;
		return true;
}

//判斷指定行是否滿
bool Matrix::IsFullLine(int row) const
{
	for (int i = 0; i < cols; i++)
	{
		if (gridData[row * cols + i] == 0)
			return  false;
	}
	return true;
}

//刪除指定行
void Matrix::DeleteLine(int row) const
{
	for (int i = row - 1; i >= 0; i--)
	{
		for (int j = 0; j < cols; j++)
		{
			gridData[(i + 1) * cols + j] = gridData[(i * cols + j)];
		}
	}
}

//整理
bool Matrix::Tidy()
{
	bool ret = false;
	for (int i = rows; i >= 0; i--)
	{
		while (IsFullLine(i))
		{
			DeleteLine(i);
			newScore += 100; //成績加上一百分
			ret = true;
		}
	}
	
	return ret;
}

//更新數據
void Matrix::SetMatrix(int x, int y, int cx, int cy, COLORREF matrixColor)
{
	winX = x;
	winY = y;
	winWidth = cx;
	winHeight = cy;
	
	this->matrixColor = matrixColor;
	cellWidth = winWidth / cols;
	cellHeight =winHeight /rows;
}

void Matrix::Draw(CDC *pDC, int x, int y, int cx, int cy, COLORREF matrixColor, bool updata, bool hasGrid)
{
	if (updata)//是否要更新數據
		SetMatrix(x, y, cx, cy, matrixColor);
	if (matrixColor == RGB(0, 0, 255))
	{
		pDC->FillSolidRect(x, y, cx, cy, RGB(255, 255, 255));
		
		pDC->FillSolidRect(x + 1, y + 1, cx - 2, cy - 2, matrixColor);
	}
	else
	{
		pDC->FillSolidRect(x, y, cx, cy, matrixColor);
		pDC->SetTextColor(RGB(255, 200, 200));
		pDC->SetBkColor(RGB(0, 0, 0));
		pDC->TextOut(winWidth + 30 + winX, winY + 20, "下一方塊");
	}
	
	//////////////////////////畫網格與四條邊/////////////////////////
	if (hasGrid)
	{
		int i;
		CPen pen1;
		CPen pen2;
		pen1.CreatePen(PS_SOLID, 1, RGB(250, 0, 250));//設置畫筆1
		pen2.CreatePen(PS_SOLID, 5, RGB(255, 255, 255));//設置畫筆2
		pDC->SelectObject(&pen1);//裝入畫筆1
		///////////////畫網格////////////////
		//畫網格橫線
		
		for (i = 0; i < rows; i++)
		{
			pDC->MoveTo(winX, winY + cellHeight * i);
			pDC->LineTo(winX + winWidth, winY + cellHeight * i);
		}	
		
		//畫網格豎線
		for (i = 0; i < cols; i++)
		{
			pDC->MoveTo(winX + cellWidth * i, winY);
			pDC->LineTo(winX + cellWidth * i, winY + winHeight);
		}
		
		pDC->SelectObject(&pen2);//裝入畫筆2
		/////////////////////畫四條加粗邊///////////////
		pDC->MoveTo(winX - 2, winY - 2);
		pDC->LineTo(winX - 2, winY + winHeight + 2);
		
		pDC->MoveTo(winX + winWidth + 2, winY - 2);
		pDC->LineTo(winX + winWidth + 2, winY + winHeight + 2);
		
		pDC->MoveTo(winX - 2, winY - 2);
		pDC->LineTo(winX + winWidth + 2, winY - 2);
		
		pDC->MoveTo(winX - 2, winY + winHeight + 2);
		pDC->LineTo(winX + winWidth + 2, winY + winHeight + 2);
	}
}

void Matrix::DrawDiamon(CDC *pDC, int col, int row, Diamond const&m, COLORREF diamonColor)
{
	//////////畫方塊//////////////////////
	for (int i = 0; i < m.rows; i++)
	{
		for (int j = 0; j < m.cols; j++)
		{
			if (m.CellData[i*m.cols +j] == 1)
			{
				////判斷顏色是否是背景色是則用背景色抹掉舊方塊,否則畫新方塊
				if (diamonColor == RGB(0, 250, 140) ||  diamonColor == RGB(0, 0, 0)) //抹掉舊方塊
					pDC->FillSolidRect((col + j) *	cellWidth + 1+winX, (row +i)*cellHeight + 1+winY, cellWidth - 2 , cellHeight - 2, diamonColor);
				else //畫新方塊
				{
								//立體效果是由一大方塊(白色)和一小方塊(藍色)疊套產生
					pDC->FillSolidRect((col + j) *	cellWidth + 1+winX, (row + i)*cellHeight + 1+winY, cellWidth - 2 , cellHeight - 2, RGB(255, 255, 255)); //大格
					pDC->FillSolidRect((col + j) *	cellWidth + 2+winX, (row + i)*cellHeight + 2+winY, cellWidth - 4 , cellHeight - 4, diamonColor); //小格
				}
			}
		}
	}
}

//方塊數據累加
Matrix& Matrix::Add(Diamond const& m, int col, int row)
{
	for (int i = 0; i < m.rows; i++)
	{
		for (int j = 0; j <m.cols; j++)
		{
			if (gridData[(row + i) * cols +(col + j)] == 0)
				gridData[(row + i) * cols +(col + j)] = m.CellData[i * m.cols + j];
		}
	}
	return *this;
}

Matrix::~Matrix()
{
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线观看三级视频欧美| 欧美人与禽zozo性伦| 91免费视频网址| 91精品国产全国免费观看| 中文在线一区二区| 久久99精品国产麻豆婷婷| 91理论电影在线观看| 337p日本欧洲亚洲大胆色噜噜| 一区二区三区 在线观看视频| 国产真实乱对白精彩久久| 欧美中文字幕久久| 中文字幕亚洲欧美在线不卡| 久久精品国产亚洲一区二区三区| 欧美色图天堂网| 国产精品久久久久一区二区三区共| 美美哒免费高清在线观看视频一区二区| 日本久久精品电影| 一区二区中文字幕在线| 国产精品亚洲人在线观看| 日韩一级视频免费观看在线| 亚洲午夜久久久久久久久电影院| k8久久久一区二区三区| 国产清纯在线一区二区www| 麻豆国产精品官网| 91精品国产综合久久精品性色| 亚洲一区二区三区四区不卡| 成人激情午夜影院| 中文文精品字幕一区二区| 精品亚洲国内自在自线福利| 日韩午夜激情免费电影| 男人的天堂久久精品| 欧美精品色一区二区三区| 亚洲一区二区三区四区在线 | 日韩码欧中文字| 另类小说一区二区三区| 9191久久久久久久久久久| 亚洲大片在线观看| 9191国产精品| 狠狠久久亚洲欧美| 久久精品欧美日韩精品| 成人网页在线观看| 亚洲精品国产无套在线观| 色吧成人激情小说| 日韩精品高清不卡| 日韩欧美一区二区视频| 国产一区二区三区免费播放| 久久久久久久久蜜桃| 国产成a人亚洲| 亚洲欧洲av色图| 欧美亚洲国产bt| 日本在线观看不卡视频| 亚洲精品在线观看网站| 成人97人人超碰人人99| 亚洲一区二区三区三| 欧美一区二区三区四区久久| 国产一区福利在线| 亚洲欧洲日韩一区二区三区| 欧美性色aⅴ视频一区日韩精品| 日韩精品乱码av一区二区| 久久影院午夜片一区| 91丨九色porny丨蝌蚪| 视频一区在线播放| 日本一区二区视频在线| 91精品1区2区| 九一久久久久久| 亚洲天堂成人网| 日韩一卡二卡三卡四卡| 99精品久久免费看蜜臀剧情介绍| 亚洲成人免费在线| 国产欧美一区二区精品婷婷| 欧美艳星brazzers| 国产麻豆成人精品| 香蕉av福利精品导航| 亚洲国产经典视频| 欧美一区二区三区在线观看| 成人免费va视频| 蜜臀av国产精品久久久久| 中文字幕一区视频| 欧美第一区第二区| 欧美三级视频在线播放| 粉嫩高潮美女一区二区三区| 日韩av在线免费观看不卡| 国产精品萝li| 26uuu亚洲| 日韩一级二级三级精品视频| 94-欧美-setu| 国产成人精品免费看| 日韩高清在线观看| 亚洲永久免费av| 国产精品嫩草久久久久| 精品成人私密视频| 亚洲成a人v欧美综合天堂下载 | 国产毛片精品视频| 亚洲图片有声小说| 亚洲男人的天堂网| 国产视频一区二区三区在线观看 | 日本高清不卡视频| 国产69精品久久久久毛片| 久久精品国产澳门| 免费在线一区观看| 日韩精品高清不卡| 日韩精品欧美精品| 五月天欧美精品| 亚洲第一福利视频在线| 亚洲精品大片www| 亚洲欧美区自拍先锋| 亚洲同性gay激情无套| 中日韩av电影| 国产精品久久二区二区| 国产精品色婷婷| 欧美国产精品一区二区三区| 精品福利一区二区三区| 精品国产乱码久久| 久久影院电视剧免费观看| 日韩免费观看高清完整版在线观看| 欧美一区三区四区| 日韩一级成人av| 精品88久久久久88久久久| 精品国产第一区二区三区观看体验| 欧美电影免费观看高清完整版在线观看 | 欧美亚洲自拍偷拍| 精品视频免费在线| 欧美丝袜丝nylons| 337p亚洲精品色噜噜狠狠| 欧美一卡二卡三卡四卡| 精品va天堂亚洲国产| 国产丝袜欧美中文另类| 国产精品欧美精品| 亚洲激情在线激情| 肉色丝袜一区二区| 精品一区二区在线看| 国产精品一区二区三区99| 粉嫩aⅴ一区二区三区四区| 成人高清av在线| 欧美主播一区二区三区美女| 欧美一级日韩免费不卡| 久久久久一区二区三区四区| 国产欧美日韩精品在线| 亚洲最快最全在线视频| 免费欧美日韩国产三级电影| 国产精品亚洲成人| 91精彩视频在线| 精品国产乱码久久久久久蜜臀| 国产精品不卡视频| 日韩和欧美的一区| 精品国产制服丝袜高跟| 国产精品乱人伦一区二区| 亚洲成人资源在线| 国产乱淫av一区二区三区| 色婷婷综合久久久中文一区二区| 91麻豆精品国产91久久久使用方法 | 亚洲欧美日韩久久| 美腿丝袜亚洲一区| kk眼镜猥琐国模调教系列一区二区| 在线免费观看一区| 日韩免费在线观看| 亚洲理论在线观看| 国产精品中文欧美| 欧美网站一区二区| 国产视频亚洲色图| 日韩电影在线一区二区三区| 成人app下载| 欧美成人猛片aaaaaaa| 中文字幕在线一区二区三区| 日本不卡一区二区三区高清视频| 成人精品高清在线| 日韩女优制服丝袜电影| 一区二区三区四区在线| 国产一区999| 51精品国自产在线| 一个色在线综合| 国产99精品国产| 日韩一区二区免费高清| 亚洲中国最大av网站| 懂色av中文一区二区三区| 日韩欧美激情四射| 亚洲成年人影院| 91论坛在线播放| 国产精品大尺度| 国产黄色成人av| 欧美成人福利视频| 日日夜夜精品视频免费| 欧美亚洲免费在线一区| 成人免费在线视频| 国产白丝精品91爽爽久久| 久久综合九色综合欧美就去吻| 日韩激情视频在线观看| 欧洲生活片亚洲生活在线观看| 国产精品色哟哟| 粉嫩一区二区三区在线看| 久久九九久久九九| 久久99精品久久久久久久久久久久| 8x8x8国产精品| 日韩在线卡一卡二| 欧美乱妇15p| 午夜视频一区在线观看| 欧美日韩精品免费观看视频| 亚洲电影中文字幕在线观看| 欧美中文一区二区三区| 亚洲综合激情另类小说区|