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

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

?? main.cpp

?? 實現貪吃蛇游戲
?? CPP
字號:
#include<windows.h>
#include <time.h>

#include"snaker.h"
#include"table.h"

//游戲狀態定義
#define GAME_STATE_WAIT     0  //游戲等待狀態
#define GAME_STATE_RUN      1  //游戲運行狀態
#define GAME_STATE_END      2  //游戲結束狀態

//界面相關物件尺寸定義
#define WALL_WIDTH             80  //外墻從左部到游戲區的寬度
#define WALL_HEIGHT            80  //外墻從頂部到游戲區的高度

#define BMP_SCORE_BOARD_WIDTH  256 //分數位圖板的寬度
#define BMP_SCORE_BOARD_HEIGHT 55  //分數位圖板的高度

#define BMP_WALL_WIDTH         16  //墻位圖的寬度
#define BMP_WALL_HEIGHT        16  //墻位圖的高度

LRESULT CALLBACK WndProc(HWND hWnd,UINT message,
						 WPARAM wParam,LPARAM lParam);
void DrawGame(void);
void ShellDraw( HDC  hdc );
void GameAreaDraw(HDC hdc);

void OnTimer(UINT uTIMER_ID);
void StartGame( void );
void EndGame( void );

//創建一個桌子
CTable table;

int tableBlockWidth = 0;  //桌子的格子的寬度
int tableBlockHeight = 0; //桌子的格子的高度
int iScores = 0;          //游戲的得分

UINT uGameState = GAME_STATE_WAIT; //當前游戲狀態

HDC windowDC = NULL;      //windows屏幕設備
HDC bufferDC = NULL;      //緩沖設備環境
HDC picDC = NULL;         //snake圖像內存設備
HDC endDC = NULL;		 //游戲終結圖像內存設備
HDC scoreDC = NULL;      //分數板內存設備

HWND hAppWnd = NULL;     //本application窗口句柄


HBITMAP picBMP = NULL;      //snake圖像位圖句柄
HBITMAP bufferBMP = NULL;   //緩沖位圖句柄
HBITMAP endBMP = NULL;      //游戲終結圖像內存句柄
HBITMAP hbmpWall = NULL;    //墻位圖句柄
HBITMAP hbmpScore = NULL;   //分數板位圖句柄

HBRUSH hbrushWall = NULL;      //墻畫刷

//定時器標識
UINT uSnakeMoveTimer;  //蛇的移動
UINT uFoodAddTimer;    //水果的產生

//框架的位置數據定義
//GDI RECT 而不是 MFC CRect
RECT g_ClientRect;
RECT g_GameValueRect;
int g_iClientWidth;
int g_iClientHeight;

