⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mychess.cpp

📁 围棋游戏
💻 CPP
📖 第 1 页 / 共 2 页
字号:
				break;
			case 1://vertical
                if(State[chaintab[i].FirstP.x-1][chaintab[i].FirstP.y+chaintab[i].ChainLenth-1]==1){//black
					if(chaintab[i].BorW==1)chaintab[i].EnaAdd=0;
				}
				else{//white
					if(State[chaintab[i].FirstP.x-1][chaintab[i].FirstP.y+chaintab[i].ChainLenth-1]==2){
						if(chaintab[i].BorW==0)chaintab[i].EnaAdd=0;
					}
				}
				break;
			case 2://lu-rd
				if(State[chaintab[i].FirstP.x+chaintab[i].ChainLenth-1][chaintab[i].FirstP.y+chaintab[i].ChainLenth-1]==1){//black
					if(chaintab[i].BorW==1)chaintab[i].EnaAdd=0;
				}
				else{//white
					if(State[chaintab[i].FirstP.x+chaintab[i].ChainLenth-1][chaintab[i].FirstP.y+chaintab[i].ChainLenth-1]==2){
						if(chaintab[i].BorW==0)chaintab[i].EnaAdd=0;
					}
				}
				break;
			case 3://rd-lu
				if(State[chaintab[i].FirstP.x+chaintab[i].ChainLenth-1][chaintab[i].FirstP.y-chaintab[i].ChainLenth-1]==1){
					if(chaintab[i].BorW==1)chaintab[i].EnaAdd=0;
				}
				else{
					if(State[chaintab[i].FirstP.x+chaintab[i].ChainLenth-1][chaintab[i].FirstP.y-chaintab[i].ChainLenth-1]==2){
						if(chaintab[i].BorW==0)chaintab[i].EnaAdd=0;
					}
				}
				break;
			}
			break;
		case 3://both sides addable
           switch(chaintab[i].VHState){
			case 0://horizen
				//lu
				if(State[chaintab[i].FirstP.x-2][chaintab[i].FirstP.y-1]==1){//black
					if(chaintab[i].BorW==1)chaintab[i].EnaAdd=2;
				}
				else{//white
					if(State[chaintab[i].FirstP.x-2][chaintab[i].FirstP.y-1]==2){
						if(chaintab[i].BorW==0)chaintab[i].EnaAdd=2;
					}
				}
				//rd
				if(State[chaintab[i].FirstP.x+chaintab[i].ChainLenth-1][chaintab[i].FirstP.y-1]==1){//black
					if(chaintab[i].BorW==1)chaintab[i].EnaAdd=1;
				}
				else{//white
					if(State[chaintab[i].FirstP.x+chaintab[i].ChainLenth-1][chaintab[i].FirstP.y-1]==2){
						if(chaintab[i].BorW==0)chaintab[i].EnaAdd=1;
					}
				}
				break;
			case 1://vertical
				//lu
                if(State[chaintab[i].FirstP.x-1][chaintab[i].FirstP.y-2]==1){//black
					if(chaintab[i].BorW==1)chaintab[i].EnaAdd=2;
				}
				else{//white
					if(State[chaintab[i].FirstP.x-1][chaintab[i].FirstP.y-2]==2){
						if(chaintab[i].BorW==0)chaintab[i].EnaAdd=2;
					}
				}
				//rd
                if(State[chaintab[i].FirstP.x-1][chaintab[i].FirstP.y+chaintab[i].ChainLenth-1]==1){//black
					if(chaintab[i].BorW==1)chaintab[i].EnaAdd=1;
				}
				else{//white
					if(State[chaintab[i].FirstP.x-1][chaintab[i].FirstP.y+chaintab[i].ChainLenth-1]==2){
						if(chaintab[i].BorW==0)chaintab[i].EnaAdd=1;
					}
				}
				break;
			case 2://lu-rd
				//lu
				if(State[chaintab[i].FirstP.x-2][chaintab[i].FirstP.y-2]==1){//black
					if(chaintab[i].BorW==1)chaintab[i].EnaAdd=2;
				}
				else{//white
					if(State[chaintab[i].FirstP.x-2][chaintab[i].FirstP.y-2]==2){
						if(chaintab[i].BorW==0)chaintab[i].EnaAdd=2;
					}
				}
				//rd
                if(State[chaintab[i].FirstP.x+chaintab[i].ChainLenth-1][chaintab[i].FirstP.y+chaintab[i].ChainLenth-1]==1){//black
					if(chaintab[i].BorW==1)chaintab[i].EnaAdd=1;
				}
				else{//white
					if(State[chaintab[i].FirstP.x+chaintab[i].ChainLenth-1][chaintab[i].FirstP.y+chaintab[i].ChainLenth-1]==2){
						if(chaintab[i].BorW==0)chaintab[i].EnaAdd=1;
					}
				}
				break;
			case 3://ld-ru
				//ld
				if(State[chaintab[i].FirstP.x-2][chaintab[i].FirstP.y]==1){//black
					if(chaintab[i].BorW==1)chaintab[i].EnaAdd=2;
				}
				else{//white
					if(State[chaintab[i].FirstP.x-2][chaintab[i].FirstP.y]==2){
						if(chaintab[i].BorW==0)chaintab[i].EnaAdd=2;
					}
				}
				//ru
                if(State[chaintab[i].FirstP.x+chaintab[i].ChainLenth-1][chaintab[i].FirstP.y-chaintab[i].ChainLenth-1]==1){
					if(chaintab[i].BorW==1)chaintab[i].EnaAdd=1;
				}
				else{
					if(State[chaintab[i].FirstP.x+chaintab[i].ChainLenth-1][chaintab[i].FirstP.y-chaintab[i].ChainLenth-1]==2){
						if(chaintab[i].BorW==0)chaintab[i].EnaAdd=1;
					}
				}
				break;
		   }
		   }
         }
}
void MyChess::DelChain(int ID)
{
   int i;
   if(ChainCount!=0){
    for(i=0;i<ChainCount-1;i++){
	    if(chaintab[i].ChainID==ID)exchange(i,ChainCount-1);
    }
     ChainCount--;
   }
}
int MyChess::WhoWin()
{
	int i,j;
	for(i=0;i<ChainCount;i++){
         j=0;
		if(chaintab[i].ChainLenth==5){
			chaintab[i].BorW;
			return(chaintab[i].BorW);
		    break;
		}
	}
	return(2);
}

