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

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

?? chess.cpp

?? 包括用VC開發的五子棋程序 以及VRML語言寫的虛擬地理環境程序
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
		if( board_situation.is_machine )
			board_situation.score=100;
		else
			board_situation.score=-100;
		return;
	}

	//雙死3
	if(
		( lr==3 && (ud==3 || lutrd==3 || ldtru==3) )
		|| (ud==3 && (lutrd==3 || ldtru==3))
		|| (lutrd==3 && ldtru==3)
		)
	{
		if( board_situation.is_machine )
			board_situation.score=50;
		else
			board_situation.score=-50;
		return;
	}

	//單活2
	if( lr==5 || ud==5 || lutrd==5 || ldtru==5 )
	{
		if( board_situation.is_machine )
			board_situation.score=10;
		else
			board_situation.score=-10;
		return;
	}

	//單死3
	if( lr==3 || ud==3 || lutrd==3 || ldtru==3 )
	{
		if ( board_situation.is_machine )
			board_situation.score = 5;
		else
			board_situation.score = -5;
		return ;
	}

		//單死2
	if ( lr == 2 || ud == 2 || lutrd == 2 || ldtru == 2 )
	{
		if ( board_situation.is_machine )
			board_situation.score = 2;
		else
			board_situation.score = -2;
		return ;
	}
	//死1
	if ( lr == 1 || ud == 1 || lutrd == 1 || ldtru == 1 )
	{
		if ( board_situation.is_machine )
			board_situation.score = 1;
		else
			board_situation.score = -1;
		return;
	}
	return;
}

int Chess::SearchMaxValue(Step &st, int array[][15])
{
	int max_score=0;
	int score=0;

	GameStatus temp;
	temp.is_machine=true;
	temp.deep=0;
	for( int i=0;i<15;i++ )
		for( int jj=0;jj<15;jj++ )
			temp.fivearray[i][jj]=array[i][jj];

	for( i=0;i<15;i++ )
		for( int j=0;j<15;j++ )
		{
			if( array[i][j]==0 )
			{
				temp.st.x=i;
				temp.st.y=j;
				score=0;

				int score1 = 0 ;
				int score2 = 0 ;

				temp.fivearray[i][j]=3;
				temp.st.side=3;
				temp.is_machine=true;
				temp.score=0;
				GetCurrentScore(temp);
				score1=temp.score;

				temp.fivearray[i][j]=1;
				temp.st.side=1;
				temp.is_machine=false;
				temp.score=0;
				GetCurrentScore(temp);
				score2=-temp.score;

				//機器
				if( score1>=10000 )
				{
					temp.fivearray[i][j]=3;
					temp.st.side=3;
					temp.is_machine=true;
					temp.score=0;
					Step tempSt1;
					int tempscore=SearchValue(temp.fivearray,tempSt1,false);
					if( score1<tempscore )		//如果當前棋盤還有比現在分數大的,則防守
					{
						st.x=tempSt1.x;
						st.y=tempSt1.y;
						return tempscore;
					}
					else
					{
						st.x=i;
						st.y=j;
						return score1;
					}
				}

				if( score2>=100000 )
				{
					temp.fivearray[i][j]=1;
					temp.st.side=1;
					temp.is_machine=false;
					temp.score=0;
					Step tempSt1;
					int tempscore=SearchValue(temp.fivearray,tempSt1,true);
					if( score2<=tempscore )
					{
						st.x=tempSt1.x;
						st.y=tempSt1.y;
					}
					else
					{
						st.x=i;
						st.y=j;
						return score1;
					}
				}

				score=score1+score2;
				if( score>max_score )
				{
					max_score=score;
					st.x=i;
					st.y=j;
				}

				temp.fivearray[i][j]=0;
			}
		}
		return max_score;
}


