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

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

?? treesearch.cpp

?? 《C++Builder程序設計范例--中國象棋》配書盤自述文件
?? CPP
?? 第 1 頁 / 共 2 頁
字號:

static short capmovgen(SQUARETYPE newsq, PARAMTYPE *P)
{
    INDEXTYPE i;

    MoveTable[Depth].content = ChessBoard[newsq].piece;
    MoveTable[Depth].spe = 0;
    MoveTable[Depth].newpos1 = newsq;
     for (i = PawnNumber[Player]; i >= 0; i--)
	if (PieceTable[Player][i].ipiece != empty)
            if (PieceAttacks(PieceTable[Player][i].ipiece, Player,
		    PieceTable[Player][i].isquare, newsq))
            {
                MoveTable[Depth].oldpos = PieceTable[Player][i].isquare;
                MoveTable[Depth].movpiece = PieceTable[Player][i].ipiece;
                if (loopbody(P)) return 1;
            }
    return 0;
}
              

/*
 在老的位置生成非吃子移動
 */

static short noncapmovgen(SQUARETYPE oldsq, PARAMTYPE *P)
{
    DIRTYPE dir;
    int direction;
    EDGESQUARETYPE newsq;
    int tmpBishopDir, tmpKnightDir;

    MoveTable[Depth].spe = 0;
    MoveTable[Depth].oldpos = oldsq;
    MoveTable[Depth].movpiece = ChessBoard[oldsq].piece;
    MoveTable[Depth].content = empty;
    switch (MoveTable[Depth].movpiece)
    {
	case king :  /*王每次直走一格,且不能超出九宮*/
		 for (dir = 3; dir >= 0; dir--)
		 {
	        newsq = MoveTable[Depth].oldpos + DirectionTab[dir] ;
		 if ((newsq<=0x98) && (newsq>=0))
		if (((newsq>>4)<10) && ((newsq % 16)<9)
		    && ((newsq | 0xff)>=0))
		   if (ChessBoard[MoveTable[Depth].oldpos].color == red)
			if (( newsq  >=0) && ( newsq  <= 0x28)
			    && ((newsq % 16) >=3) && ((newsq % 16) <=5))
			  if (ChessBoard[newsq].piece == empty)
				{
				MoveTable[Depth].newpos1 = newsq;
				if (loopbody(P))
				  return 1;
				}
		  }
		  for (dir = 3; dir >= 0; dir--)
		  {
		  newsq = MoveTable[Depth].oldpos + DirectionTab[dir] ;
		  if ((newsq<=0x98) && (newsq>=0))
		if (((newsq>>4)<10) && ((newsq % 16)<9)
		    && ((newsq | 0xff) >=0))
		  if (ChessBoard[MoveTable[Depth].oldpos].color == black)
			if (( newsq >= 0x70) && (( newsq ) <= 0x98)
			    && ((newsq % 16) >=3) && ((newsq % 16) <=5))
				if (ChessBoard[newsq].piece == empty)
				{
				MoveTable[Depth].newpos1 = newsq;
				if (loopbody(P))
				  return 1;
				}
		  }
		 break;
	case assist :  /*士每次斜走一格,且不能超出九宮*/
		  for (dir = 3; dir >= 0; dir--)
		  {
		 newsq = MoveTable[Depth].oldpos + AssistDir[dir];
		if ((newsq<=0x98) && (newsq>=0))
		if (((newsq>>4)<10) && ((newsq % 16)< 9)
		    && ((newsq | 0xff) >=0))
		  if (ChessBoard[MoveTable[Depth].oldpos].color == red)
			if (( newsq  >=0) && ( newsq <= 0x28)
			    && ((newsq % 16) >=3) && ((newsq % 16) <=5))
				if (ChessBoard[newsq].piece == empty)
				{
				MoveTable[Depth].newpos1 = newsq;
				if (loopbody(P))
				return 1;
				}
		 } ;
        for (dir = 3; dir >= 0; dir--)
				{
		 newsq = MoveTable[Depth].oldpos + AssistDir[dir];
		if ((newsq<=0x98) && (newsq>=0))
		if (((newsq>>4)<10) && ((newsq % 16)< 9)
		    && ((newsq | 0xff) >=0))
		  if (ChessBoard[MoveTable[Depth].oldpos].color == black)
			if (( newsq  >= 0x70) && ( newsq <= 0x98)
			    && ((newsq % 16) >=3) && ((newsq % 16) <=5))
			if (ChessBoard[newsq].piece == empty)
			{
			MoveTable[Depth].newpos1 = newsq;
			if (loopbody(P))
			return 1;
			}
	            	       }
	 break;
	case bishop :  /*象走田字路,且田心無棋子*/
		  for (dir = 3; dir >= 0; dir--)
                  {
		newsq = MoveTable[Depth].oldpos + BishopDir[dir];
		    {
		if  (BishopDir[dir]== 0x1E)
			 tmpBishopDir = 0x0F;
		if  (BishopDir[dir]== -0x1E)
			 tmpBishopDir= -0x0F;
		if  (BishopDir[dir]== 0x22)
			 tmpBishopDir= 0x11;
		if  (BishopDir[dir]== -0x22)
			 tmpBishopDir= -0x11;
		    }
	       if ((newsq<=0x98) && (newsq>=0))
		if (((newsq>>4)<10) && ((newsq % 16)< 9)
		    && ((newsq | 0xff) >=0))
		  if (ChessBoard[MoveTable[Depth].oldpos].color == red)
		   if (( ChessBoard[newsq -  tmpBishopDir].piece == empty ))
			if (( newsq >=0) && ( newsq <= 0x48))
			 if (ChessBoard[newsq].piece == empty)
			        {
				   MoveTable[Depth].newpos1 = newsq;
				       if (loopbody(P))
				         return 1;
		                }
		  }
	    for (dir = 3; dir >= 0; dir--)
               {
	       newsq = MoveTable[Depth].oldpos + BishopDir[dir];
					{
		if  (BishopDir[dir]== 0x1E)
			 tmpBishopDir = 0x0F;
		if  (BishopDir[dir]== -0x1E)
			 tmpBishopDir= -0x0F;
		if  (BishopDir[dir]== 0x22)
			 tmpBishopDir= 0x11;
		if  (BishopDir[dir]== -0x22)
			 tmpBishopDir= -0x11;
					}
	       if ((newsq<=0x98) && (newsq>=0))
		if (((newsq>>4)<10) && ((newsq % 16)< 9)
		     && ((newsq | 0xff) >=0))
		  if (ChessBoard[MoveTable[Depth].oldpos].color == black)
		   if (((newsq - tmpBishopDir)<=0x98) && ((newsq - tmpBishopDir)>=0))
			if ((((newsq - tmpBishopDir)>>4)<10) && (((newsq - tmpBishopDir) % 16)< 9)
			    && (((newsq - tmpBishopDir) | 0xff) >=0))
		     if (( ChessBoard[newsq - tmpBishopDir].piece == empty ))
			if (( newsq >= 0x50) && ( newsq <= 0x98))
			 if (ChessBoard[newsq].piece == empty)
			     {
			       MoveTable[Depth].newpos1 = newsq;
				if (loopbody(P))
				return 1;
			     }
                  }
	  break;
         case knight :    /*馬走日字路,且不能有躄腳子*/
            for (dir = 7; dir >= 0; dir--)
            {
	       newsq = MoveTable[Depth].oldpos + KnightDir[dir];

	       	if  ( KnightDir[dir]== 0x0E)
		    tmpKnightDir= 0x0F;
	      	if  ( KnightDir[dir]== -0x0E)
		    tmpKnightDir= -0x0F;
	      	if  ( KnightDir[dir]== 0x12)
		    tmpKnightDir = 0x11;
	     	if  ( KnightDir[dir]== -0x12)
		    tmpKnightDir = -0x11;
	      	if  ( KnightDir[dir]== 0x1F)
		    tmpKnightDir = 0x0F;
		if  (KnightDir[dir]== -0x1F)
		    tmpKnightDir = -0x0F;
		if  ( KnightDir[dir]== 0x21)
		    tmpKnightDir = 0x11;
	     	if  ( KnightDir[dir]== -0x21)
		    tmpKnightDir = -0x11;

    if ((newsq<=0x98) && (newsq>=0))
      if (((newsq>>4)<10) && ((newsq % 16)< 9)
		    && ((newsq | 0xff) >=0))
	if (((newsq - tmpKnightDir)<=0x98) && ((newsq - tmpKnightDir)>=0))
	   if ((((newsq - tmpKnightDir)/16)<10) && (((newsq - tmpKnightDir) % 16)< 9)
		       && (((newsq - tmpKnightDir) | 0xff) >=0))
	      if ( ChessBoard[newsq - tmpKnightDir].piece == empty )
		       if (ChessBoard[newsq].piece == empty)
                    {
                        MoveTable[Depth].newpos1 = newsq;
                        if (loopbody(P))
                            return 1;
                    }
	    }
            break;

       /*車、炮可以連續走子*/
        case rook  :
	case gunner :
	    for (dir = 3; dir >= 0; dir--)
            {
                direction = DirectionTab[dir];
		   newsq = MoveTable[Depth].oldpos + direction;
		while (((newsq>>4)<10) && ((newsq % 16)<9)
		      && (newsq<=0x98) && (newsq>=0) && ((newsq | 0xff) >=0))
                {
                    if (ChessBoard[newsq].piece != empty) goto TENS;
                    MoveTable[Depth].newpos1 = newsq;
                    if (loopbody(P))
                        return 1;

                    newsq = MoveTable[Depth].newpos1 + direction;
                }
TENS:
                continue;
	    }
            break;
        case pawn :
            /*  加x10意味著棋子向前走一格 */
	 MoveTable[Depth].newpos1 = MoveTable[Depth].oldpos + 0x10 ;
	     if ((MoveTable[Depth].newpos1<=0x98) && (MoveTable[Depth].newpos1>=0))
		  if (((MoveTable[Depth].newpos1>>4)<10) && ((MoveTable[Depth].newpos1 % 16)< 9)
		      && ((MoveTable[Depth].newpos1 | 0xff) >=0))
			if (ChessBoard[MoveTable[Depth].oldpos].color == red)
			  if (MoveTable[Depth].oldpos  >= 0x30 )
		           if (ChessBoard[MoveTable[Depth].newpos1].piece == empty)
			      if (loopbody(P))
				return 1;

           /*  加1意味著棋子向右走一格 */
	  MoveTable[Depth].newpos1 = MoveTable[Depth].oldpos + 1 ;
	       if ((MoveTable[Depth].newpos1<=0x98) && (MoveTable[Depth].newpos1>=0))
		  if (((MoveTable[Depth].newpos1>>4)<10) && ((MoveTable[Depth].newpos1 % 16)< 9)
		      && ((MoveTable[Depth].newpos1 | 0xff) >=0))
			if (ChessBoard[MoveTable[Depth].oldpos].color == red)
			  if (MoveTable[Depth].oldpos  >= 0x50 )
		 	      if (ChessBoard[MoveTable[Depth].newpos1].piece == empty)
				   if (loopbody(P))
			        	return 1;

          /*  減1意味著棋子向左走一格 */
	  MoveTable[Depth].newpos1 = MoveTable[Depth].oldpos - 1 ;
	     if ((MoveTable[Depth].newpos1<=0x98) && (MoveTable[Depth].newpos1>=0))
		if (((MoveTable[Depth].newpos1>>4)<10) && ((MoveTable[Depth].newpos1 % 16)< 9)
		    && ((MoveTable[Depth].newpos1 | 0xff) >=0))
		 if (ChessBoard[MoveTable[Depth].oldpos].color == red)
			if (MoveTable[Depth].oldpos  >= 0x50 )
			  if (ChessBoard[MoveTable[Depth].newpos1].piece == empty)
				 if (loopbody(P))
			        	return 1;


            /*  減x10意味著棋子向后走一格 */
	    MoveTable[Depth].newpos1 = MoveTable[Depth].oldpos - 0x10 ;
	      if ((MoveTable[Depth].newpos1<=0x98) && (MoveTable[Depth].newpos1>=0))
		  if (((MoveTable[Depth].newpos1>>4)<10) && ((MoveTable[Depth].newpos1 % 16)< 9)
		      && ((MoveTable[Depth].newpos1 | 0xff) >=0))
			if (ChessBoard[MoveTable[Depth].oldpos].color == black)
			  if (MoveTable[Depth].oldpos  <= 0x68 )
		           if (ChessBoard[MoveTable[Depth].newpos1].piece == empty)
			      if (loopbody(P))
				return 1;

              /*  加1意味著棋子向右走一格 */
	   MoveTable[Depth].newpos1 = MoveTable[Depth].oldpos + 1 ;
	      if ((MoveTable[Depth].newpos1<=0x98) && (MoveTable[Depth].newpos1>=0))
		  if (((MoveTable[Depth].newpos1>>4)<10) && ((MoveTable[Depth].newpos1 % 16)< 9)
		      && ((MoveTable[Depth].newpos1 | 0xff) >=0))
			if (ChessBoard[MoveTable[Depth].oldpos].color == black)
			  if (MoveTable[Depth].oldpos  <= 0x48 )
				if (ChessBoard[MoveTable[Depth].newpos1].piece == empty)
				 if (loopbody(P))
				return 1;
          /*  減1意味著棋子向左走一格 */
	   MoveTable[Depth].newpos1 = MoveTable[Depth].oldpos - 1 ;
	     if ((MoveTable[Depth].newpos1<=0x98) && (MoveTable[Depth].newpos1>=0))
		if (((MoveTable[Depth].newpos1>>4)<10) && ((MoveTable[Depth].newpos1 % 16)< 9)
		    && ((MoveTable[Depth].newpos1 | 0xff) >=0))
		  if (ChessBoard[MoveTable[Depth].oldpos].color == black)
			if (MoveTable[Depth].oldpos  <= 0x48 )
			  if (ChessBoard[MoveTable[Depth].newpos1].piece == empty)
			     if (loopbody(P))
				return 1;
	 } /*  switch  */
    return 0;
}



/*
 在分析之前生成下一個移動。
 按以下順序生成移動:
 主要變化
 吃子
 將軍
 常規移動
 */

static void searchmovgen(PARAMTYPE *P)
{
    INDEXTYPE index;

    /*  從主要變化中生成移動  */
    if (P->bestpath[Depth].movpiece != empty)
    {
        MoveTable[Depth] = P->bestpath[Depth];
        P->S->movgentype = mane;
        if (loopbody(P)) return;
    }
    if (MoveTable[Depth - 1].movpiece != empty)
        if (MoveTable[Depth - 1].movpiece != king)
        {
            P->S->movgentype = specialcap;
            if (capmovgen(MoveTable[Depth - 1].newpos1, P)) return;
        }
    P->S->movgentype = norml;
    for (index = 0; index <= PawnNumber[Opponent]; index++)
        if (PieceTable[Opponent][index].ipiece != empty)
            if (MoveTable[Depth-1].movpiece == empty ||
                    PieceTable[Opponent][index].isquare !=
                    MoveTable[Depth-1].newpos1)
                if (capmovgen(PieceTable[Opponent][index].isquare, P))
                    return;

    if (!P->S->capturesearch)                /*  非吃子  */
    {
        for (index = PawnNumber[Player]; index >= 0; index--)
	    if (PieceTable[Player][index].ipiece != empty)
                if (noncapmovgen(PieceTable[Player][index].isquare, P)) return;
    }
}