//DEL  void MyChess::fileout()
//DEL  {
//DEL    FILE *fp;
//DEL    fp=fopen("out.txt","w");
//DEL    fprintf(fp,"ID,BW,Len,P.x,P.y,Add,VH\n");
//DEL    for(int i=0;i<ChainCount;i++){
//DEL  	  if(chaintab[i].ChainLenth>0){
//DEL  	  fprintf(fp,"%i,%i,%i,%i-%i,%i,%i\n",i,
//DEL  		  chaintab[i].BorW,chaintab[i].ChainLenth,
//DEL  		  chaintab[i].FirstP.x,chaintab[i].FirstP.y,
//DEL  		  chaintab[i].EnaAdd,chaintab[i].VHState);
//DEL    
//DEL  	  }
//DEL    }
//DEL    fprintf(fp,"%i\n",ChainCount);
//DEL    fclose(fp);
//DEL  }

void MyChess::exchange(int i, int j)
{
	//i and j are the index;
	//i exchange from j;
   int t;CPoint p;
   t=chaintab[i].BorW;chaintab[i].BorW=chaintab[j].BorW;
   chaintab[j].BorW=t;
   t=chaintab[i].ChainID;chaintab[i].ChainID=chaintab[j].ChainID;
   chaintab[j].ChainID=t;
   t=chaintab[i].ChainLenth;chaintab[i].ChainLenth=chaintab[j].ChainLenth;
   chaintab[j].ChainLenth=t;
   t=chaintab[i].EnaAdd;chaintab[i].EnaAdd=chaintab[j].EnaAdd;
   chaintab[j].EnaAdd=t;
   p=chaintab[i].FirstP;chaintab[i].FirstP=chaintab[j].FirstP;
   chaintab[j].FirstP=p;
   t=chaintab[i].VHState;chaintab[i].VHState=chaintab[j].VHState;
   chaintab[j].VHState=t;
}



void MyChess::checkme()
{
	int t,t1;
	int pos;
	for(int i=ChainCount-1;i>=0;i--){
		pos=i;t=chaintab[i].ChainLenth*10+chaintab[i].EnaAdd;
		if(chaintab[i].EnaAdd==0&&chaintab[i].ChainLenth<5)t=0;
		  for(int j=i;j>=0;j--){
			t1=chaintab[j].ChainLenth*10+chaintab[j].EnaAdd;
			if(chaintab[j].EnaAdd==0&&chaintab[j].ChainLenth<5)t1=0;
			if(t1<t){pos=j;t=t1;}
		  }
		if(pos!=i)exchange(pos,i);
	}
	i=ChainCount-1;
	while(chaintab[i].EnaAdd==0&&i>=0){
		ChainCount--;
		i--;
	}
}