int Chess::DeepSearch(GameStatus ts, Step &st, bool machine, int value)
{
	ts.deep++;
	st.deep++;
	int score=0;
	if( ts.deep==5 )
	{
		score=SearchValue( ts.fivearray,st,machine );
		return score;
	}
	int min_score=0;
	score=0;

	//選出幾局分較高的
	CList<GameStatus,GameStatus&>GameStatusList;
	for( int i=0;i<15;i++ )
		for( int j=0;j<15;j++ )
		{
			if( ts.fivearray[i][j]==0 )
			{
				ts.st.x=i;
				ts.st.y=j;
				score=0;
				if( machine )
				{
					ts.fivearray[i][j]=3;
					ts.st.side=3;
					ts.is_machine=true;
					ts.score=0;
					GetCurrentScore(ts);
					if( score==100000 )
					{
						st.x=i;
						st.y=j;
						return score;
					}
					score=ts.score;
				}
				else
				{
					ts.fivearray[i][j]=1;
					ts.st.side=1;
					ts.is_machine=false;
					ts.score=0;
					GetCurrentScore(ts);
					score=-ts.score;
					ts.score=score;
					if( score==100000 )
					{
						st.x=i;
						st.y=j;
						return score;
					}
				}
				ts.score=score;
				if( score==0 )
				{
					ts.fivearray[i][j]=0;
					continue;
				}
				if( GameStatusList.GetCount()==0 )
				{
					min_score=ts.score;
					GameStatusList.AddTail(ts);
				}
				else
				{
					if( score<=min_score )
					{
						min_score=score;
						GameStatusList.AddTail(ts);
					}
					else
					{
						POSITION ps=GameStatusList.GetTailPosition();
						while( ps!=NULL )
						{
							GameStatus temp=GameStatusList.GetPrev(ps);
							if( temp.score>=score )
							{
								GameStatusList.InsertAfter(ps,ts);
								break;
							}
						}
						if( ps==NULL )
						{
							GameStatusList.AddHead(ts);
						}
					}
				}
				ts.fivearray[i][j]=0;
			}
		}

		POSITION ps=GameStatusList.GetHeadPosition();
		Step tempstep=st;
		int tempscore=0;
		int max=0;
		for( i=0;i<5;i++ )
		{
			GameStatus temp=GameStatusList.GetNext(ps);
			value=temp.score;
			tempscore=DeepSearch(temp,tempstep,!machine,temp.score);

			if( tempscore>max )
			{
				max=tempscore;
				st=temp.st;
				st.deep=tempstep.deep;
			}
				
			if( ps==NULL )
				break;
		}

		return max;
		
}

void Chess::Input(int i,int j)
{
	Step tempstep;
	tempstep.deep=0;
	tempstep.side=1;
	tempstep.x=i;
	tempstep.y=j;
	FiveArray[i][j]=1;
	StepList.AddTail(tempstep);
}

void Chess::Output()
{
	system("cls");
	for( int i=0;i<15;i++ )
		if( i<10 )
			cout<<"  "<<i+1<<" ";
		else
			cout<<" "<<i+1<<" ";
	cout<<endl<<endl;
	for( i=0;i<15;i++ )
	{
		for( int j=0;j<15;j++ )
		{
			if( FiveArray[i][j]==0 )
				cout<<" ╋ ";
			else if( FiveArray[i][j]==1 )
					cout<<" ○ ";
				else
					cout<<" ● ";
		}
		cout<<" "<<i+1<<" ";
		cout<<endl;			//用來換行
		cout<<endl;			//用來輸出行間距
	}
	cout<<endl<<endl;

	Step tempstep;
	if( !StepList.IsEmpty() )
	{
		tempstep=StepList.GetTail();
		if( tempstep.side==1 )
			cout<<"people :(";
		else
			cout<<"machine:(";
		cout<<tempstep.x+1<<","<<tempstep.y+1<<")"<<endl;
	}
}

void Chess::Regret()
{
	if( StepList.GetCount()>0 )
	{
		Step temp=StepList.GetTail();
		StepList.RemoveTail();
		FiveArray[temp.x][temp.y]=0;
	}
	if( StepList.GetCount()>0 )
	{
		Step temp=StepList.GetTail();
		StepList.RemoveTail();
		FiveArray[temp.x][temp.y]=0;
	}
}

bool Chess::Judge()
{
	if( StepList.GetCount==0 )
		return false;

	Step temphead=StepList.GetHead();
	int sidehead=temphead.side;

	Step temp=StepList.GetTail();
	int i=temp.x;
	int j=temp.y;
	int side=temp.side;

	if ( sidehead==side )
	{
		int lr=LeftToRight_Status(i,j,FiveArray);
		int ud=UpToDown_Status(i,j,FiveArray);
		int lutrd=LeftUpToRightDown_Status(i,j,FiveArray);
		int ldtru=LeftDownToRightUp_Status(i,j,FiveArray);

		if ( lr==6&&ud==6 || lr==6&&lutrd==6 || lr==6&&ldtru==6 || 
			ud==6&&lutrd==6 || ud==6&&ldtru==6 ||
			lutrd==6&&ldtru==6 ||
			lr==6&&ud==7 || lr==6&&lutrd==7 || lr==6&&ldtru==7 || 
			ud==6&&lutrd==7 || ud==6&&ldtru==7 ||
			lutrd==6&&ldtru==7 )
		{
			cout<<"The first one han done BAN HAND!"<<endl;
			return true;
		}
	}

	if( LeftRight(i,j,side)>=5 || UpDown(i,j,side)>=5 || LUptoDown(i,j,side)>=5 || RUptoDown(i,j,side)>=5 )
		return true;
	else
		return false;
}

