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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? mantischessthink.cpp

?? 象棋的小游戲
?? CPP
?? 第 1 頁 / 共 2 頁
字號(hào):
/***************************************************************
  MantisChessThink.cpp : MantisChess 人工智能部分

  版權(quán)所有(C)  陳成濤

  這一程序是自由軟件,你可以遵照自由軟件基金會(huì)出版的GNU通用公共
  許可證條款來修改和重新發(fā)布這一程序。或者用許可證的第二版,或者
  (根據(jù)你的選擇)用任何更新的版本。

  發(fā)布這一程序的目的是希望它有用,但沒有任何擔(dān)保。甚至沒有適合特
  定目的的隱含的擔(dān)保。更詳細(xì)的情況請(qǐng)參閱GNU通用公共許可證。
  
  你應(yīng)該已經(jīng)和程序一起收到一份GNU通用公共許可證的副本。
  如果還沒有,寫信給:

  The Free Software Foundation,Inc,,675 Mass Ave, Cambridge,
  MAO2139,USA

  如果你在使用本軟件時(shí)有什么問題或建議,用以下地址可以與我取得聯(lián)
  系:

              http://thecct.51.net

  或發(fā)Email到:

              stove@eyou.com
              thecct@163.com

------------------------------------------------------------------
  MantisChessThink.cpp : MantisChess AI functions

  Copyright (C)  Chen Chengtao, China
  
  This program is free software; you can redistribute it and/or
  modify it under the terms of the GNU General Public License
  as published by the Free Software Foundation; either version 2
  of the License, or (at your option) any later version.
  
  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.
  
  You should have received a copy of the GNU General Public License
  along with this program; if not, write to the Free Software
  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  
  If you have any question about this software please visit my hompage:

              http://thecct.51.net

  or E_mail to:

              stove@eyou.com
              thecct@163.com

******************************************************************/

#include "StdAfx.h"
#include "MantisChessDef.h"
#include "MantisChessThink.h"
//-------------下面幾項(xiàng)可以調(diào)試智能模塊---------------------------
#define S_WIDTH 8
#define S_DEPTH 6

//                將  士  象  馬  車  炮   兵
const base[7]=	{300,400,300,600, 1000,600,300};	//平均價(jià)值
const range[7]=	{0  ,  0,  0, 20,  10,  0, 50};	//價(jià)值的變動(dòng)范圍

const int contactpercent1=20;	//防守的重視程度
const int contactpercent2=25;	//進(jìn)攻的重視程度

/******************************************************************
例:把馬設(shè)為平均價(jià)值200,變動(dòng)范圍±13%應(yīng)設(shè)base[3]=200,range[3]=13
*******************************************************************/
//-----------------------------------------------------------------

const int BV1[7]=//基本價(jià)值
{  
	base[0]-base[0]*range[0]/100,
	base[1]-base[1]*range[1]/100,
	base[3]-base[2]*range[2]/100,
	base[3]-base[3]*range[3]/100,
	base[4]-base[4]*range[4]/100,
	base[5]-base[5]*range[5]/100,
	base[6]-base[6]*range[6]/100
};
const int BV2[7]=//活躍度
{ 
	2*base[0]*range[0]/100/4,
	2*base[1]*range[1]/100/4,
	2*base[2]*range[2]/100/4,
	2*base[3]*range[3]/100/8,
	2*base[4]*range[4]/100/17,
	2*base[5]*range[5]/100/17,
	0,
};

const int BV3[5]=//兵在不同位置的價(jià)值附加
{
	0*2*base[6]*range[6]/100/4,
	1*2*base[6]*range[6]/100/4,
	2*2*base[6]*range[6]/100/4,
	3*2*base[6]*range[6]/100/4,
	4*2*base[6]*range[6]/100/4,
};

#define NORED(i,j) (SideOfMan[tmap[i][j]]!=0)
#define NOBLACK(i,j) (SideOfMan[tmap[i][j]]!=1)
#define NOMAN(i,j) (tmap[i][j]==32)