void MyChess::chiefchess()
{
  int i,j,temp;
  BOOL t;
  CPoint tempp;
  for(i=1;i<ChainCount;i++){
	  for(j=0;j<i;j++){
		  t=FALSE;
		  if(chaintab[i].BorW!=chaintab[j].BorW||chaintab[i].VHState!=chaintab[j].VHState)continue;
		  switch(chaintab[i].VHState){
		  case 0:
			  if(chaintab[i].FirstP.y==chaintab[j].FirstP.y)t=TRUE;
			  break;
		  case 1:
			  if(chaintab[i].FirstP.x==chaintab[j].FirstP.x)t=TRUE;
			  break;
		  case 2:
			  if(chaintab[i].FirstP.x-chaintab[j].FirstP.x
				  ==chaintab[i].FirstP.y-chaintab[j].FirstP.y)
				  t=TRUE;
			  break;
		  case 3:
			  if(chaintab[i].FirstP.x-chaintab[j].FirstP.x
				  ==chaintab[j].FirstP.y-chaintab[i].FirstP.y)
				  t=TRUE;
		  }
		  if(t){
			  t=FALSE;
			  switch(chaintab[i].EnaAdd){
			  case 1:
				   if(chaintab[j].EnaAdd==2||chaintab[j].EnaAdd==3){
					  if(chaintab[i].FirstP.x!=chaintab[j].FirstP.x){
						  temp=chaintab[i].FirstP.x-chaintab[j].FirstP.x;
						  if(temp==chaintab[j].ChainLenth+1)
							  t=TRUE;
					  }
					  else{
                         temp=chaintab[i].FirstP.y-chaintab[j].FirstP.y;
                         if(temp==chaintab[j].ChainLenth+1)
							  t=TRUE;
					  }
				   }
				   break;
			  case 2:
				  if(chaintab[j].EnaAdd==1||chaintab[j].EnaAdd==3){
                      if(chaintab[i].FirstP.x!=chaintab[j].FirstP.x){
						  temp=chaintab[j].FirstP.x-chaintab[i].FirstP.x;
						  if(temp==chaintab[i].ChainLenth+1)
							  t=TRUE;
					  }
					  else{
                         temp=chaintab[j].FirstP.y-chaintab[i].FirstP.y;
                         if(temp==chaintab[i].ChainLenth+1)
							  t=TRUE;
					  }
				  }
				  break;
			  case 3:
				  if(chaintab[j].EnaAdd==2||chaintab[j].EnaAdd==3){
                      if(chaintab[i].FirstP.x!=chaintab[j].FirstP.x){
						  temp=chaintab[i].FirstP.x-chaintab[j].FirstP.x;
						  if(temp==chaintab[j].ChainLenth+1)
							  t=TRUE;
					  }
					  else{
                         temp=chaintab[i].FirstP.y-chaintab[j].FirstP.y;
                         if(temp==chaintab[j].ChainLenth+1)
							  t=TRUE;
					  }
				  }
				  if(t)break;
				  if(chaintab[j].EnaAdd==1||chaintab[j].EnaAdd==3){
                      if(chaintab[i].FirstP.x!=chaintab[j].FirstP.x){
						  temp=chaintab[j].FirstP.x-chaintab[i].FirstP.x;
						  if(temp==chaintab[i].ChainLenth+1)
							  t=TRUE;
					  }
					  else{
                         temp=chaintab[j].FirstP.y-chaintab[i].FirstP.y;
                         if(temp==chaintab[i].ChainLenth+1)
							  t=TRUE;
					  }
				  }
			  }
		  }
		  if(t){
			  if(((chaintab[i].ChainLenth==2||chaintab[j].ChainLenth==2)&&
				  chaintab[i].ChainLenth+chaintab[j].ChainLenth<5)||
				  chaintab[i].ChainLenth+chaintab[j].ChainLenth==4){
				  chaintab[i].ChainLenth+=chaintab[j].ChainLenth;
				  if((chaintab[i].EnaAdd==2&&chaintab[j].EnaAdd==1)||
					  (chaintab[i].EnaAdd==1&&chaintab[j].EnaAdd==2)){
					  if(chaintab[i].ChainLenth+chaintab[j].ChainLenth==3)
						  DelChain(chaintab[i].ChainID);
					  else chaintab[i].EnaAdd=11;
				  }
				  if(chaintab[i].EnaAdd==3)
					  chaintab[i].EnaAdd=chaintab[j].EnaAdd+10;
			      DelChain(chaintab[j].ChainID);
			  }
		  }
	  }
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -