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

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

?? minewnd.cpp

?? visual c++編寫的掃雷游戲的代碼
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
			{
				m_pMines[i][j].uState = STATE_EMPTY;
			}
			else if (m_pMines[i][j].uState == STATE_DICEY)
			{
				m_pMines[i][j].uState = STATE_DICEY_DOWN;
			}
		}
	}
}

void CMineWnd::OnLRBtnUp(UINT row, UINT col)
{
	UINT i, j;
	UINT minRow = (row == 0) ? 0 : row - 1;
	UINT maxRow = row + 2;
	UINT minCol = (col == 0) ? 0 : col - 1;
	UINT maxCol = col + 2;
	
	for (i = minRow; i < maxRow; i++) 
	{
		for (j = minCol; j < maxCol; j++)
		{
			if (!IsInMineArea(i, j)) continue;
			//			if (i == row && j == col) continue;
			if (m_pMines[i][j].uOldState == STATE_NORMAL) 
			{
				m_pMines[i][j].uState = STATE_NORMAL;
			}
			else if (m_pMines[i][j].uOldState == STATE_DICEY) 
			{
				m_pMines[i][j].uState = STATE_DICEY;
			}
		}
	}
	//	Invalidate();
}


//展開拓展周圍8個方向
void CMineWnd::OpenAround(UINT row, UINT col)
{
	//如果周圍相鄰的標志雷數 != 周圍相鄰的雷數 則返回
	if (GetAroundFlags(row, col) != GetAroundNum(row, col)) return;

	UINT i, j;
	UINT around = 0;
	UINT minRow = (row == 0) ? 0 : row - 1;
	UINT maxRow = row + 2;
	UINT minCol = (col == 0) ? 0 : col - 1;
	UINT maxCol = col + 2;
	
	for (i = minRow; i < maxRow; i++) 
	{
		for (j = minCol; j < maxCol; j++) 
		{
			if (!IsInMineArea(i, j)) continue;
			if (m_pMines[i][j].uState == STATE_NORMAL) 
			{//如果該區域為正常區域

				//拓展該雷區
				ExpandMines(i, j);
				around = GetAroundNum(i, j);
				m_pMines[i][j].uState = 15 - around;
				m_pMines[i][j].uOldState = 15 - around;
			}
		}
	}

	// 判斷是否勝利,是則將地圖中所有雷標識出來
	if (Victory())
	{
		for (i = 0; i < m_uYNum; i++) 
		{
			for (j = 0; j < m_uXNum; j++)
			{
				if (m_pMines[i][j].uAttrib == ATTRIB_MINE)
				{
					m_pMines[i][j].uState = STATE_FLAG;
					m_pMines[i][j].uOldState = STATE_FLAG;
				}
			}
		}
		m_nLeaveNum = 0;
		Invalidate();
	}
}

BOOL CMineWnd::ErrorAroundFlag(UINT row, UINT col)
{
		//如果周圍相鄰的標志雷數 != 周圍相鄰的雷數 則返回
	if (GetAroundFlags(row, col) != GetAroundNum(row, col)) return FALSE;

	UINT i, j;
	UINT minRow = (row == 0) ? 0 : row - 1;
	UINT maxRow = row + 2;
	UINT minCol = (col == 0) ? 0 : col - 1;
	UINT maxCol = col + 2;
	
	for (i = minRow; i < maxRow; i++) 
	{
		for (j = minCol; j < maxCol; j++) 
		{
			if (!IsInMineArea(i, j)) continue;
			if (m_pMines[i][j].uState == STATE_FLAG)
			{
				if (m_pMines[i][j].uAttrib != ATTRIB_MINE)
				{
					Dead(i, j);
					return TRUE;
				}
			}
		}
	}
	
	return FALSE;
}

void CMineWnd::OpenByCheat()
{
	UINT i, j;
	for (i = 0; i < m_uYNum; i++)
	{
		for (j = 0; j < m_uXNum; j++)
		{
			if (m_pMines[i][j].uState == STATE_FLAG) continue;
			OpenAround(i, j);
		}
	}
}

void CMineWnd::FreeMines()
{
	//	if (m_pMines) {
	//		delete[] m_pMines;
	//		m_pMines = NULL;
	//	}
	//	for (UINT row = 0; row<m_uYNum; row++) {
	//		if (m_pMines[row]) {
	//			delete []m_pMines[m_uXNum];
	//			delete m_pMines[row];
	//		}
	//	}
}

void CMineWnd::SizeWindow( void )
{
	UINT uWidth = DEFAULT_FRAME_X + m_uXNum * MINE_WIDTH +
		LINE_WIDTH_0 * 3 + SIDE_WIDTH_0 + SIDE_WIDTH_1; 
	UINT uHeight = DEFAULT_FRAME_Y + m_uYNum * MINE_HEIGHT + 
		LINE_WIDTH_0 * 3 + SIDE_WIDTH_0 * 2 + SIDE_WIDTH_1 + SHELL_S_H;	
	SetWindowPos(&wndTopMost, 0, 0, uWidth, uHeight, 
		SWP_NOZORDER | SWP_NOMOVE | SWP_NOCOPYBITS);	// SWP_NOCOPYBITS does not do function???
	
	GetClientRect(&m_rcClient);
	// Button Position
	m_uBtnRect[0] = m_rcClient.right / 2 - 12;			// the left side of the start(state) button without 3d border
	m_uBtnRect[1] = m_rcClient.right / 2 - 13;			// the left side of the start(state) button with 3d border
	m_uBtnRect[2] = m_rcClient.right / 2 + 12;			// the right side of the start(state) button 
	
	// Number Position
	m_uNumRect[0] = m_rcClient.right - 55;				// the left side of the spend time rect	with 3d border
	m_uNumRect[1] = m_rcClient.right - 15;				// the right side of the spend time rect
	m_uNumRect[2] = m_rcClient.right - 54;				// the left side of the spend time rect without 3d border
	//	m_uNumRect[3] = m_rcClient.right - 41;
	//	m_uNumRect[4] = m_rcClient.right - 28;	
	
	// Shell Position
	m_uShellRcX[0] = m_rcClient.right;					//
	m_uShellRcX[1] = m_rcClient.right - 14;				// the width of the small(big) shell
	
	m_uShellRcY[0] = m_rcClient.bottom;					// 
	m_uShellRcY[1] = m_rcClient.bottom - SHELL_L_START_Y - 5;		// the height of the big shell
}

//
// 繪制笑臉按鈕圖
//
void CMineWnd::DrawButton(CPaintDC &dc)
{
	CDC cdc;	
	cdc.CreateCompatibleDC(&dc);
	cdc.SelectObject(m_bmpButton);	
	dc.StretchBlt(m_uBtnRect[0], 16, 24, 24, &cdc, 0, 24 * m_uBtnState, 24, 24, SRCCOPY);
	
	dc.Draw3dRect(m_uBtnRect[1], 15, 26, 26, m_clrDark, m_clrDark);
	
}

//
// 繪制數字
//
void CMineWnd::DrawNumber(CPaintDC &dc)
{
	CDC dcMemory;	
	dcMemory.CreateCompatibleDC(&dc);
	dcMemory.SelectObject(m_bmpNumber);
	
	dc.Draw3dRect(16, 15, 41, 25, m_clrDark, COLOR_WHITE);
	dc.Draw3dRect(m_uNumRect[0], 15, 41, 25, m_clrDark, COLOR_WHITE);
	int num;
	
	// draw remaining mine numbers
	num = (m_nLeaveNum<0) ? 11 : m_nLeaveNum/100;
	dc.StretchBlt(17, 16, 13, 23, &dcMemory, 0, 276-23*(num+1), 13, 23, SRCCOPY);
	num = (m_nLeaveNum < 0) ? -(m_nLeaveNum-num*100)/10 : (m_nLeaveNum-num*100)/10;
	dc.StretchBlt(30, 16, 13, 23, &dcMemory, 0, 276-23*(num+1), 13, 23, SRCCOPY);
	num = (m_nLeaveNum<0) ? -m_nLeaveNum%10 : m_nLeaveNum%10;
	dc.StretchBlt(43, 16, 13, 23, &dcMemory, 0, 276-23*(num+1), 13, 23, SRCCOPY);
	
	// draw take seconds
	num = m_uSpendTime / 100;
	dc.StretchBlt(m_uNumRect[0], 16, 13, 23, &dcMemory, 0, 276-23*(num+1), 13, 23, SRCCOPY);
	num = (m_uSpendTime-num*100)/10;
	dc.StretchBlt(m_uNumRect[0] + 13, 16, 13, 23, &dcMemory, 0, 276-23*(num+1), 13, 23, SRCCOPY);
	num = m_uSpendTime%10;
	dc.StretchBlt(m_uNumRect[0]+26, 16, 13, 23, &dcMemory, 0, 276-23*(num+1), 13, 23, SRCCOPY);
}