//兵卒在不同位置的價(jià)值,數(shù)字越大價(jià)值越高
const int ManBPlus[2][12][11]=
{
	{
		{  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
		{  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
		{  0,  1,  2,  3,  4,  4,  4,  3,  2,  1,  0},
		{  0,  1,  2,  3,  4,  4,  4,  3,  2,  1,  0},
		{  0,  1,  2,  3,  3,  3,  3,  3,  2,  1,  0},
		{  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0},
		{  0,  0,  0,  1,  0,  0,  0,  1,  0,  0,  0},
		{  0,  0,  0,  0,  0,  2,  0,  0,  0,  0,  0},
		{  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
		{  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
		{  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
		{  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0}
	},
	{
		{  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
		{  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
		{  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
		{  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
		{  0,  0,  0,  0,  0,  2,  0,  0,  0,  0,  0},
		{  0,  0,  0,  1,  0,  0,  0,  1,  0,  0,  0},
		{  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0},
		{  0,  1,  2,  3,  3,  3,  3,  3,  2,  1,  0},
		{  0,  1,  2,  3,  4,  4,  4,  3,  2,  1,  0},
		{  0,  1,  2,  3,  4,  4,  4,  3,  2,  1,  0},
		{  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
		{  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0}
	}
};

//-------------------------------------------
static void ContactV(int tmap[11][12],POINT tmanposition[32],int &tside,int activity[32],int contact[32][32]);


/******************************************************************
Mantis_QuickSort:對(duì)走法列表進(jìn)行快速排序

參數(shù):
A:				關(guān)鍵值
chessman:		待排序的棋子列表
targetpoint:	待排序的目標(biāo)點(diǎn)列表
low,high:		QuickSort上下限

返回值:			無
******************************************************************/
void Mantis_QuickSort(int A[],int chessman[],POINT targetpoint[],int low,int high)
{
	int pivot;
	int pivot_man;
	POINT pivot_point;
	int scanUp,scanDown;
	int mid,k;
	POINT point;
	if(high-low<=0)
	{
		return;
	}
	else
	{
		if(high-low==1)
		{
			if(A[high]>A[low])
			{
				k=A[high];
				A[high]=A[low];
				A[low]=k;
				k=chessman[high];
				chessman[high]=chessman[low];
				chessman[low]=k;
				point=targetpoint[high];
				targetpoint[high]=targetpoint[low];
				targetpoint[low]=point;
				return;
			}
		}
	}
	mid=(low +high)/2;
	pivot=A[mid];
	pivot_man=chessman[mid];
	pivot_point=targetpoint[mid];
	k=A[mid];
	A[mid]=A[low];
	A[low]=k;
	k=chessman[mid];
	chessman[mid]=chessman[low];
	chessman[low]=k;
	point=targetpoint[mid];
	targetpoint[mid]=targetpoint[low];
	targetpoint[low]=point;
	scanUp =low+1;
	scanDown = high;
	do{
		while(scanUp<=scanDown && A[scanUp]>=pivot)
			scanUp++;
		while(pivot>A[scanDown])
			scanDown--;
		if(scanUp<scanDown)
		{
			k=A[scanUp];
			A[scanUp]=A[scanDown];
			A[scanDown]=k;	
			k=chessman[scanUp];
			chessman[scanUp]=chessman[scanDown];
			chessman[scanDown]=k;
			point=targetpoint[scanUp];
			targetpoint[scanUp]=targetpoint[scanDown];
			targetpoint[scanDown]=point;
		}
	}while(scanUp<scanDown);
	A[low]=A[scanDown];
	A[scanDown]=pivot;
	chessman[low]=chessman[scanDown];
	chessman[scanDown]=pivot_man;
	targetpoint[low]=targetpoint[scanDown];
	targetpoint[scanDown]=pivot_point;

	if(low<scanDown-1)
		Mantis_QuickSort(A,chessman,targetpoint,low,scanDown-1);
	if(scanDown+1<high)
		Mantis_QuickSort(A,chessman,targetpoint,scanDown+1,high);
}

/******************************************************************
Value:			估值函數(shù)

參數(shù):
tmap:			各棋位狀態(tài)
tmanposition:	32棋子的坐標(biāo)
tside:			輪到哪一放走

返回值:			局面的價(jià)值
******************************************************************/
int Value(int tmap[11][12],POINT tmanposition[32],int &tside)
{
	static int k;
	static int ManExtValue[32];
	static int ManBaseValue[32];
	static int ManContact[32][32];
	static int BeAteCount[32];
	static BOOL OwnSee[32];
	memset(ManContact,0,sizeof(int)<<10);
	memset(ManBaseValue,0,sizeof(int)<<5);
	memset(ManExtValue,0,sizeof(int)<<5);
	memset(BeAteCount,0,sizeof(int)<<5);
	memset(OwnSee,0,sizeof(int)<<5);
	int maxvalue=0;
	int i,j;
	ContactV(tmap,tmanposition,tside,ManBaseValue,ManContact);
//己方將軍			
	for(i=FistOfSide[tside];i<=LastOfSide[tside];i++)
	{
		if(ManContact[i][FistOfSide[!tside]])
		{
			maxvalue=9700;
			return maxvalue;
		}
	}
	for(i=0;i<32;i++)
	{
		k=ManToType7[i];
		ManBaseValue[i]=BV1[k]+ManBaseValue[i]*BV2[k];
		switch(k)
		{	
		case 6:	ManBaseValue[i]+=BV3[ ManBPlus[SideOfMan[i]][tmanposition[i].y][tmanposition[i].x] ];
			break;
		}
	}
	for(i=0;i<32;i++)
	{
		for(j=0;j<32;j++)
		{
			if(ManContact[i][j])
			{
				if(SideOfMan[i]==SideOfMan[j])
				{
					BeAteCount[j]++;
					if(!OwnSee[j])
					{
						ManExtValue[i]+=ManBaseValue[j]*contactpercent1/100;//己方
						OwnSee[j]=TRUE;
					}
				}
				else
				{
					ManExtValue[i]+=ManBaseValue[j]*contactpercent2/100;//對(duì)方
					BeAteCount[j]--;
				}
			}
		}
	}
	for(i=FistOfSide[tside];i<=LastOfSide[tside];i++)
	{
		if(tmanposition[i].x)maxvalue+=ManBaseValue[i]+ManExtValue[i];			
	}
	static BOOL flag;
	flag=FALSE;k=32;		
	for(i=FistOfSide[!tside];i<=LastOfSide[!tside];i++)
	{
		if(tmanposition[i].x)maxvalue-=ManBaseValue[i]+ManExtValue[i];			
//對(duì)方將軍
		if(ManContact[i][FistOfSide[tside]])
		{
			flag=TRUE;
			k=i;
			break;
		}
	}
	if(flag&&BeAteCount[k]>=0)//被將,所將軍的棋子不能被吃掉
	{
		j=0;
		for(i=FistOfSide[tside];i<=LastOfSide[tside];i++)
		{
			if(BeAteCount[i]<0 && ManBaseValue[i]>j)
				j=ManBaseValue[i];
		}
		maxvalue -=j;
	}
	else
	{
		j=0;
		for(i=FistOfSide[!tside];i<=LastOfSide[!tside];i++)
		{
			if(BeAteCount[i]<0 && ManBaseValue[i]>j)
				j=ManBaseValue[i];
		}
		maxvalue +=j;
	}
	return maxvalue;
}

/******************************************************************
EnumList:		列出所有走法

參數(shù):
tmap:			各棋位狀態(tài)
tmanposition:	32棋子的坐標(biāo)
tside:			輪到哪一放走
chessman:		指向棋子列表的指針(存放結(jié)果)
move:			指向棋子所走到位置的指針,與chessman一起組成走法列表
				(存放結(jié)果)
count:			走法的總數(shù)(存放結(jié)果)

返回值:			“照相”返回TRUE,否則返回FALSE
******************************************************************/
BOOL EnumList(int tmap[11][12],POINT tmanposition[32],int &tside,int *chessman,POINT *move,int &count)
{
	#define ADD(man,tx,ty) {chessman[count]=man;move[count].x=tx;move[count].y=ty;count++;if(tmap[tx][ty]==FistOfSide[!tside])goto _NOKING;}
	static int i,j,n,x,y;
	static BOOL	flag;
	count=0;
	for(n=FistOfSide[tside];n<=LastOfSide[tside];n++)
	{
		x=tmanposition[n].x;
		if(!x)continue;
		y=tmanposition[n].y;
		switch(n)
		{
		case 0:
			if(tmanposition[0].x==tmanposition[16].x)		//將帥在同一列
			{
				flag=FALSE;
				for(j=tmanposition[16].y+1;j<tmanposition[0].y;j++)
				{
					if(tmap[x][j]!=32)
					{
						flag=TRUE;
						break;
					}
				}
				if (!flag)	
				{
					ADD(0,x,tmanposition[16].y);
				}
			}
			j=y+1;if(j<=10 && NORED(x,j))	ADD(0,x,j)
			j=y-1;if(j>=8  && NORED(x,j))	ADD(0,x,j)
			i=x+1;if(i<=6  && NORED(i,y))	ADD(0,i,y)
			i=x-1;if(i>=4  && NORED(i,y))	ADD(0,i,y)
			break;
		case 16:
			if(tmanposition[0].x==tmanposition[16].x)		//將帥在同一列
			{
				flag=FALSE;
				for(j=tmanposition[16].y+1;j<tmanposition[0].y;j++)
				{
					if(tmap[x][j]!=32)
					{
						flag=TRUE;
						break;
					}
				}
				if (!flag)	
				{
					ADD(16,x,tmanposition[0].y);
				}
			}
			j=y+1;if(j<=3 && NOBLACK(x,j))	ADD(16,x,j)
			j=y-1;if(j>=1  && NOBLACK(x,j))	ADD(16,x,j)
			i=x+1;if(i<=6  && NOBLACK(i,y))	ADD(16,i,y)
			i=x-1;if(i>=4  && NOBLACK(i,y))	ADD(16,i,y)
			break;
		case 1:
		case 2:
			i=x+1;j=y+1;if(i<=6 && j<=10 && NORED(i,j))	ADD(n,i,j)
			i=x+1;j=y-1;if(i<=6 && j>=8  && NORED(i,j))	ADD(n,i,j)
			i=x-1;j=y+1;if(i>=4 && j<=10 && NORED(i,j))	ADD(n,i,j)
			i=x-1;j=y-1;if(i>=4 && j>=8  && NORED(i,j))	ADD(n,i,j)
			break;
		case 17:
		case 18:
			i=x+1;j=y+1;if(i<=6 && j<=3 && NOBLACK(i,j))	ADD(n,i,j)
			i=x+1;j=y-1;if(i<=6 && j>=1 && NOBLACK(i,j))	ADD(n,i,j)
			i=x-1;j=y+1;if(i>=4 && j<=3	&& NOBLACK(i,j))	ADD(n,i,j)
			i=x-1;j=y-1;if(i>=4 && j>=1 && NOBLACK(i,j))	ADD(n,i,j)
			break;
		case 3:
		case 4:
			i=x+2;j=y+2;if(i<=9 && j<=10   && NORED(i,j))	if(NOMAN(x+1,y+1))	ADD(n,i,j)
			i=x+2;j=y-2;if(i<=9 && j>=6    && NORED(i,j))	if(NOMAN(x+1,y-1))	ADD(n,i,j)
			i=x-2;j=y+2;if(i>=1 && j<=10   && NORED(i,j))	if(NOMAN(x-1,y+1))	ADD(n,i,j)
			i=x-2;j=y-2;if(i>=1 && j>=6    && NORED(i,j))	if(NOMAN(x-1,y-1))	ADD(n,i,j)
			break;
		case 19:
		case 20:
			i=x+2;j=y+2;if(i<=9 && j<=5  && NOBLACK(i,j))	if(NOMAN(x+1,y+1))	ADD(n,i,j)
			i=x+2;j=y-2;if(i<=9 && j>=1  && NOBLACK(i,j))	if(NOMAN(x+1,y-1))	ADD(n,i,j)
			i=x-2;j=y+2;if(i>=1 && j<=5  && NOBLACK(i,j))	if(NOMAN(x-1,y+1))	ADD(n,i,j)
			i=x-2;j=y-2;if(i>=1 && j>=1  && NOBLACK(i,j))	if(NOMAN(x-1,y-1))	ADD(n,i,j)
			break;
		case 5:
		case 6:
			i=x+1;
			if(NOMAN(i,y))
			{
				i=x+2;j=y+1;if(i<=9 && j<=10 && NORED(i,j))	ADD(n,i,j)
				i=x+2;j=y-1;if(i<=9 && j>=1  && NORED(i,j))	ADD(n,i,j)
			}
			i=x-1;
			if(NOMAN(i,y))
			{
				i=x-2;j=y+1;if(i>=1 && j<=10 && NORED(i,j))	ADD(n,i,j)
				i=x-2;j=y-1;if(i>=1 && j>=1  && NORED(i,j))	ADD(n,i,j)
			}
			j=y+1;
			if(NOMAN(x,j))
			{
				i=x+1;j=y+2;if(i<=9 && j<=10 && NORED(i,j))	ADD(n,i,j)
				i=x-1;j=y+2;if(i>=1 && j<=10 && NORED(i,j))	ADD(n,i,j)
			}
			j=y-1;
			if(NOMAN(x,j))
			{
				i=x+1;j=y-2;if(i<=9 && j>=1 && NORED(i,j))	ADD(n,i,j)
				i=x-1;j=y-2;if(i>=1 && j>=1 && NORED(i,j))	ADD(n,i,j)
			}
			break;
		case 21:
		case 22:
			i=x+1;
			if(NOMAN(i,y))
			{
				i=x+2;j=y+1;if(i<=9 && j<=10 && NOBLACK(i,j))	ADD(n,i,j)
				i=x+2;j=y-1;if(i<=9 && j>=1  && NOBLACK(i,j))	ADD(n,i,j)
			}
			i=x-1;
			if(NOMAN(i,y))
			{
				i=x-2;j=y+1;if(i>=1 && j<=10 && NOBLACK(i,j))	ADD(n,i,j)
				i=x-2;j=y-1;if(i>=1 && j>=1  && NOBLACK(i,j))	ADD(n,i,j)
			}
			j=y+1;
			if(NOMAN(x,j))
			{
				i=x+1;j=y+2;if(i<=9 && j<=10 && NOBLACK(i,j))	ADD(n,i,j)
				i=x-1;j=y+2;if(i>=1 && j<=10 && NOBLACK(i,j))	ADD(n,i,j)
			}
			j=y-1;
			if(NOMAN(x,j))
			{
				i=x+1;j=y-2;if(i<=9 && j>=1 && NOBLACK(i,j))	ADD(n,i,j)
				i=x-1;j=y-2;if(i>=1 && j>=1 && NOBLACK(i,j))	ADD(n,i,j)
			}
			break;

		case 7:
		case 8:
				i=x+1;
				while(i<=9)
				{
					if (NOMAN(i,y))	ADD(n,i,y)
					else
					{
						if(NORED(i,y))	ADD(n,i,y)
						break;
					}
					i++;
				}
				i=x-1;
				while(i>=1)
				{
					if (NOMAN(i,y))	ADD(n,i,y)
					else
					{
						if(NORED(i,y))	ADD(n,i,y)
						break;
					}
					i--;
				}
				j=y+1;
				while(j<=10)
				{
					if (NOMAN(x,j))	ADD(n,x,j)
					else
					{
						if(NORED(x,j))	ADD(n,x,j)
						break;
					}
					j++;
				}
				j=y-1;
				while(j>=1)
				{
					if (NOMAN(x,j))	ADD(n,x,j)
					else
					{
						if(NORED(x,j))	ADD(n,x,j)
						break;
					}
					j--;
				}
				break;
		case 23:
		case 24:
				i=x+1;
				while(i<=9)
				{
					if (NOMAN(i,y))	ADD(n,i,y)
					else
					{
						if(NOBLACK(i,y))	ADD(n,i,y)
						break;
					}
					i++;
				}
				i=x-1;
				while(i>=1)
				{
					if (NOMAN(i,y))	ADD(n,i,y)
					else
					{
						if(NOBLACK(i,y))	ADD(n,i,y)
						break;
					}
					i--;
				}
				j=y+1;
				while(j<=10)
				{
					if (NOMAN(x,j))	ADD(n,x,j)					
					else
					{
						if(NOBLACK(x,j))	ADD(n,x,j)
						break;
					}
					j++;
				}
				j=y-1;
				while(j>=1)
				{
					if (NOMAN(x,j))	ADD(n,x,j)
					else
					{
						if(NOBLACK(x,j))	ADD(n,x,j)
						break;
					}
					j--;
				}
				break;
		case 9:
		case 10:
			i=x+1;flag=FALSE;
			while(i<=9)
			{
				if(NOMAN(i,y))
				{
					if(!flag)	ADD(n,i,y)
				}
				else
				{
					if(!flag)flag=TRUE;
					else 
					{
						if(NORED(i,y))	ADD(n,i,y)
						break;
					}
				}
				i++;
			}

			i=x-1;flag=FALSE;
			while(i>=1)
			{
				if(NOMAN(i,y)) 
				{
					if(!flag)	ADD(n,i,y)
				}
				else
				{
					if(!flag)flag=TRUE;
					else 
					{
						if(NORED(i,y))	ADD(n,i,y)
						break;
					}
				}
				i--;
			}

			j=y+1;flag=FALSE;
			while(j<=10)
			{
				if(NOMAN(x,j)) 
				{
					if(!flag)	ADD(n,x,j)
				}
				else
				{
					if(!flag)flag=TRUE;
					else 
					{
						if(NORED(x,j))	ADD(n,x,j)
						break;
					}
				}
				j++;
			}

			j=y-1;flag=FALSE;
			while(j>=1)
			{
				if(NOMAN(x,j)) 
				{
					if(!flag)	ADD(n,x,j)
				}
				else
				{
					if(!flag)flag=TRUE;
					else 
					{
						if(NORED(x,j))	ADD(n,x,j)
						break;
					}
				}
				j--;
			}
			break;

		case 25:
		case 26:
			i=x+1;flag=FALSE;
			while(i<=9)
			{
				if(NOMAN(i,y))
				{
					if(!flag)	ADD(n,i,y)
				}
				else
				{
					if(!flag)flag=TRUE;
					else
					{
						if(NOBLACK(i,y))	ADD(n,i,y)
						break;
					}
				}
				i++;
			}

			i=x-1;flag=FALSE;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人午夜又粗又硬又大| 婷婷丁香激情综合| 亚洲a一区二区| 5566中文字幕一区二区电影| 亚洲福利视频三区| 在线电影国产精品| 久久精品国内一区二区三区| 日韩网站在线看片你懂的| 大白屁股一区二区视频| 亚洲欧洲一区二区三区| 99国产精品久| 久久欧美中文字幕| 夜色激情一区二区| 99国产一区二区三精品乱码| 一区二区不卡在线视频 午夜欧美不卡在| 欧美性极品少妇| 91精品国产麻豆国产自产在线| 日韩精品乱码免费| 一区二区三区在线免费| 国产精品中文字幕欧美| 91麻豆精品国产91久久久久久 | 欧美www视频| 亚洲免费av高清| 成人国产在线观看| 久久久精品国产免费观看同学| 午夜精品123| 欧美色偷偷大香| 成人免费高清视频在线观看| 亚洲激情在线播放| 国产精品国产a级| 欧美tickle裸体挠脚心vk| 久草在线在线精品观看| 亚洲精品第1页| 中文字幕一区二区三区不卡| 精品国产三级电影在线观看| 久久综合久久综合亚洲| 天堂午夜影视日韩欧美一区二区| 精品一区二区三区在线视频| 精品视频在线视频| 亚洲人成网站影音先锋播放| 91香蕉视频污| 夜夜精品视频一区二区| 91成人网在线| 日韩专区在线视频| 日韩三级高清在线| 精品一区二区日韩| 国产日韩欧美精品综合| 成人av电影在线| 亚洲线精品一区二区三区| 欧美日韩免费一区二区三区| 日韩精品每日更新| 国产丝袜美腿一区二区三区| 成人激情免费视频| 一区二区欧美国产| 911精品国产一区二区在线| 麻豆精品视频在线| 国产精品色婷婷久久58| 欧美影视一区在线| 久久99精品一区二区三区三区| 国产精品自拍一区| 成人精品鲁一区一区二区| 日韩一区二区免费在线电影| 日韩毛片视频在线看| 亚洲第一成人在线| 成人国产一区二区三区精品| 欧美色综合影院| 久久只精品国产| 日韩国产精品久久久| 成人av电影免费在线播放| 日韩欧美成人一区二区| 日韩欧美国产一区在线观看| 中文字幕在线视频一区| 在线观看亚洲成人| 国产乱码精品一区二区三区av| 国产精品免费观看视频| 在线成人av影院| 最新久久zyz资源站| 午夜视频在线观看一区二区| 国产福利不卡视频| 精品国产1区二区| 久久国产综合精品| 精品国产乱码久久久久久图片 | 久久er99精品| 午夜精品久久一牛影视| 亚洲尤物在线视频观看| 污片在线观看一区二区| 亚洲精品第1页| 国内精品久久久久影院色 | 欧美日韩另类国产亚洲欧美一级| 精品免费一区二区三区| 日韩福利视频网| 91视频观看免费| 一区二区三区国产精华| 在线视频亚洲一区| 天天综合色天天| 日韩欧美国产系列| 国产精品综合av一区二区国产馆| 久久久高清一区二区三区| 成人丝袜视频网| 国产精品国产成人国产三级| 国产精品国产a| 亚洲在线视频免费观看| 久久精品国产秦先生| 国产亚洲欧美在线| 精品粉嫩超白一线天av| 日韩三级中文字幕| 国产精品久久福利| 午夜精品成人在线| 久久综合久久综合亚洲| 欧美理论片在线| 亚洲一区二区五区| 欧美日韩精品电影| 国产一区二区免费看| 最新日韩av在线| 欧美va亚洲va香蕉在线| 成人看片黄a免费看在线| 五月综合激情网| 国产精品私人影院| 日韩午夜小视频| 91亚洲精品久久久蜜桃网站| 五月综合激情日本mⅴ| 国产精品久久久久久久岛一牛影视 | 午夜视频在线观看一区二区 | 精品国产99国产精品| 色综合天天综合| 美脚の诱脚舐め脚责91| 亚洲精品国产品国语在线app| 成人影视亚洲图片在线| 国产亚洲欧洲997久久综合| 国产精品123| 美女视频黄a大片欧美| 91久久香蕉国产日韩欧美9色| 中文字幕不卡在线观看| 成人午夜激情在线| 中文一区二区在线观看| 成人av在线电影| 亚洲自拍偷拍av| 欧美xingq一区二区| 看电视剧不卡顿的网站| 欧美国产精品一区二区| 欧美日韩国产美女| a4yy欧美一区二区三区| 国产精品一区二区黑丝| 日韩高清欧美激情| 亚洲激情自拍视频| 国产精品美女久久福利网站| 精品久久久久久久久久久院品网| 一区二区三区在线免费播放| 99国产精品久久久久久久久久久| 国产精品入口麻豆九色| 欧美日韩一区二区三区不卡| 国产一区福利在线| 久久国产剧场电影| 一区二区三区在线视频观看58| 亚洲三级免费观看| 中文字幕国产一区| 51精品久久久久久久蜜臀| 国产精品一区不卡| 捆绑变态av一区二区三区| 亚洲图片欧美一区| 亚洲色图制服诱惑 | 91网上在线视频| 久久成人免费电影| 在线精品视频小说1| 欧美激情一区二区| 国产成人99久久亚洲综合精品| 亚洲图片欧美激情| 韩国中文字幕2020精品| 久久精品日产第一区二区三区高清版| 一区二区三区欧美| 欧美高清视频www夜色资源网| 欧美老肥妇做.爰bbww| 777亚洲妇女| 欧美一级一级性生活免费录像| 欧美一级精品大片| 久久综合九色综合欧美98| 国产欧美中文在线| 国产精品久久福利| 亚洲国产一区二区a毛片| 奇米四色…亚洲| 国产一区二区毛片| 国产精品天天摸av网| 国产精品久久毛片| 麻豆国产精品一区二区三区| 麻豆精品一区二区三区| 国v精品久久久网| 在线一区二区三区| 91精品福利在线一区二区三区 | 成人黄色片在线观看| 中文字幕在线观看不卡视频| 日韩欧美在线观看一区二区三区| 久久久久久久久蜜桃| 亚洲欧洲精品天堂一级| 亚洲r级在线视频| 成人综合婷婷国产精品久久免费| 在线观看一区二区精品视频| 精品国免费一区二区三区| 亚洲色图欧美偷拍| 美女脱光内衣内裤视频久久网站| av一本久道久久综合久久鬼色|