int WINAPI WinMain(HINSTANCE hCurrentInst,HINSTANCE hPrevInstance,
				   PSTR lpszCmdLine,int nCmdShow)
{	
	WNDCLASS wndClass;
	HWND hWnd;
	MSG msg;
	UINT width,height;
	
	
	//定義窗口
	wndClass.style=CS_HREDRAW | CS_VREDRAW;
	wndClass.lpfnWndProc=WndProc;
	wndClass.cbClsExtra=0;
	wndClass.cbWndExtra=0;
	wndClass.hInstance=hCurrentInst;
	wndClass.hIcon=LoadIcon(NULL,MAKEINTRESOURCE(IDI_MAIN));
	wndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
	wndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
	wndClass.lpszMenuName=NULL;
	wndClass.lpszClassName="Snake_CLASS";
	//注冊窗口
	RegisterClass(&wndClass);
	
	
	//取整個屏幕的尺寸	
	width=GetSystemMetrics(SM_CXSCREEN);
	height=	GetSystemMetrics(SM_CYSCREEN);
	//創建窗口
	hWnd=CreateWindow(
		"Snake_CLASS",
		"skyblue snake",
		WS_POPUP,
		0,0,
		width,height,
		NULL,NULL,
		hCurrentInst,
		NULL);

	hAppWnd = hWnd;

	//顯示窗口
	ShowWindow(hWnd,nCmdShow);
	UpdateWindow(hWnd);
	
    //獲取窗體大小
	GetClientRect(hAppWnd, &g_ClientRect);
	g_iClientWidth = g_ClientRect.right-g_ClientRect.left;
	g_iClientHeight = g_ClientRect.bottom-g_ClientRect.top;

	//將游戲區域分成縱,橫均為20塊的小方塊
	//并計算每塊區域的大小
	tableBlockWidth = (g_iClientWidth-2*WALL_WIDTH)/20;
	tableBlockHeight = (g_iClientHeight-2*WALL_HEIGHT)/20;
	
	//獲取當前主窗口設備與windowDC關聯
	windowDC=GetDC(NULL);
	//創建與windowDC兼容的內存設備環境
	bufferDC=CreateCompatibleDC(windowDC);
	picDC=CreateCompatibleDC(windowDC);
	endDC=CreateCompatibleDC(windowDC);	
	scoreDC=CreateCompatibleDC(windowDC);	

	//位圖的初始化或載入位圖	
	bufferBMP=CreateCompatibleBitmap(windowDC,g_iClientWidth,g_iClientHeight);
	picBMP=(HBITMAP)LoadImage(NULL,"snake.bmp",IMAGE_BITMAP,160,80,LR_LOADFROMFILE);
	hbmpWall=(HBITMAP)LoadImage(NULL,"brick.bmp",IMAGE_BITMAP,16,16,LR_LOADFROMFILE);
	endBMP = (HBITMAP)LoadImage(NULL,"end.bmp",IMAGE_BITMAP,369,300,LR_LOADFROMFILE);
	hbmpScore=(HBITMAP)LoadImage(NULL,"scoreboard.bmp",IMAGE_BITMAP,265,55,LR_LOADFROMFILE);
	
	//聲明位圖與設備環境的關聯
	SelectObject(bufferDC,bufferBMP);
	SelectObject(picDC,picBMP);
	SelectObject(endDC,endBMP);
	SelectObject(scoreDC,hbmpScore);

	//建立畫刷與其名相對應的圖像的關聯,
	//以備用刷子將墻刷出來,用PatBlt()實現
	hbrushWall = CreatePatternBrush(hbmpWall);
	
	StartGame();
	
	
	while(GetMessage(&msg,NULL,0,0))
	{		
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hWnd,UINT message,
						 WPARAM wParam,LPARAM lParam)
{
	
	switch(message)
	{
	case WM_TIMER :
		OnTimer((UINT)wParam);		
		break;		

	case WM_KEYDOWN:
		switch(wParam)
		{
		case VK_ESCAPE:
			exit(0);
			break;
		case VK_UP:
			table.ChangeSnakeDirect(S_UP);
			break;
		case VK_DOWN:
			table.ChangeSnakeDirect(S_DOWN);
			break;
		case VK_LEFT:
			table.ChangeSnakeDirect(S_LEFT);
			break;
		case VK_RIGHT:
			table.ChangeSnakeDirect(S_RIGHT);
			break;
		case VK_SPACE:
			if(	uGameState == GAME_STATE_END )
		{
			StartGame();
			break;
		}

		}
		return 0;
		case WM_SETCURSOR:
			SetCursor(NULL);
			return 0;
		case WM_DESTROY:
			ReleaseDC(hWnd,picDC);
			ReleaseDC(hWnd,bufferDC);
			ReleaseDC(hWnd,windowDC);
			PostQuitMessage(0);
			return 0;			
	}
	return DefWindowProc(hWnd,message,wParam,lParam);
}

void DrawGame(void)
{
	//繪制外殼區域到緩沖
	ShellDraw(bufferDC);

	//繪制游戲區域到緩沖
	GameAreaDraw(bufferDC);

	//將整個畫面從緩沖DC拷貝出屏幕
	BitBlt(windowDC,0,0,g_iClientWidth,g_iClientHeight,bufferDC,0,0,SRCCOPY);
}



void OnTimer(UINT uTIMER_ID)
{
	if ( uTIMER_ID == uSnakeMoveTimer )
	{
		//移動蛇
		table.SnakeMove();
		
		//檢測是否碰到身體(環繞),結束游戲
		if(table.GetSnake()->IsHeadTouchBody(table.GetSnake()->GetPos()[0].x,table.GetSnake()->GetPos()[0].y))
		{
			EndGame();
		}
		
		//根據蛇頭所在的區域作出相應的處理
		switch(table.GetData(table.GetSnake()->GetPos()[0].x,table.GetSnake()->GetPos()[0].y))
		{
		case TB_STATE_FOOD:
			table.ClearFood(table.GetSnake()->GetPos()[0].x,table.GetSnake()->GetPos()[0].y);
			table.AddBlock((rand())%tableBlockWidth,(rand())%tableBlockHeight);
			table.GetSnake()->AddBody();
			++iScores;
			break;
		case TB_STATE_BLOCK:
		case TB_STATE_SBLOCK:
			//檢測是否碰到障礙物,結束游戲
			EndGame();
			break;
		}
		
		//顯示
		DrawGame();
	}
	else if ( uTIMER_ID == uFoodAddTimer )
	{//定時加食物
		table.AddFood((rand())%tableBlockWidth,(rand())%tableBlockHeight);
	}
}

void StartGame()
{
	iScores=0;

	//桌面的初始化
	table.InitialTable(tableBlockWidth,tableBlockHeight);
	table.GetSnake()->ChangeDirect(S_RIGHT);
	table.GetSnake()->SetHeadPos(tableBlockWidth/2,tableBlockHeight/2);

	//預先隨機產生幾個食物
	srand( (unsigned)time(NULL) );
	for(int iFoodNum=0;  iFoodNum<4; iFoodNum++)
	{
		table.AddFood((rand())%tableBlockWidth,(rand())%tableBlockHeight);
	}
	//不部下種子也可以直接用rand(),
	//但是每次游戲開始都是產生完全一樣的偽隨即序列

	//打開定時器
	uSnakeMoveTimer = SetTimer(hAppWnd,500,100,NULL);
	uFoodAddTimer = SetTimer(hAppWnd,600,7000,NULL);

		uGameState = GAME_STATE_RUN;
}

void EndGame( void )
{
	//關閉定時器
	KillTimer(hAppWnd,uSnakeMoveTimer);
	KillTimer(hAppWnd,uFoodAddTimer);
	uGameState = GAME_STATE_END;
}

void ShellDraw( HDC  hdc )
{	
//	HDC hMemDc;
//	BOOL ret = TRUE;
//	HDC hMemoryDC;
//	HBITMAP hbmp;
	//分數提示顯示文字
	char szText[30] = "Score: ";
	char szNum[20];

	int iNowScore = iScores*100;
	itoa(iNowScore,szNum,10);
	strcat(szText, szNum);
	
	RECT rt, rect;
	GetClientRect(hAppWnd, &rt);
	//墻的繪制
	SelectObject(hdc,hbrushWall);
	PatBlt(hdc,rt.left,rt.top,rt.right,rt.bottom,PATCOPY);
	//內部游戲區的白色底平面
	rect.left = rt.left+WALL_WIDTH;
	rect.top = rt.top + WALL_HEIGHT;
	rect.right = rt.right - WALL_WIDTH;
	rect.bottom = rt.bottom - WALL_HEIGHT;		
	FillRect(hdc, &rect, (HBRUSH) (COLOR_WINDOW+1));
	
	//分數提示板的繪制		
/*	hMemoryDC =	CreateCompatibleDC(NULL);	
	hbmp = CreateCompatibleBitmap(hdc,265,55);		
	SelectObject(hMemoryDC,hbrushScore);	
	SelectObject(hMemoryDC,hbmp);	
	PatBlt(hMemoryDC,0,0,256,55,PATCOPY);	
	BitBlt(hdc,GetSystemMetrics(SM_CXSCREEN)/3,
		   10,256,55,hMemoryDC,0,0,SRCCOPY);
*/
	BitBlt(hdc,GetSystemMetrics(SM_CXSCREEN)/3,
		   10,256,55,scoreDC,0,0,SRCCOPY);
	
//分數的打印繪制
	SetBkMode(hdc, TRANSPARENT); 	
	TextOut(hdc, GetSystemMetrics(SM_CXSCREEN)/3+50, 30,szText,strlen(szText) );
}

void GameAreaDraw(HDC hdc)
{
	int i,j;
	int x,y, x_pos,y_pos;
	BitmapState  state;
	char strMark[20];

	//繪制水果與 毒果
	for(i=0;i<tableBlockHeight;i++)
		for(j=0;j<tableBlockWidth;j++)
		{	
			x_pos = j*20+WALL_WIDTH;
			y_pos = i*20+WALL_HEIGHT;

			switch(table.GetData(j,i))
			{
			case TB_STATE_FOOD:
				BitBlt(hdc,x_pos,y_pos,20,20,picDC,100,0,SRCPAINT);
				BitBlt(hdc,x_pos,y_pos,20,20,picDC,20,0,SRCAND);
				break;
			case TB_STATE_BLOCK:
				BitBlt(hdc,x_pos,y_pos,20,20,picDC,80,0,SRCPAINT);
				BitBlt(hdc,x_pos,y_pos,20,20,picDC,0,0,SRCAND);
				break;
			}
		}

		//根據當前的狀態繪制蛇頭		
		x=table.GetSnake()->GetPos()[0].x;
		y=table.GetSnake()->GetPos()[0].y;
		x_pos = x*20+WALL_WIDTH;
		y_pos = y*20+WALL_HEIGHT;		
		state=table.GetSnake()->GetStateArray()[0];

		switch(state)
		{
		case M_UP_UP:
			BitBlt(hdc,x_pos,y_pos,20,20,picDC,80,20,SRCPAINT);
			BitBlt(hdc,x_pos,y_pos,20,20,picDC,0,20,SRCAND);
			break;
		case M_DOWN_DOWN:
			BitBlt(hdc,x_pos,y_pos,20,20,picDC,140,20,SRCPAINT);
			BitBlt(hdc,x_pos,y_pos,20,20,picDC,60,20,SRCAND);
			break;
		case M_LEFT_LEFT:
			BitBlt(hdc,x_pos,y_pos,20,20,picDC,100,20,SRCPAINT);
			BitBlt(hdc,x_pos,y_pos,20,20,picDC,20,20,SRCAND);
			break;
		case M_RIGHT_RIGHT:
			BitBlt(hdc,x_pos,y_pos,20,20,picDC,120,20,SRCPAINT);
			BitBlt(hdc,x_pos,y_pos,20,20,picDC,40,20,SRCAND);
			break;
		}

		//根據各個蛇身節點的狀態繪制蛇身的形狀
		for(i=1;i<table.GetSnake()->GetLength()-1;i++)
		{
			x=table.GetSnake()->GetPos()[i].x;
			y=table.GetSnake()->GetPos()[i].y;
			x_pos = x*20+WALL_WIDTH;
			y_pos = y*20+WALL_HEIGHT;	
			state=table.GetSnake()->GetStateArray()[i];
			switch(state)
			{
			case M_UP_UP:
			case M_DOWN_DOWN:
				BitBlt(hdc,x_pos,y_pos,20,20,picDC,80,40,SRCPAINT);
				BitBlt(hdc,x_pos,y_pos,20,20,picDC,0,40,SRCAND);
				break;
			case M_LEFT_LEFT:
			case M_RIGHT_RIGHT:
				BitBlt(hdc,x_pos,y_pos,20,20,picDC,100,40,SRCPAINT);
				BitBlt(hdc,x_pos,y_pos,20,20,picDC,20,40,SRCAND);
				break;
			case M_RIGHT_DOWN:
			case M_UP_LEFT:
				BitBlt(hdc,x_pos,y_pos,20,20,picDC,100,60,SRCPAINT);
				BitBlt(hdc,x_pos,y_pos,20,20,picDC,20,60,SRCAND);
				break;
			case M_LEFT_DOWN:
			case M_UP_RIGHT:
				BitBlt(hdc,x_pos,y_pos,20,20,picDC,80,60,SRCPAINT);
				BitBlt(hdc,x_pos,y_pos,20,20,picDC,0,60,SRCAND);
				break;
			case M_RIGHT_UP:
			case M_DOWN_LEFT:
				BitBlt(hdc,x_pos,y_pos,20,20,picDC,140,40,SRCPAINT);
				BitBlt(hdc,x_pos,y_pos,20,20,picDC,60,40,SRCAND);
				break;
			case M_LEFT_UP:
			case M_DOWN_RIGHT:
				BitBlt(hdc,x_pos,y_pos,20,20,picDC,120,40,SRCPAINT);
				BitBlt(hdc,x_pos,y_pos,20,20,picDC,40,40,SRCAND);
				break;
				
			}
		}

		//繪制蛇尾巴
		x=table.GetSnake()->GetPos()[table.GetSnake()->GetLength()-1].x;
		y=table.GetSnake()->GetPos()[table.GetSnake()->GetLength()-1].y;
		x_pos = x*20+WALL_WIDTH;
		y_pos = y*20+WALL_HEIGHT;	
		state=table.GetSnake()->GetStateArray()[table.GetSnake()->GetLength()-1];		
		switch(state)
		{
		case M_UP_UP:
			BitBlt(hdc,x_pos,y_pos,20,20,picDC,120,60,SRCPAINT);
			BitBlt(hdc,x_pos,y_pos,20,20,picDC,40,60,SRCAND);
			break;
		case M_DOWN_DOWN:
			BitBlt(hdc,x_pos,y_pos,20,20,picDC,120,0,SRCPAINT);
			BitBlt(hdc,x_pos,y_pos,20,20,picDC,40,0,SRCAND);
			break;
		case M_LEFT_LEFT:
			BitBlt(hdc,x_pos,y_pos,20,20,picDC,140,60,SRCPAINT);
			BitBlt(hdc,x_pos,y_pos,20,20,picDC,60,60,SRCAND);
			break;
		case M_RIGHT_RIGHT:
			BitBlt(hdc,x_pos,y_pos,20,20,picDC,140,0,SRCPAINT);
			BitBlt(hdc,x_pos,y_pos,20,20,picDC,60,0,SRCAND);
			break;
		}
		
		if(uGameState == GAME_STATE_END)
		{//繪制游戲結束圖像
			int x_pos = g_iClientWidth/3;
			int y_pos = g_iClientHeight/4;

			BitBlt(hdc, x_pos, y_pos, 369, 300, endDC, 0, 0, SRCCOPY);			
		}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
高潮精品一区videoshd| 日本不卡123| 日韩免费福利电影在线观看| 一本一本大道香蕉久在线精品 | 久久尤物电影视频在线观看| 91亚洲资源网| av色综合久久天堂av综合| 极品美女销魂一区二区三区 | 欧美日韩精品一区二区| 一本大道久久a久久综合婷婷| 成人av网站在线| 菠萝蜜视频在线观看一区| 粉嫩aⅴ一区二区三区四区| 精品一区二区免费| 久久 天天综合| 国产成人综合在线| 成人激情动漫在线观看| 成人av网站在线| 色哟哟一区二区在线观看| 色婷婷久久综合| 在线观看国产日韩| 91麻豆精品国产综合久久久久久| 666欧美在线视频| 日韩美一区二区三区| 亚洲精品一区二区三区在线观看| 欧美不卡一区二区三区| 欧美激情一区三区| 亚洲精品一二三| 日韩av在线免费观看不卡| 国产一区二区调教| 99精品视频在线免费观看| 欧美视频一区二| 日韩一本二本av| 国产精品人人做人人爽人人添| 亚洲免费色视频| 成人激情开心网| 国模一区二区三区白浆| 亚洲国产精品久久久男人的天堂| 婷婷成人综合网| 国产成人av一区二区| 色av成人天堂桃色av| 日韩一区二区视频在线观看| 亚洲国产精品t66y| 亚洲国产一区二区在线播放| 国产一区中文字幕| 欧美三级三级三级| 久久久高清一区二区三区| 一区二区三区.www| 国产乱对白刺激视频不卡| 日本久久一区二区| 久久久不卡网国产精品一区| 亚洲综合免费观看高清完整版 | 亚洲成人激情社区| 国产经典欧美精品| 欧美一区二区成人6969| 综合分类小说区另类春色亚洲小说欧美| 午夜精品久久久久久久蜜桃app| 国产黄色精品网站| 717成人午夜免费福利电影| 中文字幕在线一区| 久久av老司机精品网站导航| 欧美在线观看视频一区二区| 久久久久久久久久久99999| 天涯成人国产亚洲精品一区av| 成人高清在线视频| 久久综合九色综合欧美就去吻| 一区二区三区国产| 成人一区在线看| 欧美mv日韩mv亚洲| 午夜精品aaa| 91久久精品一区二区三区| 欧美激情综合网| 国产传媒日韩欧美成人| 欧美成人国产一区二区| 日韩电影一区二区三区四区| 欧美性色欧美a在线播放| 亚洲天堂精品在线观看| 成人短视频下载| 国产精品情趣视频| 岛国一区二区三区| 亚洲国产精品传媒在线观看| 成人午夜激情在线| 国产日韩欧美一区二区三区乱码 | 成人激情小说网站| 国产精品久久久久久亚洲伦| 国产一区999| 国产亚洲一区二区三区| 国产精品白丝jk白祙喷水网站 | 国产亚洲一区二区在线观看| 美女在线一区二区| 欧美亚洲国产bt| 亚洲午夜精品一区二区三区他趣| 色婷婷综合五月| 亚洲v中文字幕| 欧美日韩大陆一区二区| 日本不卡1234视频| 国产亚洲一区二区在线观看| 国产精品456露脸| 亚洲国产成人一区二区三区| 成人性视频免费网站| 亚洲图片欧美激情| 欧美日韩国产一级片| 美女视频一区在线观看| 久久色在线视频| 91免费看片在线观看| 亚洲国产精品一区二区www | 免费的成人av| 久久久久久久久97黄色工厂| aaa欧美日韩| 亚洲成a人片综合在线| 日韩视频一区二区三区 | 99国产精品久久久久| 亚洲午夜电影在线观看| 欧美精品一区二区三区四区| 成人av片在线观看| 日韩精品成人一区二区三区| 国产亚洲一区二区在线观看| 一本色道a无线码一区v| 九九国产精品视频| 最近中文字幕一区二区三区| 欧美一区二区三区喷汁尤物| 成人免费毛片嘿嘿连载视频| 午夜电影一区二区| 国产精品麻豆欧美日韩ww| 欧美日韩一区二区在线观看 | 成人午夜视频在线| 丝袜亚洲另类欧美综合| 中文字幕免费不卡| 日韩一区二区不卡| 色吊一区二区三区| 精品无码三级在线观看视频 | 欧美一级理论性理论a| 99久久精品一区| 国产精品一区久久久久| 午夜精品视频在线观看| 亚洲婷婷综合色高清在线| 久久亚洲精品小早川怜子| 欧美日韩免费视频| fc2成人免费人成在线观看播放| 免费成人在线视频观看| 一区二区三区在线看| 中文字幕欧美区| 欧美不卡在线视频| 91精品国模一区二区三区| 成人激情黄色小说| 国产精品99久久久久久似苏梦涵| 日日摸夜夜添夜夜添亚洲女人| 国产精品福利一区| 久久久久久9999| 欧美精品一区在线观看| 日韩三级av在线播放| 在线不卡a资源高清| 欧美亚一区二区| 色综合中文综合网| 国产精品久久国产精麻豆99网站 | 中文字幕免费不卡在线| 久久精品欧美日韩| 国产日韩精品视频一区| 国产欧美一区二区精品婷婷| 国产午夜精品久久| 久久久国产精品不卡| 久久久精品日韩欧美| 久久久久久久综合| 国产欧美在线观看一区| 国产清纯在线一区二区www| 国产亚洲午夜高清国产拍精品| 久久久久久久久久久99999| 久久亚洲综合色| 国产精品久久久久永久免费观看| 国产午夜亚洲精品不卡| 国产精品高清亚洲| 亚洲一区二区在线免费观看视频| 一区二区三区在线观看动漫| 亚洲综合一区二区三区| 亚洲超碰97人人做人人爱| 丝袜美腿亚洲一区| 国精品**一区二区三区在线蜜桃| 国产乱码精品1区2区3区| www.成人在线| 欧美三级视频在线| 日韩美女视频一区二区在线观看| 久久精品人人爽人人爽| 亚洲精品国产一区二区精华液| 亚洲综合一区二区| 狠狠色综合日日| heyzo一本久久综合| 在线电影一区二区三区| 久久久99久久精品欧美| 亚洲欧美日韩一区二区 | 免费成人你懂的| 国产成人精品一区二| 91黄色激情网站| 日韩欧美一二区| 国产精品高潮久久久久无| 日韩中文字幕一区二区三区| 国产精品综合一区二区| 欧洲一区二区三区免费视频| 欧美成人乱码一区二区三区| 中文字幕一区日韩精品欧美| 日韩不卡一区二区|