/*
 執行搜索
 入口:
     Player 指下一次移動的玩家
     MoveTable[Depth-1] 表包含上一次移動
     alpha, beta 指示搜索寬度
     ply 意指搜索深度
     inf 包含各種信息
 出口:
     Bestpath 包括最好的變化
     search 包括對玩家的估值
 */

static MAXTYPE search(MAXTYPE alpha, MAXTYPE beta, int ply, INFTYPE *inf,
    MOVETYPE *bestpath)
{
    SEARCHTYPE S;
    PARAMTYPE P;
    /*  如果ply <= 0且沒有將軍,執行吃子搜索  */
    S.capturesearch = ((ply <= 0) && !CheckTable[Depth-1]);
    if (S.capturesearch)  /*  初始化最大值  */
    {
        S.maxval = -inf->evaluation;
        if (alpha < S.maxval)
        {
            alpha = S.maxval;
            if (S.maxval >= beta) goto STOP;
        }
    }
    else
        S.maxval = -(LOSEVALUE - Depth*DEPTHFACTOR);
    P.alpha = alpha;
    P.beta = beta;
    P.ply = ply;
    P.inf = inf;
    P.bestpath = bestpath;
    P.S = &S;
    searchmovgen(&P);   /*  搜索循環  */
    if (SkipSearch) goto STOP;
    if (S.maxval == -(LOSEVALUE - Depth * DEPTHFACTOR))  /* 檢查無子可動局面*/
        if (!Attacks(Opponent, PieceTable[Player][0].isquare))
        {
            S.maxval = 0;
            goto STOP;
        }
STOP:
    return S.maxval;
}


