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

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

?? movesbackup.cpp

?? 一個人工智能的國際象棋游戲
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
#include "Global.h"
#include "OneMove.h"
#include "Moves.h"
#include "TransTableEntry.h"
#include "TranspositionTable.h"
#include "MoveQueue.h"

extern int WHITEBASE;
extern int BLACKBASE;
extern TranspositionTable table;
extern int movecount;
int search_firsttime=0;


MoveQueue movequeue;
OneMove *allmoves;

Moves::Moves()
	{
		head=new OneMove();
		//head->next=NULL;
	
		attackhead=new OneMove();
		normalhead=new OneMove();
		//head=attackhead;
		size=0;
		
		//current=head;
		acurrent=attackhead;
		ncurrent=normalhead;
		attackhead->next=NULL;
		normalhead->next=NULL;
	}
	
	
	
	
	
	
	
	/*void add(int p,int source,int sourcey,int dx,int dy,int noa)
	{
		//current=head;
		//while (current->next!=NULL) current=current->next;
		OneMove *newnode=new OneMove();
		newnode->sourcex=source;
		newnode->sourcey=sourcey;
		newnode->destx=dx;
		newnode->desty=dy;
		newnode->piece=p;
		//newnode->norm_or_attack=noa;
		newnode->next=NULL;
		current->next=newnode;
		current=newnode;
		size++;
	}*/
void Moves::add(int p,int source,int sourcey,int dx,int dy,int noa)
	{
		//current=head;
		//while (current->next!=NULL) current=current->next;
		/*if (sourcey>7 || dy>7)
		{
			char buf[10];
			MessageBox(NULL,"Added Wrong","",0);
			MessageBox(NULL,itoa(p,buf,10),"",0);
		}*/
	
		OneMove *newnode=new OneMove();
		newnode->sourcex=source;
		newnode->sourcey=sourcey;
		newnode->destx=dx;
		newnode->desty=dy;
		newnode->piece=p;
		//newnode->norm_or_attack=noa;
		newnode->next=NULL;
		//MessageBox(NULL,"Join called","",0);
		
		if (noa==1)
		{
			acurrent->next=newnode;
			acurrent=newnode;
	
			//acurrent->next=normalhead;
		}
		else
		{
			ncurrent->next=newnode;
			ncurrent=newnode;
	
		}
		size++;
	}
	
void Moves::combine()
	{
		
	
		if (attackhead->next!=NULL)
		{
	
			head=attackhead;
			acurrent->next=normalhead->next;
		}
		else
		{
	
			head=normalhead;
		}
	}
	
void Moves::destroy()
	{
		for (OneMove *temp=head;temp!=NULL;)
		{
			OneMove *tmp=temp->next;
			delete temp;
			temp=tmp;
			
		}
		
	if (attackhead->next==NULL) delete attackhead;
			if (head!=normalhead) delete normalhead;
	
	}
	
	/*void sortMoves(int board[8][8],int color)
	{
		OneMove *temp=head;OneMove *p;int min;
		OneMove *temp2;
		int newboard1[8][8];int newboard2[8][8];
		for (temp=head->next;temp!=NULL;temp=temp->next)
		{
			
			
				for (int i=0;i<8;i++)
				{
					for (int j=0;j<8;j++)
					{
						newboard1[i][j]=board[i][j];
					}
				}
				executeMove(newboard1,temp);
				min=eval(newboard1,color);
				p=temp;
			
			
			for (temp2=temp;temp2!=NULL;temp2=temp2->next )
			{
				for (int i=0;i<8;i++)
				{
					for (int j=0;j<8;j++)
					{
						newboard2[i][j]=board[i][j];
					}
				}
				executeMove(newboard2,temp2);
				int val=eval(newboard2,color);
				if ((color==1 && val>min) || (color==0 && val<min))
				{
					min=val;
					p=temp2;
				}
			}
			int piece=temp->piece;int sx=temp->sourcex;int sy=temp->sourcey;int dx=temp->destx;int dy=temp->desty;
			temp->piece=p->piece;temp->sourcex=p->sourcex;temp->sourcey=p->sourcey;temp->destx=p->destx;temp->desty=p->desty;
			p->piece=piece;
			p->sourcex=sx;
			p->sourcey=sy;
			p->destx=dx;
			p->desty=sy;
		}
			
		
					
	
	}

	
	int eval(int currentboard[8][8],int color)
	{
		//ofstream in("C:\\Hello.txt",ios::app);
		int value=0;
		int oppplayer_value=0;
			for (int i=0;i<8;i++)
			{
				for (int j=0;j<8;j++)
				{
					
					if (currentboard[i][j]<10 && currentboard[i][j]!=0)
					{
						switch (currentboard[i][j]%10)
						{
							case 1:
							{
		
								value+=100;
							}
							break;
							case 2:
							{
								value+=10000;
							}
							break;
							case 3:
							{
								value+=900;
							}
							break;
							case 4:
							{
								value+=325;
							}
							break;
							case 5:
							{
								value+=300;
							}break;
							case 6:
							{
								value+=500;
							}
							break;
						}
					}
					
				}
			}
		
		
			for (i=7;i>=0;i--)
			{
				for (int j=7;j>=0;j--)
				{
					
					if (currentboard[i][j]>10)
					{
						switch(currentboard[i][j]%10)
						{
							case 1:
							{
								oppplayer_value+=100;
							}
							break;
							case 2:
							{
								oppplayer_value+=10000;
							}break;
							case 3:
							{
								oppplayer_value+=900;
							}break;
							case 4:
							{
								oppplayer_value+=325;
							}
							break;
							case 5:
							{
								oppplayer_value+=300;
							}break;
							case 6:
							{
								oppplayer_value+=500;
							}
					
						}
					}
				}
			}
		
		*/
		//char buf[255];
		//MessageBox(NULL,"Pawn Count = "+(CString)itoa(w_pawncount,buf,10),"",0);
		/*srand((unsigned)time(NULL));
		return rand();*/
		/*fstream in("C:\\Hello.txt",ios::app);
		
		in<<"\t"<<(value)-oppplayer_value<<endl;
		in.close();
		*/
		
		//if (color==1)return ((value*2)-oppplayer_value);
		//else return -((oppplayer_value*2)-value);
	 	
	//}

	
	
	
	
	
	
	/*void executeMove(int currentboard[8][8],OneMove *temp)
	{
		currentboard[temp->desty][temp->destx]=currentboard[temp->sourcey][temp->sourcex];
		currentboard[temp->sourcey][temp->sourcex]=0;		
	}*/