//
// 繪制外殼
//
void CMineWnd::DrawShell(CPaintDC &dc)
{
	// 繪畫2條白條
	dc.FillSolidRect(0, 0, m_uShellRcX[0], LINE_WIDTH_0, COLOR_WHITE);
	dc.FillSolidRect(0, 0, LINE_WIDTH_0, m_uShellRcY[0], COLOR_WHITE);
	
	// 畫小的外殼
	dc.Draw3dRect(SHELL_S_START_X, SHELL_S_START_Y, 
		m_uShellRcX[1], SHELL_S_H, m_clrDark, COLOR_WHITE);
	dc.Draw3dRect(SHELL_S_START_X + 1, SHELL_S_START_Y + 1, 
		m_uShellRcX[1] - 2, SHELL_S_H - 2, m_clrDark, COLOR_WHITE);
	
	// 畫大的外殼
	dc.Draw3dRect(SHELL_L_START_X, SHELL_L_START_Y,
		m_uShellRcX[1], m_uShellRcY[1], m_clrDark, COLOR_WHITE);
	dc.Draw3dRect(SHELL_L_START_X + 1, SHELL_L_START_Y + 1,
		m_uShellRcX[1] - 2, m_uShellRcY[1] - 2, m_clrDark, COLOR_WHITE);
	dc.Draw3dRect(SHELL_L_START_X + 2, SHELL_L_START_Y + 2, 
		m_uShellRcX[1] - 4, m_uShellRcY[1] - 4, m_clrDark, COLOR_WHITE);
}

//
// 繪制雷區
//
void CMineWnd::DrawMineArea(CPaintDC &dc)
{
	CDC dcMemory; //用作內存設備
	dcMemory.CreateCompatibleDC(&dc); //使得這個設備與dc兼容
	dcMemory.SelectObject(m_bmpMine); //將內存設備與位圖資源關聯
	
	for (UINT i = 0; i<m_uYNum; i++) 
	{
		for (UINT j = 0; j<m_uXNum; j++) 
		{//根據[i][j]區域的雷方塊狀態拷貝相應的圖像到[i][j]雷區的特定區域
			dc.StretchBlt(MINEAREA_FRAME_X+16*j, MINEAREA_FRAME_Y+16*i, 
				16, 16, &dcMemory, 0, 16*m_pMines[i][j].uState, 16, 16, SRCCOPY);
		}
	}
}

//
// 繪制按下掃雷后的數字
//
void CMineWnd::DrawDownNum(MINEWND* mine, UINT num)
{
	mine->uState = 15 - num;
	mine->uOldState = 15 - num;
	CRect rcMine(mine->uCol * 16, mine->uRow * 16, (mine->uCol+1) *16, (mine->uRow+1) * 16);
	InvalidateRect(rcMine);
}

//重新繪制雷區域的某個方塊
void CMineWnd::DrawSpecialMine(UINT row, UINT col)
{
	CRect rcMine(col * 16, row * 16, (col+1) * 16, (row+1) * 16);
	InvalidateRect(rcMine);
}