void Chess::ComputerGo()
{
		Step st;
		int score=SearchMaxValue(st,FiveArray);
		if( score>=1000 || score<=20 )
		{
			st.side=3;
			FiveArray[st.x][st.y]=3;
			StepList.AddTail(st);
			system("cls");
			Output();
		}
		else
		{
			GameStatus temp;
			for( int i=0;i<15;i++ )
				for( int jj=0;jj<15;jj++ )
					temp.fivearray[i][jj]=FiveArray[i][jj];
				temp.deep=0;
				temp.is_machine=true;
				temp.score=0;

				Step st1;
				Step st2;
				int score1=DeepSearch(temp,st1,true,0);
				int score2=DeepSearch(temp,st2,false,0);
				if( score1>score2 )
				{
					st1.side=3;
					FiveArray[st1.x][st1.y]=3;
					StepList.AddTail(st1);
					system("cls");
					Output();
				}
				if( score1<score2 )
				{
					st2.side=3;
					FiveArray[st2.x][st2.y]=3;
					StepList.AddTail(st2);
					system("cls");
					Output();
				}
				if( score1==score2 )
				{
					if( st1.deep<=st2.deep )
					{
						st1.side=3;
						FiveArray[st1.x][st1.y]=3;
						StepList.AddTail(st1);
						system("cls");
						Output();
					}
					else
					{
						st2.side=3;
						FiveArray[st2.x][st2.y]=3;
						StepList.AddTail(st2);
						system("cls");
						Output();
					}
				}
		}

}

void Chess::PersonGo(int& i, int& j)
{
	cout<<"enter x:";
	cin>>i;
	if( i==0 )
	{
		Regret();
		system("cls");
		Output();
	}
	else
	{
		while ( i<0 || i>15 )
		{
			cout << "Please enter again(1-15)!" << endl << "enter x:" ;
			cin >> i ;
		}
		
		cout << "enter y:";
		cin >> j ;
		while ( j<=0 || j>15 )
		{
			cout << "Please enter again(1-15)!" << endl << "enter y:";
			cin>>j;
		}
			
		i=i-1;
		j=j-1;
		Input(i,j);
	}
}