#define cond(color,check) (color==WHITE?(check>10 ):(check<10  && check!=0))
	
		
	
	
void Moves::GeneratePawnMoves(int board[8][8],int color)
	{
		
		int piece;
		piece=(color==WHITE?WHITE_PAWN:BLACK_PAWN);
		if ((color==WHITE && WHITEBASE==0)	|| (color==BLACK && BLACKBASE==0))
		{
		
			for (int i=0;i<8;i++)
			{
				for (int j=0;j<8;j++)
				{
					
					if (board[i][j]==piece)
					{
						
						if (i<7 && j<7 && cond(color,board[i+1][j+1]))
						{
							//fstream out("C:\\Hello.txt",ios::app);
							//out<<"White Pawn at "<<i<<","<<j<<" and piece at dest "<<board[i+1][j+1]<<endl;
							add(piece,j,i,j+1,i+1,1);
						}
						if (i<7 && j>0 && cond(color,board[i+1][j-1]))
						{
							add(piece,j,i,j-1,i+1,1);
						}
						if (i<7 && board[i+1][j]==0)
						{
							add(piece,j,i,j,i+1,0);
						}
						
						
						if (i==1)
						{
							if (board[i+2][j]==0 && board[i+1][j]==0)
							{
								add(piece,j,i,j,i+2,0);
							}
						}
						
						
					}
				}
			}
		}
		else if( (color==WHITE && WHITEBASE==7) || (color==BLACK && BLACKBASE==7))
		{
			
			
			
			
			for (int i=0;i<8;i++)
			{
				for (int j=0;j<8;j++)
				{
					if (board[i][j]==piece)
					{
						if (i==6)
						{
							if (board[i-2][j]==0 && board[i-1][j]==0)
							{
								add(piece,j,i,j,i-2,0);
							}
						}
						if (i>0 && board[i-1][j]==0 )
						{
							add(piece,j,i,j,i-1,0);
						}
						if (i>0 && j>0 && cond(color,board[i-1][j-1]))
						{
								add(piece,j,i,j-1,i-1,1);
						}
						if (i>0 && j<7 && cond(color,board[i-1][j+1]))
						{
							add(piece,j,i,j+1,i-1,1);
						}
						

					}
				}
			}
			
		}
	}
#define gencond(color,check) (color==WHITE?((check==0 || check>10)):(check < 10))
	
