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

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

?? translation.java

?? 一個網絡對弈的中國象棋程序 操作: 1、Setting,選擇對戰方式。如果選擇“網絡對戰”
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/*
 * 創建日期 2005-3-18
 *
 * 更改所生成文件模板為
 * 窗口 > 首選項 > Java > 代碼生成 > 代碼和注釋
 */
package org.acerge.main;

import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;

import org.acerge.engine.*;
import org.acerge.pieces.*;



public class Translation {
	private int firstBout = 1;
	private String gameEvent = "在家自戰賽";
	private String gameRound ="1";
	private String gameDate;
	private String gameSite = "Home";
	private String redTeam = "Wild Wolf";
	private String redName = "WolfNo.1";
	private String blackTeam = "SuperComputers";
	private String blackName = "DeepGreen";
	private String result = "?-?";
	private String fenStr = "rnbakabnr/9/1c5c1/p1p1p1p1p/9/9/P1P1P1P1P/1C5C1/9/RNBAKABNR w - - 0 1";
	private String newLine = "\n";
	private ArrayList emoveStrList;
	private ArrayList cmoveStrList;
	
	private ArrayList hisEmoveStrList=new ArrayList(); //save for history s
	private ArrayList hisCmoveStrList=new ArrayList();
	private ArrayList hisMoveStructList=new ArrayList();
	//format: EMoveStr:C2+5     C+.5    N3-4
	//format: CMoveStr::炮2進五 前炮平5  馬三退四
	private ArrayList moveStructList;
	//private String[] qzEName={"K","A","B","N","R","C","P"};
	private String[] qzCName={"帥","仕","相","馬","車","炮","兵","將","士","象","馬","車","炮","卒"};
	private String[] bCLocation={"0","1","2","3","4","5","6","7","8","9"};
	private String[] rCLocation={"  ","一","二","三","四","五","六","七","八","九"};
	//private boolean boardReversed;
	public Translation(){
		Calendar c = Calendar.getInstance();
		gameDate = c.get(Calendar.YEAR)+ "-"+c.get(Calendar.MONTH)+"-"+c.get(Calendar.DATE);
		emoveStrList = new ArrayList();
		cmoveStrList = new ArrayList();
		moveStructList = new ArrayList();
	}
	public char getEName(char cName){
		switch (cName){
			case '帥':
			case '將':
				return 'K';
			case '仕':
			case '士':
				return 'A';
			case '相':
			case '象':
				return 'B';
			case '馬':
				return 'N';
			case '車':
				return 'R';
			case '炮':
				return 'C';
			default:
				return 'P';
		}
	}
	public char getELoc(char cLoc){
		switch(cLoc){
			case '1':
			case '一':
				return '1';
			case '2':
			case '二':
				return '2';
			case '3':
			case '三':
				return '3';
			case '4':
			case '四':
				return '4';
			case '5':
			case '五':
				return '5';
			case '6':
			case '六':
				return '6';
			case '7':
			case '七':
				return '7';
			case '8':
			case '八':
				return '8';
			default:
				return '9';
		}
	}
	public char getEDir(char cDir){
		switch (cDir){
			case '進': return '+';
			case '退': return '-';
			default :return '.';//平
		}
	}
	public String cStrToEStr(String CStr){
		char cc1,cc2,cc3,cc4;
		char ec1,ec2,ec3,ec4;
		String EStr;
		cc1 = CStr.charAt(0);cc2=CStr.charAt(1);
		cc3=CStr.charAt(2);cc4=CStr.charAt(3);
		if (cc1=='前'){
			ec2 = '+';
			ec1 = getEName(cc2);
		}else if (cc1=='后'){
			ec2 = '-';
			ec1 = getEName(cc2);
		}else{
			ec1 = getEName(cc1);
			ec2 = getELoc(cc2);
		}
		ec3 = getEDir(cc3);
		ec4 = getELoc(cc4);
		return ""+ec1+ec2+ec3+ec4;
	}
	public void setFenStr(String fstr){
		fenStr=fstr;
	}
	public void addMoveInfo(final BitBoard qzBoard, final Qizi qz,int dstX,int dstY){
		//qzBoard是qz的位棋盤(移動前的狀態)
		int pieceType = qz.getPieceType();
		char pieceName = qz.getPieceName();
		if (pieceName>='a') pieceName = (char) (pieceName + 'A' - 'a');
		char c1,c2,c3,c4;
		String cmoveStr="",emoveStr="";
		int srcX,srcY,srcX1,srcY1,srcX2,srcY2;
		int hi = BitBoard.MSB(qzBoard);
		int low = BitBoard.LSB(qzBoard);
		srcX=qz.getCoordinateX();
		srcY=qz.getCoordinateY();
		
		srcX1=ActiveBoard.FILE[low];
		srcY1=ActiveBoard.RANK[low];
		srcX2=ActiveBoard.FILE[hi];
		srcY2=ActiveBoard.RANK[hi];
		
		//-----------------------------------------------------------------------		
		int[] pawns={-1,-1,-1,-1,-1};
		if (pieceType == 6 || pieceType == 13){
			int k=0;
			for(int i=low;i<=hi;i++){
				if ((qzBoard.opAnd(PreMoveNodesGen.BitMask[i])).notZero()){
					pawns[k]=i;
					k++;
				}
			}
			boolean found=false;
			for (int i=0;i<k && !found;i++){
				if(ActiveBoard.FILE[pawns[i]]==srcX){
					srcX1 = ActiveBoard.FILE[pawns[i]];
					srcX2 = ActiveBoard.FILE[pawns[i]];
					srcY1 = ActiveBoard.RANK[pawns[i]];
					srcY2 = ActiveBoard.RANK[pawns[i]];
					for(int j=i+1;j<k;j++){
						if(ActiveBoard.FILE[pawns[j]]==srcX){
							srcX2 = ActiveBoard.FILE[pawns[j]];
							srcY2 = ActiveBoard.RANK[pawns[j]];
							found = true;
							break;
						}
					}
				}
				if(found) break;
			}
		}
		//-----------------------------------------------------------------------

		c1=pieceName;
		
		if(srcX1==srcX2 && srcY2!=srcY1 && pieceType!=1 && pieceType!=2
			&& pieceType!=8 && pieceType!=9){//士象無前后
			if(srcY==srcY1 && pieceType<7 || srcY==srcY2 && pieceType>=7){
				c2 = '-';
			}else{
				c2 = '+';
			}
		}else{
			//if (pieceType<7 && !boardReversed || pieceType>=7 && boardReversed){
			if (pieceType<7){
				c2 = (char) ('0' + 9 - srcX);
			}else{
				c2 = (char) ('0' + 1 + srcX);
			}
		}

		if(srcY==dstY) {
			c3='.';
			if (pieceType<7){
				c4=(char)('0' + 9 - dstX);
			}else{
				c4=(char)('0' + dstX + 1);
			}
		}else{
			if(dstX==srcX){//直線
				if(srcY<dstY && pieceType<7 || srcY>dstY && pieceType>=7){
					c3='+';
				}else{
					c3='-';
				}
				c4 = (char) ('0'+ Math.abs(dstY-srcY));
			}else{
				if(srcY<dstY && pieceType<7 || srcY>dstY && pieceType>=7){
					c3 = '+';
				}else{
					c3 = '-';
				}
				if (pieceType<7){
					c4 = (char) ('0' + 9 - dstX);
				}else{
					c4 = (char) ('0' + dstX + 1);
				}
			}
		}
		emoveStr = ""+c1+c2+c3+c4;
		// begin tanslation to Chinese 
		if (c2=='+') {
			cmoveStr="前"+qzCName[pieceType];
		}else if(c2=='-'){
			cmoveStr="后"+qzCName[pieceType];
		}else{
			cmoveStr=qzCName[pieceType]+(pieceType<7? rCLocation[c2-'0']:bCLocation[c2-'0']);
		}
		if (c3=='+'){
			cmoveStr+="進";
		}else if (c3=='-'){
			cmoveStr+="退";
		}else{
			cmoveStr+="平";
		}
		cmoveStr+=(pieceType<7? rCLocation[c4-'0']:bCLocation[c4-'0']);
		clearHis();
		emoveStrList.add(emoveStr);
		cmoveStrList.add(cmoveStr);
		moveStructList.add(new MoveNode(srcX*10+srcY,dstX*10+dstY));
	}
	public void clearHis(){
		if(hisMoveStructList.size()==0) return;
		hisEmoveStrList = new ArrayList();
		hisCmoveStrList = new ArrayList();
		hisMoveStructList = new ArrayList();
	}
	