void Chess::ComputerGoFirst()
{
	Step tempstep;
	tempstep.deep=0;
	tempstep.side=3;
	tempstep.x=7;
	tempstep.y=7;
	FiveArray[7][7]=3;
	StepList.AddTail(tempstep);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩你懂得| 欧美色视频在线| 国产精品自拍三区| 久久99久久久久| 日韩av成人高清| 蜜桃视频一区二区三区| 日本不卡视频在线观看| 久久国产免费看| 精品一区二区三区不卡| 国产精品综合视频| gogogo免费视频观看亚洲一| 99久久99久久精品免费观看| 91在线观看一区二区| 91激情五月电影| 欧美无砖专区一中文字| 欧美精品tushy高清| 日韩精品一区二区三区蜜臀| 国产日韩三级在线| 最新国产成人在线观看| 亚洲在线视频免费观看| 奇米精品一区二区三区四区| 国产一二三精品| 99久久国产综合精品色伊| 欧洲人成人精品| 精品剧情v国产在线观看在线| 国产精品网站在线| 午夜激情久久久| 国产高清在线观看免费不卡| 色综合咪咪久久| 欧美一级淫片007| 亚洲国产成人午夜在线一区| 亚洲午夜电影在线| 国产精品一区二区三区网站| 91麻豆精东视频| 精品久久久久久无| 亚洲综合一区二区| 韩国欧美一区二区| 欧美视频在线观看一区| 国产人成亚洲第一网站在线播放| 性做久久久久久免费观看欧美| 国产一区二三区| 欧美日韩国产免费一区二区| 国产欧美精品一区二区色综合 | 国产三级精品在线| 亚洲国产精品影院| av电影在线不卡| 欧美zozo另类异族| 亚洲第一激情av| 成a人片亚洲日本久久| 欧美一级在线视频| 亚洲mv在线观看| 色系网站成人免费| 国产午夜亚洲精品理论片色戒| 午夜精品久久久久久不卡8050| av一二三不卡影片| 26uuu欧美日本| 美日韩一区二区| 在线观看www91| 亚洲日本护士毛茸茸| 国产盗摄一区二区| 欧美精品一区二区久久久| 亚洲一区二区偷拍精品| 99久久99久久精品免费看蜜桃| 久久久久国产精品厨房| 国产在线观看一区二区| 日韩免费看网站| 日产精品久久久久久久性色| 欧美色图一区二区三区| 一区二区三区精品在线| 日本道色综合久久| 亚洲免费资源在线播放| 在线视频欧美精品| 亚洲国产欧美在线| 欧美在线观看视频一区二区三区| 亚洲精品福利视频网站| 日本久久精品电影| 亚洲精品免费在线播放| 在线观看91视频| 亚洲www啪成人一区二区麻豆| 欧美午夜一区二区三区免费大片| 亚洲一二三四在线| 4hu四虎永久在线影院成人| 亚洲超丰满肉感bbw| 日韩一区二区三区免费观看| 日日夜夜精品视频免费| 日韩一区二区三区精品视频| 免费亚洲电影在线| 精品久久久久久亚洲综合网 | 91毛片在线观看| 一二三区精品视频| 日韩一区二区影院| 粉嫩绯色av一区二区在线观看| 国产精品国产三级国产| 欧美午夜影院一区| 极品少妇xxxx精品少妇| 欧美高清在线视频| 色琪琪一区二区三区亚洲区| 亚洲图片一区二区| 欧美岛国在线观看| a4yy欧美一区二区三区| 亚洲一区二区三区四区五区中文| 在线播放91灌醉迷j高跟美女| 九一九一国产精品| 最新国产の精品合集bt伙计| 欧美日韩精品系列| 国产乱人伦精品一区二区在线观看 | 色综合天天综合网天天看片| 亚洲制服丝袜在线| 久久免费电影网| 欧美性猛交xxxxxx富婆| 久久99九九99精品| 中文字幕一区av| 欧美变态tickling挠脚心| 91丝袜美女网| 国内久久精品视频| 亚洲精品第一国产综合野| 2020国产成人综合网| 色久综合一二码| 国内精品视频一区二区三区八戒| 亚洲人成人一区二区在线观看| 欧美一区二区三级| 色婷婷久久99综合精品jk白丝| 精品一二三四在线| 亚洲一级电影视频| 中文字幕一区二区三中文字幕| 国产日韩亚洲欧美综合| 欧美日韩国产欧美日美国产精品| av高清久久久| 国产激情视频一区二区在线观看| 亚洲一区二区三区四区在线免费观看| 国产午夜亚洲精品羞羞网站| 日韩三级在线观看| 欧美乱妇23p| 99久久婷婷国产| 欧美日韩国产一区二区三区地区| 高清日韩电视剧大全免费| 美国十次综合导航| 日本亚洲免费观看| 亚洲午夜久久久久久久久电影网 | 精品日韩99亚洲| 欧美美女喷水视频| 色久优优欧美色久优优| aaa欧美大片| 99re视频精品| 99视频一区二区| 99精品黄色片免费大全| 99国产精品久久久久| 欧美日韩电影一区| www.av亚洲| 国产麻豆精品久久一二三| 免费观看一级欧美片| 亚洲国产一二三| 亚洲裸体xxx| 亚洲欧美激情一区二区| 国产精品欧美一级免费| 久久久国产午夜精品| 欧美日韩不卡一区| 欧美性三三影院| 在线观看视频一区| 欧美国产丝袜视频| 国产亚洲欧美激情| 欧美韩国一区二区| 一区在线观看免费| 国产精品乱人伦一区二区| 欧美极品美女视频| 中文字幕一区视频| 一区二区三区波多野结衣在线观看 | 99re视频精品| 日本大香伊一区二区三区| 欧美在线观看你懂的| 7777精品伊人久久久大香线蕉完整版| 欧美性猛交xxxx黑人交| 欧美一区二区在线视频| 欧美zozo另类异族| 国产精品网站一区| 一区二区三区四区高清精品免费观看| 亚洲综合在线五月| 日韩精品91亚洲二区在线观看| 老汉av免费一区二区三区| 国产一区二区三区蝌蚪| 91尤物视频在线观看| 56国语精品自产拍在线观看| 久久亚洲综合色| 夜夜嗨av一区二区三区四季av| 婷婷久久综合九色综合伊人色| 久草在线在线精品观看| 成人av电影在线播放| 在线精品国精品国产尤物884a | 日韩制服丝袜先锋影音| 欧美视频精品在线观看| 精品国产三级电影在线观看| 久久亚洲欧美国产精品乐播| 亚洲另类在线视频| 久久国产成人午夜av影院| 成人av电影在线播放| 欧美精品粉嫩高潮一区二区| 国产亚洲欧美日韩俺去了| 亚洲午夜私人影院| 国产成人99久久亚洲综合精品| 色噜噜狠狠一区二区三区果冻|