void Moves::GenerateKnightMoves(int board[8][8],int color)
	{
		int dummy;
		
		int piece;
		piece=(color==WHITE?WHITE_KNIGHT:BLACK_KNIGHT);
		
		for (int i=0;i<8 ;i++)
		{
			for (int j=0;j<8;j++)
			{
				if (board[i][j]==piece)
				{
					
					if (i<6 && j<7 && gencond(color,board[i+2][j+1]))
					{
						if (board[i+2][j+1]==0)
						{
							dummy=0;
						}
						else
						{
							dummy=1;
						}
						
						add(piece,j,i,j+1,i+2,dummy);
					}
					if (i<6 && j>0 && gencond(color,board[i+2][j-1]))
					{
						if (board[i+2][j-1]==0)
						{
							dummy=0;
						}
						else
						{
							dummy=1;
						}
						
						add(piece,j,i,j-1,i+2,dummy);
					}
					if (i>1 && j<7 && gencond(color,board[i-2][j+1]))
					{
						if (board[i-2][j+1]==0)
						{
							dummy=0;
						}
						else
						{
							dummy=1;
						}
						
						add(piece,j,i,j+1,i-2,dummy);
					}
					if (i>1 && j>0 && gencond(color,board[i-2][j-1]))
					{
						if (board[i-2][j-1]==0)
						{
							dummy=0;
						}
						else
						{
							dummy=1;
						}
						
						add(piece,j,i,j-1,i-2,dummy);
					}
					//
					if (i<7 && j<6 && gencond(color,board[i+1][j+2]))
					{
						if (board[i+1][j+2]==0)
						{
							dummy=0;
						}
						else
						{
							dummy=1;
						}
						
						add(piece,j,i,j+2,i+1,dummy);
					}
					if (i<7 && j>1 && gencond(color,board[i+1][j-2]))
					{
						if (board[i+1][j-2]==0)
						{
							dummy=0;
						}
						else
						{
							dummy=1;
						}
						
						add(piece,j,i,j-2,i+1,dummy);
					}
					if (i>0 && j<6 && gencond(color,board[i-1][j+2]))
					{
						if (board[i-1][j+2]==0)
						{
							dummy=0;
						}
						else
						{
							dummy=1;
						}
						
						add(piece,j,i,j+2,i-1,dummy);
					}
					if (i>0 && j>1 && gencond(color,board[i-1][j-2]))
					{
						if (board[i-1][j-2]==0)
						{
							dummy=0;
						}
						else
						{
							dummy=1;
						}
						
						add(piece,j,i,j-2,i-1,dummy);
					}

				}
			}
		}
			
	}