//
//  獲取體圖中(x,y)區域的雷信息
//
MINEWND* CMineWnd::GetMine(long x, long y)
{
	//保證參數合格
	if (x < MINEAREA_FRAME_X || y < MINEAREA_FRAME_Y) 
	{
		return NULL;
	}

	//根據坐標值算出該小方塊所在地圖的行和列
	UINT uCol = (UINT)(x-MINEAREA_FRAME_X) / 16;
	UINT uRow = (UINT)(y-MINEAREA_FRAME_Y) / 16;
	//返回該區域的雷信息
	return &m_pMines[uRow][uCol];
}

void CMineWnd::SetCheckedLevel()
{
	if (m_pSubMenu)
	{
		m_pSubMenu->CheckMenuItem(IDM_PRIMARY, MF_UNCHECKED | MF_BYCOMMAND);
		m_pSubMenu->CheckMenuItem(IDM_SECOND, MF_UNCHECKED | MF_BYCOMMAND);
		m_pSubMenu->CheckMenuItem(IDM_ADVANCE, MF_UNCHECKED | MF_BYCOMMAND);
		m_pSubMenu->CheckMenuItem(IDM_CUSTOM, MF_UNCHECKED | MF_BYCOMMAND);
		switch(m_uLevel)
		{
		case LEVEL_PRIMARY:
			m_pSubMenu->CheckMenuItem(IDM_PRIMARY, MF_CHECKED | MF_BYCOMMAND);
			break;
		case LEVEL_SECONDRY:
			m_pSubMenu->CheckMenuItem(IDM_SECOND, MF_CHECKED | MF_BYCOMMAND);
			break;
		case LEVEL_ADVANCE:
			m_pSubMenu->CheckMenuItem(IDM_ADVANCE, MF_CHECKED | MF_BYCOMMAND);
			break;
		case LEVEL_CUSTOM:
			m_pSubMenu->CheckMenuItem(IDM_CUSTOM, MF_CHECKED | MF_BYCOMMAND);
			break;
		default: 
			break;
		}
	}
}

void CMineWnd::SetCheckedMark()
{
	if (m_pSubMenu) {
		if (m_bMarkful) {
			m_pSubMenu->CheckMenuItem(IDM_MARK, MF_CHECKED | MF_BYCOMMAND);
		}
		else {
			m_pSubMenu->CheckMenuItem(IDM_MARK, MF_UNCHECKED | MF_BYCOMMAND);
		}
	}
}

void CMineWnd::SetCheckedColor()
{
	if (m_pSubMenu)
	{
		if (m_bColorful)
		{
			m_pSubMenu->CheckMenuItem(IDM_COLOR, MF_CHECKED | MF_BYCOMMAND);
		}
		else 
		{
			m_pSubMenu->CheckMenuItem(IDM_COLOR, MF_UNCHECKED | MF_BYCOMMAND);
		}
	}
}

void CMineWnd::SetCheckedSound()
{
	if (m_pSubMenu)
	{
		if (m_bSoundful) 
		{
			m_pSubMenu->CheckMenuItem(IDM_SOUND, MF_CHECKED | MF_BYCOMMAND);
		}
		else 
		{
			m_pSubMenu->CheckMenuItem(IDM_SOUND, MF_UNCHECKED | MF_BYCOMMAND);
		}
	}
}

void CMineWnd::SetCheckedCheat()
{
	if (m_pSubMenu)
	{
//		if (m_bCheat) 
//		{
//			m_pSubMenu->CheckMenuItem(IDM_CHEAT, MF_CHECKED | MF_BYCOMMAND);
//		}
	//	else 
//		{
			m_pSubMenu->CheckMenuItem(IDM_CHEAT, MF_UNCHECKED | MF_BYCOMMAND);
//		}
	}
}

