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

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

?? terris.cpp

?? 俄羅斯方塊vc++編碼
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
#include <windows.h>
#include <time.h>

#include "terris.h"

const char MenuName[]=TEXT("TerrisMenu");

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,
				   LPSTR CommandLine,int CommandShow)
{
	MSG msg;

	if(!InitClass(hInstance))
		return (0);
	
	if(!InitWindow(hInstance))
		return (0);

	while(GetMessage(&msg,NULL,0,0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	return (msg.wParam);
}

BOOL InitClass(HINSTANCE hInstMain)
{
	WNDCLASSEX wc;
	wc.cbSize=sizeof(WNDCLASSEX);
	wc.style=CS_HREDRAW | CS_VREDRAW;
	wc.lpfnWndProc=(WNDPROC)(WndProc);
	wc.cbClsExtra=0;
	wc.cbWndExtra=0;
	wc.hInstance=hInstMain;
	wc.hIcon=LoadIcon(hInstMain,"TerrisBig");
	wc.hIconSm=LoadIcon(hInstMain,"TerrisSmall");
	wc.hCursor=LoadCursor(NULL,IDC_ARROW);
	wc.hbrBackground=(HBRUSH)(COLOR_BTNFACE+1);
	wc.lpszMenuName=MenuName;
	wc.lpszClassName="Terris";
	if (RegisterClassEx(&wc))
		return (TRUE);
	else
		return (FALSE);
}

BOOL InitWindow(HINSTANCE hInstMain)
{
	HWND hwnd=CreateWindowEx(WS_EX_CLIENTEDGE,
		                     "Terris",
							 "Terris",
							 WS_SYSMENU | WS_CAPTION | WS_MINIMIZEBOX | WS_VISIBLE,
							 CW_USEDEFAULT,CW_USEDEFAULT,300,460,
							 NULL,NULL,hInstMain,NULL);
	if(hwnd)
		return (TRUE);
	else
		return (FALSE);
}


LRESULT CALLBACK WndProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
	HDC hdc;

	PAINTSTRUCT ps;

	static HINSTANCE   hInst;
	
	static BLOCK BlockArray[ROWS][COLS];

	static TimerInterval;

	static bool FlagGameJustStart = TRUE;

	switch(uMsg)
	{
	case WM_CREATE:
		 hInst=((LPCREATESTRUCT)lParam)->hInstance;
		 TimerInterval = EasyInterval;
		 CheckMenuRadioItem( GetMenu(hWnd), IDM_EASY,IDM_DIFFICULT,IDM_EASY,MF_BYCOMMAND);
		 break;
	case WM_TIMER:
		 if(NeedGenerateNewBlock(BlockArray))
		 {			 
			 KillFullLine(hWnd,BlockArray);
			 if(GameOver(BlockArray))
			 {
			     KillTimer(hWnd,TIMERID);
				 EnableMenuItem( GetMenu(hWnd ),IDM_START,MF_ENABLED);
				 EnableMenuItem( GetMenu(hWnd ),IDM_PAUSE,MF_GRAYED);
				 FlagGameJustStart = TRUE;
				 ChangeBlockStyleToGray(BlockArray);
				 RefreshWindow(hWnd,BlockArray);
				 MessageBox(hWnd,"對不起,請再來一盤","注意",MB_OK | MB_ICONEXCLAMATION);
			 }
			 else
			 {
				 MoveBlockFromPreviewToGameArea(hWnd,BlockArray);
		         GenerateNewBlock(hWnd,BlockArray);
			 }
		 }
		 else
		 {
			 if (CanBlockMoveDown(BlockArray))
			     MoveBlockDown(hWnd,BlockArray);
			 else
			 {				 
				 Moveable2Stable(BlockArray);
			 }
		 }
		 break;
	case WM_KEYDOWN:
		 if ( GetMenuState(GetMenu(hWnd), IDM_START, MF_BYCOMMAND) != MF_GRAYED )
		 break;
		 switch(wParam)
		 {

          case VK_RIGHT:
			   if(CanBlockMoveRight(BlockArray))
			   {
			      MoveBlockRight(hWnd,BlockArray);
			   }
			   break;
		  case VK_LEFT:
			   if(CanBlockMoveLeft(BlockArray))
			   {
                  MoveBlockLeft(hWnd,BlockArray);
			   }
			   break;
		  case VK_DOWN:
			   if(CanBlockMoveDown(BlockArray))
			   {
				  MoveBlockDown(hWnd,BlockArray);
			   }
			   break; 
		  case VK_UP:  
			   switch(JudgeBlockStyle(BlockArray))
			   {
			   case 0:
                    RotateStyleZero(hWnd,BlockArray);
				    break;
               case 1:
				    RotateStyleOne(hWnd,BlockArray);
				    break;
               case 2:
				    RotateStyleTwo(hWnd,BlockArray);
				    break;
			   case 3:
				    RotateStyleThree(hWnd,BlockArray);
				    break;
			   case 4:
				    RotateStyleFour(hWnd,BlockArray);
				    break;
			   case 5:
				    break;
			   case 6:
				    RotateStyleSix(hWnd,BlockArray);
				    break;
			   }
			   break;
		 }
		 break;
    case WM_COMMAND:
		 switch (LOWORD (wParam))
		 {
		 case IDM_START:
			  if ( FlagGameJustStart == TRUE) 
			  {
				  InitializeBlock( BlockArray );
				  RefreshWindow(hWnd, BlockArray );
				  FlagGameJustStart = FALSE;
			  }
			  SetTimer(hWnd,TIMERID,TimerInterval,NULL);
              EnableMenuItem( GetMenu(hWnd), IDM_START, MF_GRAYED);
              EnableMenuItem( GetMenu(hWnd), IDM_PAUSE, MF_ENABLED);
		 	  break;
		 case IDM_PAUSE:
			  KillTimer(hWnd,TIMERID);
			  EnableMenuItem( GetMenu(hWnd), IDM_START,MF_ENABLED);
              EnableMenuItem( GetMenu(hWnd), IDM_PAUSE,MF_GRAYED);
		 	  break;
		 case IDM_EXIT:
			  if ( GetMenuState(GetMenu(hWnd), IDM_START, MF_BYCOMMAND) == MF_GRAYED)
				   KillTimer( hWnd,TIMERID);
			  DestroyWindow(hWnd);
			  break;
		 case IDM_EASY:
			  TimerInterval = EasyInterval;
              CheckMenuRadioItem( GetMenu(hWnd),IDM_EASY,IDM_DIFFICULT,IDM_EASY,MF_BYCOMMAND);
			  if(GetMenuState(GetMenu(hWnd),IDM_START,MF_BYCOMMAND) == MF_GRAYED)
			  {
			    KillTimer(hWnd,TIMERID);
			    SetTimer(hWnd,TIMERID,TimerInterval,NULL);
			  }
			  break;
		 case IDM_MEDIUM:
			  TimerInterval = MediumInterval;
              CheckMenuRadioItem( GetMenu(hWnd),IDM_EASY,IDM_DIFFICULT,IDM_MEDIUM,MF_BYCOMMAND);
			  if(GetMenuState(GetMenu(hWnd),IDM_START,MF_BYCOMMAND) == MF_GRAYED)
			  {
			    KillTimer(hWnd,TIMERID);
			    SetTimer(hWnd,TIMERID,TimerInterval,NULL);
			  }
			  break;
		 case IDM_DIFFICULT:
			  TimerInterval = DifficultInterval;
              CheckMenuRadioItem( GetMenu(hWnd),IDM_EASY,IDM_DIFFICULT,IDM_DIFFICULT,MF_BYCOMMAND);
			  if(GetMenuState(GetMenu(hWnd),IDM_START,MF_BYCOMMAND) == MF_GRAYED)
			  {
			    KillTimer(hWnd,TIMERID);
			    SetTimer(hWnd,TIMERID,TimerInterval,NULL);
			  }
			  break;
		 case IDM_ABOUT:
			  DialogBoxParam(hInst,"DLG_ABOUT",hWnd,\
		                     (DLGPROC)AboutDialogProc,(LPARAM)0);
			  break;
		 }
		 break;
    case WM_PAINT:
		 hdc=BeginPaint(hWnd,&ps);
		 DrawBackground(hdc);
		 RefreshWindow(hWnd,BlockArray);
		 EndPaint(hWnd,&ps);
		 break;
	case WM_DESTROY:
		 KillTimer(hWnd,TIMERID);
		 PostQuitMessage(0);
		 break;
	default:
		 return DefWindowProc(hWnd,uMsg,wParam,lParam);
	}
	return (0);
}

void DrawBackground(HDC hdc)
{
	HBRUSH hBrush;
	POINT pt[8];

	pt[0].x = OriginXPos;
	pt[0].y = OriginYPos + 4 * BLOCKSIZE;

	pt[1].x = OriginXPos;
	pt[1].y = OriginYPos + ROWS * BLOCKSIZE;

	pt[2].x = pt[1].x + COLS * BLOCKSIZE;
	pt[2].y = pt[1].y;

	pt[3].x = pt[2].x;
	pt[3].y = pt[0].y;

	pt[4].x = pt[3].x + 5;
	pt[4].y = pt[3].y;

	pt[5].x = pt[4].x;
	pt[5].y = pt[2].y + 5;

	pt[6].x = pt[0].x - 5;
	pt[6].y = pt[1].y + 5;

 	pt[7].x = pt[6].x;
	pt[7].y = pt[0].y;

    SelectObject(hdc,GetStockObject(NULL_PEN));
	SelectObject(hdc,GetStockObject(WHITE_BRUSH));
		
	Polygon(hdc,pt,8);

	SelectObject(hdc,GetStockObject(BLACK_BRUSH));

	Polygon(hdc,pt,4);

	
    pt[0].x=OriginXPos;
	pt[0].y=OriginYPos;

	pt[1].x=pt[0].x + BLOCKSIZE * COLS;
	pt[1].y=pt[0].y;

	pt[2].x=pt[1].x;
	pt[2].y=pt[1].y + BLOCKSIZE * 4;

	pt[3].x=pt[0].x;
	pt[3].y=pt[2].y;

	hBrush=CreateSolidBrush(GetPixel(hdc,0,0));
	SelectObject(hdc,hBrush);

	Polygon(hdc,pt,4);

	SelectObject(hdc,GetStockObject(BLACK_PEN));
	SelectObject(hdc,GetStockObject(NULL_BRUSH));

	DeleteObject(hBrush);

}
void DrawBlock(HDC hdc,int row,int column,int BlockStyle)
{
	POINT    pt[4];

	COLORREF BrightBrushColor[8]={RGB(255,0,0),RGB(0,255,0),RGB(0,0,255),\
		                          RGB(0,255,255),RGB(255,0,255),RGB(255,255,0),\
								  RGB(200,200,200),RGB(200,200,200)};
    COLORREF MediumBrushColor[8]={RGB(180,0,0),RGB(0,180,0),RGB(0,0,180),\
		                          RGB(0,200,200),RGB(200,0,200),RGB(200,200,0),\
								  RGB(90,90,90),RGB(140,140,140)};
	COLORREF DarkBrushColor[8]={RGB(90,0,0),RGB(0,90,0),RGB(0,0,90),\
		                        RGB(0,90,90),RGB(90,0,90),RGB(90,90,0),\
								RGB(40,40,40),RGB(100,100,100)};

	HBRUSH hBrushBright,hBrushMedium,hBrushDark;

    hBrushBright=CreateSolidBrush(BrightBrushColor[BlockStyle]);
	hBrushMedium=CreateSolidBrush(MediumBrushColor[BlockStyle]);
    hBrushDark=CreateSolidBrush(DarkBrushColor[BlockStyle]);

	SelectObject(hdc,GetStockObject(NULL_PEN));	
    SelectObject(hdc,hBrushBright);


	pt[0].x=column* BLOCKSIZE + OriginXPos;
	pt[0].y=row* BLOCKSIZE + OriginYPos;

	pt[1].x=pt[0].x+BLOCKSIZE;
    pt[1].y=pt[0].y;

	pt[2].x=pt[1].x-3;
	pt[2].y=pt[1].y+3;

	pt[3].x=pt[0].x+3;
	pt[3].y=pt[0].y+3;

	
	Polygon(hdc,pt,4); 

	pt[0].x=column* BLOCKSIZE + OriginXPos;
	pt[0].y=row* BLOCKSIZE + OriginYPos;

	pt[1].x=pt[0].x+3;
    pt[1].y=pt[0].y+3;

	pt[3].x=pt[0].x;
	pt[3].y=pt[0].y+BLOCKSIZE;

	pt[2].x=pt[3].x+3;
	pt[2].y=pt[3].y-3;

		
	Polygon(hdc,pt,4); 


	SelectObject(hdc,hBrushMedium);

	pt[0].x=column* BLOCKSIZE + OriginXPos+3;
	pt[0].y=row* BLOCKSIZE + OriginYPos+3;

	pt[1].x=column* BLOCKSIZE + OriginXPos+BLOCKSIZE-3;
	pt[1].y=row* BLOCKSIZE + OriginYPos + 3;

	pt[2].x=column* BLOCKSIZE + OriginXPos+BLOCKSIZE-3;
	pt[2].y=row* BLOCKSIZE + OriginYPos+BLOCKSIZE - 3;

	pt[3].x=column* BLOCKSIZE + OriginXPos +3;
	pt[3].y=row* BLOCKSIZE + OriginYPos+BLOCKSIZE - 3;
 
	Polygon(hdc,pt,4);

	SelectObject(hdc,hBrushDark);

	pt[0].x=column* BLOCKSIZE + OriginXPos+BLOCKSIZE;
	pt[0].y=row* BLOCKSIZE + OriginYPos;

	pt[1].x=pt[0].x;
	pt[1].y=pt[0].y+BLOCKSIZE;

	pt[2].x=pt[1].x - 3;
	pt[2].y=pt[1].y - 3;

	pt[3].x=pt[0].x - 3;
	pt[3].y=pt[0].y + 3;
 
	Polygon(hdc,pt,4);

	pt[0].x=column* BLOCKSIZE + OriginXPos + BLOCKSIZE;
	pt[0].y=row* BLOCKSIZE + OriginYPos + BLOCKSIZE;

	pt[1].x=pt[0].x-BLOCKSIZE;
	pt[1].y=pt[0].y;

	pt[2].x=pt[1].x + 3;
	pt[2].y=pt[1].y - 3;

	pt[3].x=pt[0].x - 3;
	pt[3].y=pt[0].y - 3;
 
    Polygon(hdc,pt,4);

	SelectObject(hdc,GetStockObject(NULL_BRUSH));
	SelectObject(hdc,GetStockObject(BLACK_PEN));

	DeleteObject(hBrushBright);
	DeleteObject(hBrushMedium);
    DeleteObject(hBrushDark);
}
void InitializeBlock(BLOCK BlockArray[ROWS][COLS])
{
	int i, j;
	for (i = 0; i < ROWS; i ++)
		for (j = 0; j < COLS; j ++)
		{
			BlockArray[i][j].Flag_Is_Filled = FALSE;
			BlockArray[i][j].Flag_Is_Moveable = FALSE;
			BlockArray[i][j].BlockStyle = 0;
		}
}
void EraseBlock(HDC hdc,int row,int column)
{
	POINT pt[4];

	HBRUSH hBrush;
	
	pt[0].x=BLOCKSIZE * column + OriginXPos;
	pt[0].y=BLOCKSIZE * row +OriginYPos;

	pt[1].x=pt[0].x+BLOCKSIZE;
	pt[1].y=pt[0].y;

	pt[2].x=pt[1].x;
	pt[2].y=pt[1].y+BLOCKSIZE;

	pt[3].x=pt[0].x;
	pt[3].y=pt[0].y+BLOCKSIZE;
    
	
	if ((row >= 0) &&  ( row <= 3))
	{
		hBrush=CreateSolidBrush(GetPixel(hdc,0,0));
		
		SelectObject(hdc,GetStockObject(NULL_PEN));
	    SelectObject(hdc,hBrush);

	    Polygon(hdc,pt,4);

	    SelectObject(hdc,GetStockObject(BLACK_PEN));
	    SelectObject(hdc,GetStockObject(NULL_BRUSH));

		DeleteObject(hBrush);

	}
	else
	{

       SelectObject(hdc,GetStockObject(NULL_PEN));
	   SelectObject(hdc,GetStockObject(BLACK_BRUSH));

	   Polygon(hdc,pt,4);

	   SelectObject(hdc,GetStockObject(BLACK_PEN));
	   SelectObject(hdc,GetStockObject(NULL_BRUSH));
	}
}


void MoveBlockFromSrcToDes (BLOCK BlockArray[ROWS][COLS],int SrcRow, int SrcCol, int DesRow, int DesCol)
/* 將某一個方塊從源地址移到目的地址 */
{
	BlockArray[DesRow][DesCol].Flag_Is_Filled   = BlockArray[SrcRow][SrcCol].Flag_Is_Filled;
	BlockArray[DesRow][DesCol].Flag_Is_Moveable = BlockArray[SrcRow][SrcCol].Flag_Is_Moveable;
	BlockArray[DesRow][DesCol].BlockStyle       = BlockArray[SrcRow][SrcCol].BlockStyle;

   
	BlockArray[SrcRow][SrcCol].Flag_Is_Filled   = FALSE;
	BlockArray[SrcRow][SrcCol].Flag_Is_Moveable = FALSE;
	BlockArray[SrcRow][SrcCol].BlockStyle       = 0;
}
void MoveBlockFromPreviewToGameArea(HWND hwnd, BLOCK BlockArray[ROWS][COLS])
{
	int i,j;

    HDC	hdc;

	hdc = GetDC(hwnd);

	for (i = 0; i < 2; i ++)
		for (j = 0 ;j < COLS; j ++)
		{
			if (BlockArray[ i ][ j ].Flag_Is_Filled == TRUE)
			{
				MoveBlockFromSrcToDes(BlockArray,i, j, i + 2, j + 3 );
			    DrawBlock(hdc, i + 2,j + 3, BlockArray[i + 2][j + 3 ].BlockStyle);
				EraseBlock(hdc,i, j);
			}
		}

	ReleaseDC(hwnd,hdc);
}
void GenerateNewBlock(HWND hwnd,BLOCK BlockArray[ROWS][COLS])
{
	
	int i,j;

	HDC hdc;

	srand( (unsigned)time( NULL ) );
    switch ( rand()%7 )
	{
	case 0:
   	     BlockArray[0][0].BlockStyle=0;BlockArray[0][0].Flag_Is_Filled=TRUE;BlockArray[0][0].Flag_Is_Moveable=TRUE;
		 BlockArray[0][1].BlockStyle=0;BlockArray[0][1].Flag_Is_Filled=TRUE;BlockArray[0][1].Flag_Is_Moveable=TRUE;
         BlockArray[0][2].BlockStyle=0;BlockArray[0][2].Flag_Is_Filled=TRUE;BlockArray[0][2].Flag_Is_Moveable=TRUE;
		 BlockArray[0][3].BlockStyle=0;BlockArray[0][3].Flag_Is_Filled=TRUE;BlockArray[0][3].Flag_Is_Moveable=TRUE;
 
		 break;
	case 1:
	     BlockArray[0][1].BlockStyle=1;BlockArray[0][1].Flag_Is_Filled=TRUE;BlockArray[0][1].Flag_Is_Moveable=TRUE;
 		 BlockArray[0][2].BlockStyle=1;BlockArray[0][2].Flag_Is_Filled=TRUE;BlockArray[0][2].Flag_Is_Moveable=TRUE;
         BlockArray[1][0].BlockStyle=1;BlockArray[1][0].Flag_Is_Filled=TRUE;BlockArray[1][0].Flag_Is_Moveable=TRUE;
		 BlockArray[1][1].BlockStyle=1;BlockArray[1][1].Flag_Is_Filled=TRUE;BlockArray[1][1].Flag_Is_Moveable=TRUE;
 		 

		 break;
	case 2:
  		 BlockArray[0][0].BlockStyle=2;BlockArray[0][0].Flag_Is_Filled=TRUE;BlockArray[0][0].Flag_Is_Moveable=TRUE;
 		 BlockArray[0][1].BlockStyle=2;BlockArray[0][1].Flag_Is_Filled=TRUE;BlockArray[0][1].Flag_Is_Moveable=TRUE;
         BlockArray[0][2].BlockStyle=2;BlockArray[0][2].Flag_Is_Filled=TRUE;BlockArray[0][2].Flag_Is_Moveable=TRUE;
		 BlockArray[1][0].BlockStyle=2;BlockArray[1][0].Flag_Is_Filled=TRUE;BlockArray[1][0].Flag_Is_Moveable=TRUE;


		 break;
	case 3:
		 
 		 BlockArray[0][0].BlockStyle=3;BlockArray[0][0].Flag_Is_Filled=TRUE;BlockArray[0][0].Flag_Is_Moveable=TRUE;
 		 BlockArray[0][1].BlockStyle=3;BlockArray[0][1].Flag_Is_Filled=TRUE;BlockArray[0][1].Flag_Is_Moveable=TRUE;
         BlockArray[0][2].BlockStyle=3;BlockArray[0][2].Flag_Is_Filled=TRUE;BlockArray[0][2].Flag_Is_Moveable=TRUE;
		 BlockArray[1][1].BlockStyle=3;BlockArray[1][1].Flag_Is_Filled=TRUE;BlockArray[1][1].Flag_Is_Moveable=TRUE;
		 

  		 break;
	case 4:
		 BlockArray[0][0].BlockStyle=4;BlockArray[0][0].Flag_Is_Filled=TRUE;BlockArray[0][0].Flag_Is_Moveable=TRUE;
 		 BlockArray[0][1].BlockStyle=4;BlockArray[0][1].Flag_Is_Filled=TRUE;BlockArray[0][1].Flag_Is_Moveable=TRUE;
         BlockArray[1][1].BlockStyle=4;BlockArray[1][1].Flag_Is_Filled=TRUE;BlockArray[1][1].Flag_Is_Moveable=TRUE;
		 BlockArray[1][2].BlockStyle=4;BlockArray[1][2].Flag_Is_Filled=TRUE;BlockArray[1][2].Flag_Is_Moveable=TRUE;

		 break;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲小少妇裸体bbw| 国产乱码精品一区二区三区忘忧草| 久久久综合激的五月天| 欧美丰满一区二区免费视频 | 亚洲午夜电影在线| 国产精品精品国产色婷婷| 欧美综合天天夜夜久久| 成人福利在线看| 国产精品自拍三区| 麻豆成人综合网| 日本亚洲三级在线| 午夜欧美在线一二页| 亚洲成va人在线观看| 亚洲无线码一区二区三区| 亚洲天堂久久久久久久| 国产精品区一区二区三| 久久噜噜亚洲综合| 亚洲精品在线免费播放| 精品国产91久久久久久久妲己| 97精品久久久午夜一区二区三区| 国产精品18久久久久久vr| 国产精品羞羞答答xxdd| 国产成人精品综合在线观看 | 91精品国产综合久久久久久漫画| 在线免费观看日韩欧美| 91国偷自产一区二区三区观看| www.爱久久.com| 成人在线一区二区三区| 成人网页在线观看| heyzo一本久久综合| 国产盗摄视频一区二区三区| 成人免费视频播放| 91一区在线观看| 在线观看网站黄不卡| 欧美性生活久久| 欧美日韩精品久久久| 欧美一级在线观看| 精品国产一二三区| 中文字幕精品—区二区四季| 国产精品久久久久久久久免费相片 | 91丨porny丨首页| 一本到不卡精品视频在线观看 | 日韩欧美第一区| 日韩欧美色综合| 久久久久国产精品麻豆ai换脸| 国产日韩欧美精品在线| 中文字幕一区二区三区乱码在线| 亚洲欧美激情插| 天堂久久一区二区三区| 久久成人精品无人区| 国产精品亚洲一区二区三区妖精| 成人免费电影视频| 91精品中文字幕一区二区三区| 亚洲国产成人一区二区三区| 亚洲午夜久久久久中文字幕久| 激情五月婷婷综合| 欧美视频一区二区三区| 日本一区二区三区国色天香 | 中文字幕精品一区二区三区精品| 午夜欧美大尺度福利影院在线看| 国产成人一区二区精品非洲| 欧美色男人天堂| 国产精品久久久久影院老司| 日本成人在线不卡视频| 色婷婷激情综合| 国产日韩欧美精品电影三级在线| 天天免费综合色| 色香色香欲天天天影视综合网| 久久日一线二线三线suv| 婷婷夜色潮精品综合在线| 99精品欧美一区二区三区综合在线| 日韩你懂的在线播放| 一卡二卡三卡日韩欧美| 成人高清免费观看| 久久久国际精品| 免费一级片91| 欧美日韩精品电影| 一区二区三区免费看视频| 成人综合婷婷国产精品久久| 精品国产一区二区三区不卡| 日日夜夜精品视频天天综合网| 色婷婷综合久久久| 一区精品在线播放| 成人午夜在线视频| 久久综合久久综合久久综合| 免费成人av在线| 777色狠狠一区二区三区| 亚洲国产日韩一级| 欧美专区亚洲专区| 亚洲精选免费视频| 91免费视频观看| 国产日韩欧美一区二区三区综合 | 欧美日韩国产高清一区二区三区| 成人欧美一区二区三区黑人麻豆 | 亚洲1区2区3区4区| 欧美揉bbbbb揉bbbbb| 亚洲综合在线五月| 97se狠狠狠综合亚洲狠狠| 国产精品久久久久三级| 成a人片国产精品| 中文在线免费一区三区高中清不卡| 国产美女一区二区三区| 久久久久国产精品人| 国产黄色91视频| 国产婷婷色一区二区三区四区| 国产精品亚洲专一区二区三区| 久久久精品国产免费观看同学| 国产精品亚洲第一| 国产精品私人影院| 99久久精品国产一区二区三区| 国产精品国产三级国产aⅴ原创 | 9久草视频在线视频精品| 中文字幕中文字幕一区二区| 成人小视频免费在线观看| 中文字幕一区二区三区蜜月| 91麻豆国产精品久久| 洋洋成人永久网站入口| 欧美日韩在线不卡| 男男视频亚洲欧美| 国产三级三级三级精品8ⅰ区| 成人黄页毛片网站| 亚洲区小说区图片区qvod| 欧美色图片你懂的| 日韩不卡一区二区| 久久久久久9999| 99久久国产免费看| 亚洲一区二区三区国产| 777奇米成人网| 国产一区久久久| 国产精品美女久久久久aⅴ| 91香蕉视频黄| 日韩经典中文字幕一区| 久久婷婷色综合| 91伊人久久大香线蕉| 亚洲高清免费观看高清完整版在线观看| 欧美日韩精品综合在线| 久久电影网电视剧免费观看| 久久久蜜桃精品| 99riav久久精品riav| 手机精品视频在线观看| 精品久久久久av影院 | 日韩欧美一区电影| 国产99久久久久久免费看农村| 综合在线观看色| 日韩小视频在线观看专区| 成人性生交大片免费| 天堂久久久久va久久久久| 国产亚洲精品资源在线26u| 91麻豆产精品久久久久久| 蜜臀久久久久久久| 免费人成精品欧美精品| 欧美日韩另类一区| 国产精品一二三区| 一区二区三区在线视频免费| 欧美大片在线观看一区| 色综合天天综合网天天狠天天| 日韩av网站免费在线| 国产精品美女久久久久久久久| 7777精品伊人久久久大香线蕉最新版| 黄色资源网久久资源365| 亚洲综合视频在线| 久久综合九色综合97婷婷女人| 欧美性色综合网| 国产成a人亚洲精品| 午夜电影网亚洲视频| 国产精品久久久久9999吃药| 日韩一区二区免费在线电影| 91影院在线观看| 国产伦精品一区二区三区视频青涩| 亚洲综合一区二区精品导航| 国产目拍亚洲精品99久久精品| 91精品综合久久久久久| 91丨porny丨在线| 国产福利电影一区二区三区| 奇米影视在线99精品| 亚洲一区在线观看网站| 国产精品成人在线观看 | 亚洲成av人片在www色猫咪| 中文字幕乱码日本亚洲一区二区| 91精品国产麻豆| 色哟哟欧美精品| 成人一区二区视频| 精品亚洲免费视频| 日韩**一区毛片| 午夜欧美大尺度福利影院在线看| 成人免费在线视频| 国产欧美日韩视频在线观看| 日韩欧美国产一区二区在线播放 | 国产精品美女久久久久久久久久久 | 亚洲视频一区在线| 国产欧美va欧美不卡在线| 精品国产sm最大网站| 91精品国产一区二区人妖| 欧美日韩视频一区二区| 色婷婷亚洲一区二区三区| 成人综合婷婷国产精品久久| 国模冰冰炮一区二区| 卡一卡二国产精品 | 国产成人av福利| 极品少妇xxxx精品少妇|