#define cond2(color,check) (color==WHITE?(check > 10):(check < 10))
	void Moves::GenerateBishopMoves(int board[8][8],int color)
	{
		
		int piece;int k,m;
		piece=(color==WHITE?WHITE_BISHOP:BLACK_BISHOP);
		
		for (int i=0;i<8;i++)
		{
			for (int j=0;j<8;j++)
			{
				if (board[i][j]==piece)
				{
					
					for (k=i-1,m=j-1;k>=0 && m>=0;k--,m--)
					{

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91免费小视频| 91麻豆福利精品推荐| 亚洲国产成人91porn| 国产精品久久久久aaaa樱花| 久久综合久久99| 久久久99免费| 久久久久久久久久电影| 精品国产区一区| 国产亚洲精品aa| 国产精品欧美综合在线| 国产精品久久久久婷婷| 中文字幕一区二区在线播放| 成人免费在线播放视频| 亚洲人吸女人奶水| 夜夜夜精品看看| 日韩电影免费一区| 韩国女主播成人在线观看| 国产乱国产乱300精品| 国产福利一区二区三区视频在线 | 欧美日韩一区二区三区四区五区| 91成人免费网站| 日韩一二三区不卡| 亚洲国产岛国毛片在线| 亚洲黄色性网站| 国产在线视频精品一区| 91一区二区在线| 日韩一级视频免费观看在线| 国产欧美一区二区精品婷婷| 综合久久国产九一剧情麻豆| 亚洲国产中文字幕| 久久av中文字幕片| 91丨porny丨户外露出| 欧美日韩精品三区| 久久九九99视频| 偷窥少妇高潮呻吟av久久免费| 捆绑调教美女网站视频一区| 成人激情文学综合网| 欧美人妇做爰xxxⅹ性高电影| 久久久久国产成人精品亚洲午夜| 亚洲欧美日韩国产中文在线| 青青草国产成人99久久| 不卡免费追剧大全电视剧网站| 在线免费一区三区| 国产网红主播福利一区二区| 亚洲制服欧美中文字幕中文字幕| 国产一区美女在线| 欧美日韩激情一区二区三区| 中文字幕欧美区| 奇米色一区二区| 91影院在线免费观看| 日韩欧美高清一区| 亚洲国产成人精品视频| 福利一区在线观看| 精品日产卡一卡二卡麻豆| 亚洲第一综合色| 国产iv一区二区三区| 欧美一卡二卡三卡| 亚洲一卡二卡三卡四卡| 播五月开心婷婷综合| 欧美精品一区二区在线观看| 亚洲444eee在线观看| av电影天堂一区二区在线观看| 久久久综合激的五月天| 麻豆精品在线看| 欧美一区二区视频在线观看| 亚洲精选视频在线| 99久久国产免费看| 国产精品传媒入口麻豆| 国产麻豆成人精品| 26uuu欧美| 国产一区二区三区蝌蚪| 日韩一区二区免费高清| 琪琪一区二区三区| 欧美一区午夜精品| 久久成人麻豆午夜电影| 欧美一区二区三区白人| 天堂影院一区二区| 91精品国产高清一区二区三区| 性做久久久久久久久| 欧美高清视频www夜色资源网| 五月天激情综合| 欧美一区二区三区小说| 午夜不卡av在线| 91精品欧美久久久久久动漫| 日韩影院免费视频| 欧美精品一区二| 成人综合婷婷国产精品久久免费| 中文字幕一区二区不卡| 91色婷婷久久久久合中文| 亚洲欧美一区二区三区久本道91| 91美女精品福利| 一区二区三区精品久久久| 欧美性猛交xxxxxxxx| 日韩国产精品91| 国产午夜精品理论片a级大结局| 国产成人免费视频一区| 亚洲日本电影在线| 欧美日韩精品欧美日韩精品一综合| 日韩电影在线一区| 国产丝袜美腿一区二区三区| 国产不卡在线视频| 亚洲丶国产丶欧美一区二区三区| 在线成人免费视频| 国产成人亚洲综合色影视| 亚洲欧美一区二区三区久本道91| 在线不卡中文字幕播放| 国产精品一二二区| 亚洲午夜精品网| 久久九九影视网| 欧美日韩激情在线| 高清久久久久久| 视频在线在亚洲| 国产精品盗摄一区二区三区| 欧美顶级少妇做爰| 91网站最新网址| 久久丁香综合五月国产三级网站| 国产免费观看久久| 欧美一级专区免费大片| 色综合天天综合网国产成人综合天| 日韩精品高清不卡| 亚洲欧美色综合| 精品国产91洋老外米糕| 在线观看av一区二区| 国产高清无密码一区二区三区| 午夜国产不卡在线观看视频| 中文字幕av资源一区| 欧美二区三区的天堂| 色综合天天综合色综合av| 精品写真视频在线观看| 亚洲一区二区三区在线播放| 久久精品无码一区二区三区| 欧美年轻男男videosbes| 成人av第一页| 国产a精品视频| 国产专区综合网| 美女高潮久久久| 婷婷久久综合九色综合绿巨人| 亚洲欧美在线另类| 国产亚洲精久久久久久| 日韩一区二区免费视频| 欧美日韩国产综合一区二区| 91麻豆文化传媒在线观看| 国产成人高清在线| 国产综合色在线| 国产一区二区三区免费播放| 蜜臀va亚洲va欧美va天堂| 性感美女久久精品| 亚洲成av人在线观看| 亚洲精品成人精品456| 一区视频在线播放| 国产精品不卡在线观看| 国产欧美精品一区aⅴ影院| 精品剧情在线观看| 欧美精品一区二区三区四区| 欧美一级精品在线| 精品日韩99亚洲| 久久久久久免费| 国产女同性恋一区二区| 亚洲国产精品v| 亚洲欧美日韩久久| 亚洲国产精品久久一线不卡| 一区二区三区欧美视频| 一区二区成人在线| 天堂影院一区二区| 极品瑜伽女神91| 粉嫩久久99精品久久久久久夜| 成人伦理片在线| 欧美系列亚洲系列| 欧美一区二区日韩| 国产婷婷一区二区| 日韩码欧中文字| 图片区小说区国产精品视频| 麻豆91精品91久久久的内涵| 国内成人精品2018免费看| 国产**成人网毛片九色| 日本道精品一区二区三区| 精品视频在线免费| www久久久久| 一区在线播放视频| 日韩国产一二三区| 波多野结衣精品在线| 欧美视频中文字幕| 久久亚洲二区三区| 亚洲欧美日韩中文字幕一区二区三区 | 波多野结衣中文字幕一区| 97精品久久久久中文字幕| 欧美日韩亚州综合| 国产欧美日本一区二区三区| 中文字幕在线一区| 免费人成网站在线观看欧美高清| 激情久久五月天| 91黄色免费版| 日本一区二区三区在线观看| 一区二区在线观看不卡| 国产一区二区美女| 欧美情侣在线播放| 国产精品福利在线播放| 奇米影视一区二区三区小说| 成人成人成人在线视频| 精品久久久久久久久久久久久久久久久 |