	public void clearCurrent(){
		if(moveStructList.size()==0) return;
		emoveStrList = new ArrayList();
		cmoveStrList = new ArrayList();
		moveStructList = new ArrayList();
	}

	public String getEMoveStr(){
		if (emoveStrList.size()>0){
			return (String) emoveStrList.get(emoveStrList.size()-1);
		}
		return null;
	}
	
	public String getEMoveStr(int index){
		if (index<emoveStrList.size()){
			return (String) emoveStrList.get(index);
		}
		return null;
	}
	public String getHisEMoveStr(){
		if (hisEmoveStrList.size()>0){
			return (String) hisEmoveStrList.get(hisEmoveStrList.size()-1);
		}
		return null;		
	}
	public String getCMoveStr(){
		if(cmoveStrList.size()>0){
			return (String) cmoveStrList.get(cmoveStrList.size()-1);
		}
		return null;
	}

	public String getHisCMoveStr(){
		if(hisCmoveStrList.size()>0){
			return (String) hisCmoveStrList.get(hisCmoveStrList.size()-1);
		}
		return null;
	}
	public void moveHisToCurrent(){
		if(hisEmoveStrList.size()>0){
			emoveStrList.add(hisEmoveStrList.remove(hisEmoveStrList.size()-1));
			cmoveStrList.add(hisCmoveStrList.remove(hisCmoveStrList.size()-1));
			moveStructList.add(hisMoveStructList.remove(hisMoveStructList.size()-1));
		}
	}
	public void moveCurrentToHis(){
		if(emoveStrList.size()>0){
			hisEmoveStrList.add(emoveStrList.remove(emoveStrList.size()-1));
			hisCmoveStrList.add(cmoveStrList.remove(cmoveStrList.size()-1));
			hisMoveStructList.add(moveStructList.remove(moveStructList.size()-1));
		}
	}