/*
 *  開始搜索
 */

static MAXTYPE callsearch(MAXTYPE alpha, MAXTYPE beta)
{
    MAXTYPE maxval;

    startinf.principvar = (MainPath[0].movpiece != empty);
    LegalMoves = 0;
    maxval = search(alpha, beta, MaxDepth, &startinf, &MainPath[0]);
    if (!LegalMoves)
        MainEvaluat = maxval;
    return maxval;
}


/*
 *  檢查搜索時間是否已到
 */

inline short timeused(void)
{
    short tu = 0;

    if (Analysis && !SingleStep)
    {
        StopTime(&ChessClock);
        tu = (ChessClock.totaltime >= WantedTime);
    }
    return tu;
}


/*
 *  調整搜索
 */

void SearchMove(int maxlevel)
{
    MAXTYPE maxval;
    double calcpvtime;
    InitTime(&ChessClock);
    StartTime(&ChessClock);
    InitNode(&Nodes);
    SkipSearch = 0;
    RemoveKillMove();
    CalcPVTable();
    StopTime(&ChessClock);
    calcpvtime = ChessClock.totaltime;
    startinf.value = startinf.evaluation = -RootValue;
    MaxDepth = 0;
    MainPath[0] = ZeroMove;
    MainEvaluat = RootValue;
    alphawindow = MAXINT;
    ComputerThinking = true;
    do
    {
        /*  更改最大值變量  */
        if (MaxDepth <= 1) repeatevalu = MainEvaluat;
        alphawindow = min(alphawindow, MainEvaluat - 0x80);
        if (Level == matesearch)
	{
	    alphawindow = 0x6000;
            if (MaxDepth > 0) MaxDepth++;
        }
        MaxDepth++;
       	maxval = callsearch(alphawindow, 0x7F00);  /*  執行搜索  */
        if (maxval <= alphawindow && !SkipSearch && Level != matesearch &&
                LegalMoves > 0)
        {
            /*  如果局面值低于最大窗口值就重復搜索 */
            MainEvaluat = alphawindow;
	    maxval = callsearch(-0x7F00, alphawindow - TOLERANCE * 2);
            LegalMoves = 2;
	}
    } while (!SkipSearch && !timeused() && (MaxDepth < maxlevel) &&
	    (LegalMoves > 1) &&
	    (abs(MainEvaluat) < MATEVALUE - 24 * DEPTHFACTOR));
   ComputerThinking = false;
   StopTime(&ChessClock);

   if (Analysis)
      PrintNodes(&Nodes, (ChessClock.totaltime - calcpvtime));
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产在线播放一区二区三区| 亚洲激情图片小说视频| 美女在线一区二区| 91精品国产91综合久久蜜臀| 亚洲第一二三四区| 欧美日韩一区二区三区四区五区| 亚洲免费观看视频| 欧美视频一区二区三区四区| 日韩中文字幕91| 欧美电影免费观看完整版| 麻豆极品一区二区三区| 欧美精品一区二区三区久久久| 精品一区二区在线看| 久久久久国产一区二区三区四区| 国产成人免费视频| 亚洲天堂精品在线观看| 在线亚洲欧美专区二区| 日本成人在线一区| 久久久久久久久岛国免费| 91在线一区二区| 一区二区在线观看视频在线观看| 欧美精品在线一区二区三区| 美女一区二区三区在线观看| 国产午夜亚洲精品不卡| 色综合久久久久网| 日本免费新一区视频| 日本一区二区视频在线| 欧美色男人天堂| 国产精品一区二区在线看| 亚洲视频香蕉人妖| 日韩欧美一区二区久久婷婷| 成人精品视频.| 日av在线不卡| 亚洲另类中文字| 国产亚洲一区二区三区四区| 色诱视频网站一区| 激情亚洲综合在线| 亚洲影院在线观看| 国产午夜精品一区二区三区四区| 在线亚洲免费视频| 国产高清不卡二三区| 偷窥少妇高潮呻吟av久久免费 | av电影天堂一区二区在线观看| 亚洲欧美日韩久久| 久久只精品国产| 欧美福利电影网| av电影在线观看完整版一区二区| 麻豆精品一区二区综合av| 亚洲视频中文字幕| 国产欧美一区二区三区网站| 91精品国产色综合久久ai换脸| 成人一区二区三区中文字幕| 麻豆91免费看| 日韩国产在线一| 亚洲精品国产一区二区精华液| 欧美大白屁股肥臀xxxxxx| 色婷婷综合久久久中文一区二区| 国产精品一区三区| 秋霞电影网一区二区| 亚洲电影一级黄| 亚洲日本韩国一区| 国产精品久久久久久久久免费相片| 91精品国产91热久久久做人人 | 在线观看视频一区二区| 国产成人综合亚洲91猫咪| 日韩va欧美va亚洲va久久| 亚洲成人激情av| 亚洲妇熟xx妇色黄| 亚洲三级视频在线观看| 国产欧美中文在线| 久久精品这里都是精品| 日韩欧美视频一区| 日韩精品在线一区| 欧美一激情一区二区三区| 91传媒视频在线播放| 99精品视频中文字幕| 成人精品免费视频| 成人激情动漫在线观看| 91在线高清观看| 一本久久精品一区二区| 色噜噜狠狠成人网p站| 欧美体内she精视频| 欧洲一区在线电影| 欧美私模裸体表演在线观看| 欧美在线小视频| 欧美日本一区二区| 欧美成人高清电影在线| 欧美美女喷水视频| 日韩视频在线一区二区| 欧美一区二区视频在线观看2022| 欧美日韩视频一区二区| 欧美剧情电影在线观看完整版免费励志电影 | 91久久精品一区二区二区| 色素色在线综合| 欧美日韩在线播| 日韩欧美在线综合网| 久久影视一区二区| 国产精品久久久久久久久动漫| 亚洲欧美偷拍三级| 亚洲bt欧美bt精品| 青娱乐精品视频| 国产永久精品大片wwwapp| 成人视屏免费看| 色香蕉成人二区免费| 欧美日韩一区二区三区视频| 欧美一激情一区二区三区| 久久久久久久综合色一本| 国产精品进线69影院| 樱桃视频在线观看一区| 日韩国产欧美在线观看| 国产一区二区三区蝌蚪| 色94色欧美sute亚洲线路二 | 亚洲精品在线免费观看视频| 国产人妖乱国产精品人妖| 亚洲色图在线视频| 秋霞电影一区二区| 国产iv一区二区三区| 91黄色免费版| 精品处破学生在线二十三| 成人免费一区二区三区视频| 香蕉久久一区二区不卡无毒影院| 国产在线精品一区二区| 色婷婷综合视频在线观看| 精品区一区二区| 亚洲女同女同女同女同女同69| 日本 国产 欧美色综合| 色婷婷精品大在线视频| 精品裸体舞一区二区三区| |精品福利一区二区三区| 日本麻豆一区二区三区视频| 91一区二区三区在线观看| 欧美一区二区三区四区高清| 国产精品国产三级国产aⅴ无密码| 亚洲成人午夜影院| 91在线无精精品入口| 久久久亚洲国产美女国产盗摄 | 国产精品久久久久久亚洲伦| 免费在线一区观看| 色综合久久66| 国产精品国产三级国产普通话蜜臀| 久久国内精品自在自线400部| 成a人片国产精品| 久久久99精品免费观看| 男男视频亚洲欧美| 欧美日韩亚洲国产综合| 亚洲私人黄色宅男| 国产精品一区二区三区99| 日韩欧美www| 日韩中文字幕亚洲一区二区va在线| 一本大道久久a久久综合| 国产精品成人网| 成人精品小蝌蚪| 久久精品视频一区二区| 精品在线免费观看| 日韩一二三区不卡| 三级影片在线观看欧美日韩一区二区 | 色综合久久久久| 中文字幕精品综合| 国产福利电影一区二区三区| 久久综合视频网| 激情六月婷婷久久| 精品日韩欧美在线| 国产在线精品视频| 国产三级精品在线| 国产成人在线视频网站| 国产肉丝袜一区二区| 国产a视频精品免费观看| 欧美国产成人精品| 国产成人av电影在线| 国产欧美一区二区精品秋霞影院| 久久成人麻豆午夜电影| 精品理论电影在线| 麻豆91精品视频| 欧美va亚洲va国产综合| 精品一区二区成人精品| 精品久久久久久久一区二区蜜臀| 久久精品国产亚洲a| 久久众筹精品私拍模特| 成人免费高清在线| 亚洲色图.com| 欧美日韩激情一区| 全国精品久久少妇| 久久久久高清精品| 丁香婷婷综合激情五月色| 中文字幕在线视频一区| 美国欧美日韩国产在线播放| 91精品国产91久久综合桃花| 久久99精品网久久| 久久精品综合网| 99亚偷拍自图区亚洲| 亚洲精品中文在线观看| 在线精品视频免费观看| 午夜精品免费在线观看| 日韩欧美色综合网站| 粉嫩高潮美女一区二区三区| 亚洲私人影院在线观看| 91精品午夜视频| 丁香亚洲综合激情啪啪综合| 亚洲精品一二三区| 日韩精品一区国产麻豆|