void CMineWnd::LoadWaveSrc()
{
	HMODULE hMdl;
	hMdl = AfxGetResourceHandle();
	HRSRC hSrc;
	
	hSrc = FindResource(hMdl, MAKEINTRESOURCE(IDR_WAVE_DEAD), _T("WAVE"));
	m_pSndDead = LoadResource(hMdl, hSrc);
	hSrc = FindResource(hMdl, MAKEINTRESOURCE(IDR_WAVE_VICTORY), _T("WAVE"));
	m_pSndVictory = LoadResource(hMdl, hSrc);
	hSrc = FindResource(hMdl, MAKEINTRESOURCE(IDR_WAVE_CLOCK), _T("WAVE"));
	m_pSndClock = LoadResource(hMdl, hSrc);
}

void CMineWnd::FreeWaveSrc()
{
	if (m_pSndDead)
	{
		FreeResource(m_pSndDead);
		m_pSndDead = NULL;
	}
	if (m_pSndVictory) 
	{
		FreeResource(m_pSndVictory);
		m_pSndVictory = NULL;
	}
	if (m_pSndClock)
	{
		FreeResource(m_pSndClock);
		m_pSndClock = NULL;
	}
}

void CMineWnd::ResetRecord()
{
	m_uPrimary = DEFAULT_RECORD;
	m_szPrimary = DEFAULT_HOLDER;
	m_uSecond= DEFAULT_RECORD;
	m_szSecond = DEFAULT_HOLDER;
	m_uAdvance = DEFAULT_RECORD;
	m_szAdvance = DEFAULT_HOLDER;
}

void CMineWnd::SetCustom(UINT xNum, UINT yNum, UINT mNum)
{
	m_uXNum = xNum;
	m_uYNum = yNum;
	m_uMineNum = mNum;
}

void CMineWnd::OnPaint() 
{

	CPaintDC dc(this);    // 用以屏幕顯示的設備
	CDC dcMemory;  // 內存設備

	CBitmap bitmap;

	if (!dc.IsPrinting()) 
	{

		// 與dc設備兼容
		if (dcMemory.CreateCompatibleDC(&dc))
		{	
			// 使得bitmap與實際顯示的設備兼容
			if (bitmap.CreateCompatibleBitmap(&dc, m_rcClient.right, m_rcClient.bottom))
			{
				// 內存設備選擇物件-位圖
				dcMemory.SelectObject(&bitmap);
				//繪制背景框
				dcMemory.FillRect(&m_rcClient, &m_brsBG);
				
				DrawButton((CPaintDC&) dcMemory);//笑臉按鈕繪圖
				DrawNumber((CPaintDC&) dcMemory);//文字繪圖(計時器文字和剩余雷數文字)
				DrawShell((CPaintDC&) dcMemory);//3D效果外殼繪圖
				DrawMineArea((CPaintDC&) dcMemory);//雷區繪圖


				// 將內存設備的內容拷貝到實際屏幕顯示的設備
				dc.BitBlt(m_rcClient.left, m_rcClient.top, m_rcClient.right, m_rcClient.bottom, &dcMemory, 0, 0, SRCCOPY);
				bitmap.DeleteObject();
			}
		}
	}
}

void CMineWnd::OnShowWindow(BOOL bShow, UINT nStatus) 
{
	SizeWindow();
	CWnd::OnShowWindow(bShow, nStatus);
}

void CMineWnd::OnTimer(UINT nIDEvent) 
{
	if (nIDEvent == ID_TIMER_EVENT)
	{
		if (m_bSoundful) 
		{
			sndPlaySound((LPCTSTR)LockResource(m_pSndClock), SND_MEMORY | SND_ASYNC | SND_NODEFAULT);
		}
		m_uSpendTime++;
		CRect rcNum(m_uNumRect[0], 15, m_uNumRect[1], 39);
	//	InvalidateRect(rcNum);
		Invalidate();
		if (m_uSpendTime >= DEFAULT_RECORD) 
		{
			KillTimer(ID_TIMER_EVENT);
			m_uTimer = 0;
		}
	}
	
	CWnd::OnTimer(nIDEvent);
}