	public String getCMoveStr(int index){
		if (index<moveStructList.size()){
			return (String) cmoveStrList.get(index);
		}
		return null;
	}
	public String[] getECMoveStr(){
		String[] tmpStr=new String[2];
		tmpStr[0]=getEMoveStr();
		tmpStr[1]=getCMoveStr();
		if(tmpStr[0]==null) return null;
		return tmpStr;
	}
	public String[] getECMoveStr(int index){
		if (index<emoveStrList.size()){
			String[] tmpStr=new String[2];
			tmpStr[0]=getEMoveStr(index);
			tmpStr[1]=getCMoveStr(index);
			return tmpStr;
		}
		return null;
	}

	public MoveNode getMoveStruct(){
		if (moveStructList.size()>0){
			return (MoveNode)moveStructList.get(moveStructList.size()-1);
		}
		return null;
	}
	public MoveNode getHisMoveStruct(){
		if (hisMoveStructList.size()>0){
			return (MoveNode)hisMoveStructList.get(hisMoveStructList.size()-1);
		}
		return null;
	}
	public MoveNode getMoveStruct(int index){
		if (index<moveStructList.size()){
			return (MoveNode)moveStructList.get(index);
		}
		return null;
	}
	/**
	 *save and read procedure 
	 *file Format:
	 *[Game "Chinese Chess"]
	 *[Event "在家自戰賽"]
	 *[Round "1"]
	 *[Date ""]
	 *[Site "Home"]
	 *[RedTeam "Computer"]
	 *[Red "Engine"]
	 *[BlackTeam "Home"]
	 *[Black "GB"]
	 *[FenStr "rnbakabnr/9/1c5c1/p1p1p1p1p/9/9/P1P1P1P1P/1C5C1/9/RNBAKABNR w - - 0 1"]	
	 *[Result "?-?"]
	 */
	public void saveToFile(File f) throws IOException{
		BufferedWriter outFile = new BufferedWriter(new FileWriter(f));
		String sign = "\"";
		// write header
		outFile.write("[Event " + sign + gameEvent + sign + "]" + newLine);
		outFile.write("[Round " + sign + gameRound + sign + "]" + newLine);
		outFile.write("[Date " + sign + gameDate + sign + "]" + newLine);
		outFile.write("[Site " + sign + gameSite + sign + "]" + newLine);
		outFile.write("[RedTeam " + sign + redTeam + sign + "]" + newLine);
		outFile.write("[Red " + sign + redName + sign + "]" + newLine);
		outFile.write("[BlackTeem " + sign + blackTeam + sign + "]" + newLine);
		outFile.write("[Black " + sign + blackName + sign + "]" + newLine);
		outFile.write("[FenStr " + sign + fenStr + sign + "]" + newLine);
		outFile.write("[Result " + sign + result + sign + "]" + newLine);
		
		//System.out.println("炮2平五".substring(1,2));//2
		int i,currBout=firstBout;
		String cmoveStr = getCMoveStr(0);
		String boutStr = ""+firstBout+".";
		if (boutStr.length()<3) boutStr = " " + boutStr;
		for (i=0;i<bCLocation.length;i++){
			if (cmoveStr.substring(1,2).equals(bCLocation[i])){
				outFile.write(boutStr + "        " + "  " + cmoveStr + newLine);
				currBout++;
				break;
			}
		}
		
		//System.out.println(bCLocation);				
		for (i=currBout-firstBout;;){			
			cmoveStr = getCMoveStr(i);
			if (cmoveStr != null){
				boutStr = ""+currBout+".";
				if (boutStr.length()<3) boutStr = " " + boutStr;
				outFile.write(boutStr+cmoveStr);
				i++;currBout++;
			}else{
				break;
			}
			cmoveStr = getCMoveStr(i);
			if (cmoveStr != null){
				outFile.write("  " + cmoveStr + newLine);
				i++;
			}else{
				break;
			}
		}
		outFile.flush();
		outFile.close();
		//begin writeBody;
		
	}
	public boolean loadFromFile(File f) throws IOException{
		BufferedReader inFile = new BufferedReader(new FileReader(f));
		String lineStr = "";
		int i,j;
		clearCurrent();
		clearHis();
		while ((lineStr=inFile.readLine())!=null){
			i = lineStr.indexOf("\"");
			j = lineStr.indexOf("\"",i+1);
			i = i + 1;
			if (lineStr.indexOf("Game")>=0){	 
			}else if((lineStr.indexOf("Event")>=0)){
				gameEvent = lineStr.substring(i, j);
			}else if((lineStr.indexOf("Round")>=0)){
				gameRound = lineStr.substring(i, j);
			}else if((lineStr.indexOf("Date")>=0)){
				gameDate = lineStr.substring(i, j);
			}else if((lineStr.indexOf("Site")>=0)){
				gameSite = lineStr.substring(i, j);
			}else if((lineStr.indexOf("RedTeam")>=0)){
				redTeam = lineStr.substring(i, j);
			}else if((lineStr.indexOf("Red")>=0)){
				redName = lineStr.substring(i, j);
			}else if((lineStr.indexOf("BlackTeam")>=0)){
				blackTeam = lineStr.substring(i, j);
			}else if((lineStr.indexOf("Black")>=0)){
				blackName = lineStr.substring(i, j);
			}else if((lineStr.indexOf("FenStr")>=0)){
				fenStr = lineStr.substring(i, j);
			}else if((lineStr.indexOf("Result")>=0)){
				result = lineStr.substring(i, j);
				break;				
			}else {
				inFile.close();
				return false;
			}
		}
		//add to hiscmoveStrList
		while ((lineStr=inFile.readLine())!=null){
			int index0,index1;
			String tmpStr;
			int start = 0;
			while((index0 = getQiziIndex(lineStr,start))>=0){
				tmpStr = lineStr.substring(index0,index0 + 4);
				hisCmoveStrList.add(0,tmpStr);
				start = index0 + 4;
			}
		}
		
		//translate and add to hisemoveStrList
		for (i=0;i<hisCmoveStrList.size();i++){
			hisEmoveStrList.add(0,cStrToEStr((String)hisCmoveStrList.get(i)));
		}
		//generate moveStruct
		ActiveBoard position = new ActiveBoard();
		position.loadFen(fenStr);
		for (i=0;i<hisEmoveStrList.size();i++){
			String tmpStr = (String) hisEmoveStrList.get(i);
			MoveNode move = getMoveStruct(position, tmpStr);
			if (move!=null){
				try{
					position.movePiece(move);
				}catch(ArrayIndexOutOfBoundsException e){
					e.printStackTrace();
					break;
				}
				hisMoveStructList.add(0,move);
			}else{
				break;
			}
		}
		//top = moveStructList.size();
		inFile.close();
		if (hisMoveStructList.size()>0)
			return true;
		else 
			return false;
	}
	public int getQiziIndex(String lineStr,int from){
		int[] index = new int[13];
		index[0] = lineStr.indexOf("車",from);
		index[1] = lineStr.indexOf("馬",from);
		index[2] = lineStr.indexOf("炮",from);
		index[3] = lineStr.indexOf("兵",from);
		index[4] = lineStr.indexOf("卒",from);
		index[5] = lineStr.indexOf("象",from);
		index[6] = lineStr.indexOf("相",from);
		index[7] = lineStr.indexOf("將",from);
		index[8] = lineStr.indexOf("帥",from);
		index[9] = lineStr.indexOf("仕",from);
		index[10] = lineStr.indexOf("士",from);
		index[11] = lineStr.indexOf("前",from);
		index[12] = lineStr.indexOf("后",from);
		int value = 1000;//satisfy
		for (int i=0;i<index.length;i++){
			if (index[i]>=0 && index[i]<value)	
				value = index[i];
		}
		if (value!=1000) {
			return value;
		}else{
			return -1;
		}
	}
	private MoveNode getMoveStruct(ActiveBoard position, String emoveStr){
		int player = position.getPlayer();
		char c1=emoveStr.charAt(0);
		char c2=emoveStr.charAt(1);
		char c3=emoveStr.charAt(2);
		char c4=emoveStr.charAt(3);
		
		int piece = ActiveBoard.fenPiece(c1);
		piece = piece + player*7;
		BitBoard pieceBoard = position.getPieceBits(piece);
		int low = BitBoard.LSB(pieceBoard);
		int hi = BitBoard.MSB(pieceBoard);
		int srcX,srcY,srcX1,srcY1,srcX2,srcY2;
		int dstX,dstY;
		int i=0,j=0;
		srcX1 = ActiveBoard.FILE[low];
		srcX2 = ActiveBoard.FILE[hi];
		srcY1 = ActiveBoard.RANK[low];
		srcY2 = ActiveBoard.RANK[hi];
		//srcX = srcY = 0;
		int[] pawns={-1,-1,-1,-1,-1};
		//Pawn's max number is 5;
		if (piece == 6 || piece == 13){
			int k=0;
			for(i=low;i<=hi;i++){
				if ((pieceBoard.opAnd(PreMoveNodesGen.BitMask[i])).notZero()){

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
丰满岳乱妇一区二区三区 | 亚洲激情在线播放| 日韩精品国产精品| 91一区一区三区| 国产日韩精品视频一区| 天天操天天色综合| 色94色欧美sute亚洲13| 亚洲国产成人一区二区三区| 日韩黄色在线观看| 91行情网站电视在线观看高清版| 欧美白人最猛性xxxxx69交| 亚洲va国产天堂va久久en| 91麻豆精品视频| 国产亚洲成aⅴ人片在线观看 | 欧美浪妇xxxx高跟鞋交| 中文字幕中文字幕一区| 国产成人免费视频网站| 日韩午夜电影av| 青青草原综合久久大伊人精品| 欧美在线免费观看亚洲| 亚洲欧美偷拍卡通变态| bt7086福利一区国产| 中文一区二区完整视频在线观看| 韩国成人在线视频| 日韩欧美一区二区三区在线| 日本成人在线一区| 在线播放欧美女士性生活| 亚洲美腿欧美偷拍| 色一情一乱一乱一91av| 一区二区免费看| 日本福利一区二区| 亚洲一区二区三区中文字幕| 欧美色手机在线观看| 亚洲午夜久久久久久久久电影院| 欧美性大战久久久| 三级在线观看一区二区| 欧美成人bangbros| 国产成人午夜精品影院观看视频 | 欧美人体做爰大胆视频| 午夜av一区二区三区| 欧美美女一区二区| 精品一区二区三区不卡| 国产日产欧美精品一区二区三区| 国产成人一级电影| 亚洲欧洲综合另类| 777久久久精品| 狠狠狠色丁香婷婷综合激情 | 高清成人在线观看| 亚洲人成在线观看一区二区| 欧美图片一区二区三区| 日韩和欧美的一区| 国产欧美一区在线| 色综合欧美在线| 奇米精品一区二区三区在线观看| 精品久久一二三区| 91碰在线视频| 久久99久久久久久久久久久| 久久精品视频在线看| 欧美综合一区二区三区| 美女任你摸久久| 亚洲四区在线观看| 6080亚洲精品一区二区| 成人免费视频一区| 日日夜夜精品视频免费| 国产精品国产三级国产普通话99| 欧美老女人第四色| 成人午夜短视频| 日韩精品电影在线观看| 国产精品久久网站| 欧美成人女星排行榜| 一本色道久久综合亚洲91 | 精品国产一区二区在线观看| 972aa.com艺术欧美| 久久精品国产第一区二区三区| 中文字幕一区二区三| 日韩免费看的电影| 色噜噜狠狠色综合中国| 国产一区二区三区四区五区美女| 一区二区在线观看视频在线观看| 精品国产91乱码一区二区三区 | 蜜桃视频一区二区三区| 综合av第一页| 国产欧美日韩精品在线| 91麻豆精品国产自产在线观看一区| 成人国产免费视频| 麻豆精品在线播放| 亚洲 欧美综合在线网络| 亚洲国产精品精华液2区45| 日韩免费观看高清完整版| 91视频免费看| www.66久久| 成人午夜电影小说| 国产精选一区二区三区| 久久国产精品99久久人人澡| 图片区小说区国产精品视频| 一区二区欧美视频| 久久se精品一区精品二区| 日韩精彩视频在线观看| 亚洲最新视频在线观看| 国产精品传媒视频| 国产精品无码永久免费888| 精品国产成人在线影院| 欧美一区二区三区思思人| 欧美综合一区二区三区| 色婷婷av久久久久久久| 91久久线看在观草草青青| 99精品国产91久久久久久 | 国产激情偷乱视频一区二区三区| 三级不卡在线观看| 日韩高清一级片| 亚洲成人激情综合网| 亚洲高清在线精品| 午夜精品福利在线| 日韩影院在线观看| 免费欧美日韩国产三级电影| 免费成人结看片| 国内精品写真在线观看| 国产主播一区二区| 成人免费高清在线观看| av色综合久久天堂av综合| 一本久道中文字幕精品亚洲嫩| 欧洲精品视频在线观看| 欧美日韩精品免费观看视频| 欧美久久久一区| 日韩女优毛片在线| 欧美激情资源网| 亚洲精品视频一区| 日韩高清一区在线| 国产米奇在线777精品观看| 不卡视频在线观看| 欧美在线观看禁18| 日韩欧美亚洲国产另类| 久久久久久久久久久电影| 中文字幕中文字幕一区| 亚洲成人三级小说| 国产曰批免费观看久久久| 99久久久无码国产精品| 欧美日韩午夜在线| 久久综合久久综合久久综合| 国产精品国产三级国产普通话蜜臀 | 欧美高清在线一区| 亚洲一区在线观看网站| 久久66热偷产精品| av一本久道久久综合久久鬼色| 在线亚洲人成电影网站色www| 91精品国产乱| 国产精品久久精品日日| 日韩精品一二三| 成人一区二区视频| 91精品在线免费| 中文字幕中文在线不卡住| 免费在线观看精品| 一本大道av一区二区在线播放| 91精品午夜视频| 亚洲天堂福利av| 韩国成人福利片在线播放| 色老综合老女人久久久| 精品久久人人做人人爽| 亚洲一区二区三区视频在线| 国产在线不卡一区| 欧美日韩一级视频| 国产精品久久久久久久久免费相片| 亚洲成年人网站在线观看| 成人黄色电影在线| 一区二区三区四区视频精品免费| 日韩激情视频在线观看| 91麻豆精东视频| 国产日产欧美一区二区三区 | 欧美一区二区黄色| 亚洲免费电影在线| 国产成人av一区二区三区在线观看| 欧美日韩在线观看一区二区| 国产精品久久毛片av大全日韩| 人人狠狠综合久久亚洲| 欧美丝袜自拍制服另类| 成人免费小视频| 懂色av一区二区三区免费观看| 日韩一区二区三区三四区视频在线观看 | 久久在线免费观看| 男女视频一区二区| 欧美日韩aaaaa| 亚洲卡通动漫在线| 99麻豆久久久国产精品免费优播| 久久在线观看免费| 加勒比av一区二区| 日韩欧美中文字幕精品| 日韩不卡一区二区三区| 欧美日韩国产小视频在线观看| 亚洲欧美日韩国产成人精品影院| 国产成a人亚洲| 国产午夜精品福利| 国产福利精品一区二区| 久久久精品综合| 国产精品系列在线观看| 久久九九全国免费| 国产盗摄一区二区| 国产精品女主播在线观看| 成人亚洲一区二区一| 国产精品久久久久影院| 成人爱爱电影网址|