void CMineWnd::OnLButtonDown(UINT nFlags, CPoint point) 
{
	//按鈕所在的區域
	CRect rcBtn(m_uBtnRect[1], 15, m_uBtnRect[2], 39);
	//雷區所在的區域
	CRect rcMineArea(MINE_AREA_LEFT, MINE_AREA_TOP, 
		MINE_AREA_LEFT + m_uXNum * MINE_WIDTH, MINE_AREA_TOP + m_uYNum * MINE_HEIGHT);
	
	SetCapture();			// capture the mouse cursor
	m_bClickBtn = FALSE;
	m_bLRBtnDown = FALSE;

	if (rcBtn.PtInRect(point)) 
	{// click in the button area
		m_bClickBtn = TRUE;
		m_uBtnState = BUTTON_DOWN;
		InvalidateRect(rcBtn);
	}
	else if (rcMineArea.PtInRect(point))
	{// click in the mine area
		// change mine state by gamestate
		switch(m_uGameState) 
		{						
		case GS_WAIT: case GS_RUN:
			m_pNewMine = GetMine(point.x, point.y);
			if (!m_pNewMine) return;
			if (m_pNewMine->uState == STATE_NORMAL)
			{
				m_pNewMine->uState = STATE_EMPTY;
			}
			if (m_pNewMine->uState == STATE_DICEY)
			{
				m_pNewMine->uState = STATE_DICEY_DOWN;
			}
			m_pOldMine = m_pNewMine;
			break;
		case GS_DEAD: case GS_VICTORY:
			return;
			break;
		default :
			break;
		}
		m_uBtnState = BUTTON_CLICK;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美mv和日韩mv国产网站| 久久久久国产精品免费免费搜索| 美女mm1313爽爽久久久蜜臀| 国产精品亲子伦对白| 欧美一区三区二区| 色综合久久久久综合体| 激情图片小说一区| 亚洲国产成人精品视频| 亚洲婷婷综合色高清在线| 欧美变态口味重另类| 欧美吻胸吃奶大尺度电影| 成人app软件下载大全免费| 蜜臀av国产精品久久久久| 亚洲老妇xxxxxx| 国产日韩亚洲欧美综合| 日韩午夜电影在线观看| 欧美日韩三级一区二区| 99久久夜色精品国产网站| 国产综合色精品一区二区三区| 香蕉成人伊视频在线观看| 亚洲精品国产第一综合99久久| 精品国产91久久久久久久妲己| 欧美嫩在线观看| 欧美日韩在线三区| 91精品办公室少妇高潮对白| 成人动漫视频在线| 成人午夜电影久久影院| 激情综合亚洲精品| 久久精品国产网站| 日本午夜一区二区| 国产精品66部| 六月婷婷色综合| 久久av老司机精品网站导航| 日韩极品在线观看| 视频一区国产视频| 亚洲成av人片在线观看无码| 亚洲一区二区影院| 亚洲成人黄色小说| 午夜精品123| 日韩高清一区在线| 日本一不卡视频| 看国产成人h片视频| 蜜乳av一区二区| 久久成人免费电影| 国产一区啦啦啦在线观看| 国产一区久久久| 国产成人综合亚洲网站| 国产成人在线看| 波多野洁衣一区| 色综合久久综合| 欧美三级韩国三级日本三斤| 欧美精品黑人性xxxx| 日韩精品在线一区二区| 久久久久久久久免费| 亚洲国产高清aⅴ视频| 亚洲三级电影网站| 亚洲一级在线观看| 蜜臀91精品一区二区三区| 精品一区二区三区欧美| 国产精品99久久久久久宅男| 不卡欧美aaaaa| 欧美亚洲丝袜传媒另类| 欧美日本一区二区三区四区| 日韩一区二区三区在线| 久久免费看少妇高潮| 国产精品乱人伦| 亚洲电影一区二区| 精品一区中文字幕| av成人免费在线| 欧美日韩一区二区三区不卡| 精品成人免费观看| 中文字幕一区二区三区不卡在线| 一区二区三区在线免费播放| 丝袜美腿亚洲一区二区图片| 国产精品一区二区三区四区| 色综合一区二区| 精品奇米国产一区二区三区| 中文字幕+乱码+中文字幕一区| 亚洲综合一区二区三区| 麻豆久久久久久| 色综合天天综合| 日韩欧美亚洲一区二区| 日韩毛片一二三区| 久久福利视频一区二区| av不卡免费电影| 日韩一区国产二区欧美三区| 国产精品久久久久久福利一牛影视 | 97久久精品人人做人人爽| 欧美日韩电影在线播放| 国产欧美日韩在线观看| 日韩av网站在线观看| 波多野结衣中文字幕一区| 中文字幕免费一区| 天涯成人国产亚洲精品一区av| 国产99久久久国产精品潘金网站| 一本大道久久精品懂色aⅴ| 精品三级在线观看| 亚洲自拍偷拍综合| 成人免费毛片嘿嘿连载视频| 欧美日韩一级大片网址| 国产精品久久久久久久久动漫 | 欧美精品在线一区二区三区| 欧美国产日韩亚洲一区| 五月天一区二区三区| 成人精品免费网站| 精品国产一区二区三区av性色| 亚洲尤物在线视频观看| 福利一区福利二区| 日韩欧美色综合| 午夜激情久久久| 91官网在线观看| 自拍偷自拍亚洲精品播放| 国产呦精品一区二区三区网站| 欧美伦理电影网| 一区二区三区成人在线视频| 成人午夜碰碰视频| 久久一夜天堂av一区二区三区 | 国产美女在线观看一区| 欧美日本国产视频| 一区二区三区日韩欧美| 成人h精品动漫一区二区三区| 久久综合资源网| 美女视频黄 久久| 91精品国产免费| 人禽交欧美网站| 欧美一区二区三区播放老司机| 亚洲18影院在线观看| 欧美性猛交xxxx乱大交退制版 | 国产欧美一区二区在线| 久久成人羞羞网站| 欧美精品一区二区三区蜜桃 | 欧美变态tickling挠脚心| 日韩高清不卡一区二区三区| 欧美日韩国产首页| 亚洲第一激情av| 51精品秘密在线观看| 亚洲3atv精品一区二区三区| 欧美日韩午夜在线视频| 午夜影院久久久| 91精品国产综合久久福利| 蜜臀99久久精品久久久久久软件| 日韩午夜在线播放| 精品一区二区综合| 久久影院电视剧免费观看| 国产激情视频一区二区在线观看 | 91猫先生在线| 一区二区三区中文字幕精品精品 | 精品视频在线免费| 天堂va蜜桃一区二区三区| 欧美精品第一页| 国产激情偷乱视频一区二区三区| 国产精品美女久久久久久久久久久 | 欧美无人高清视频在线观看| 亚洲va天堂va国产va久| 欧美一区二区网站| 韩国v欧美v亚洲v日本v| 久久午夜老司机| 不卡av在线免费观看| 亚洲人吸女人奶水| 911国产精品| 国产黄色精品视频| 亚洲视频香蕉人妖| 欧美另类videos死尸| 国产真实精品久久二三区| 中文字幕一区二区在线播放| 91成人在线免费观看| 久久精品国产精品青草| 日本一区二区三区高清不卡| 91视频免费观看| 青青青爽久久午夜综合久久午夜| 久久九九国产精品| 欧美在线一二三| 精品一区免费av| 亚洲精品国产无天堂网2021| 欧美一级欧美三级| av中文字幕一区| 视频一区国产视频| 国产女人水真多18毛片18精品视频| 色中色一区二区| 极品美女销魂一区二区三区| 最新国产成人在线观看| 日韩欧美精品在线视频| 成人aa视频在线观看| 午夜欧美电影在线观看| 亚洲国产精品99久久久久久久久| 欧美在线播放高清精品| 国产suv精品一区二区6| 亚洲不卡在线观看| 国产精品网站导航| 91精品国产欧美日韩| 色综合天天综合网国产成人综合天| 男人操女人的视频在线观看欧美| 国产精品久久久久久久久免费相片| 91 com成人网| 99久久99久久精品国产片果冻| 免费视频最近日韩| 亚洲女同ⅹxx女同tv| 欧美日本在线一区| 丁香桃色午夜亚洲一区二区三区| 91精品黄色片免费大全|