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

📄 vexillumview.cpp

📁 用VC++实现得网络军棋对战
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	}
	if(i&&j)
		return 1;
	else 
		return 0;
}
void CVexillumView::KCanTouch(int xzchess,int fromx,int fromy,int dijichess,int tox,int toy)
{

	if((xzchess==nochess)&&(dijichess!=nochess)&&(qzwz[tox][toy].diyou==0))
	{//选中敌方棋子
		xzbz.qizibiaozhi=dijichess;
		xzbz.x=tox;
		xzbz.y=toy;
		text=8;
		InvalidateRect(NULL,FALSE);
		UpdateWindow(); // 重画窗口
	}
	if((xzchess==nochess)&&(dijichess!=nochess)&&qzwz[tox][toy].diyou)
	{
		//你点中的是我方棋子
		text=6;
		InvalidateRect(NULL,FALSE);
		UpdateWindow(); // 重画窗口
	}
	if((xzchess==nochess)&&(dijichess==nochess))
	{
		//哪里又没有棋,你瞎点什么
		text=7;
		InvalidateRect(NULL,FALSE);
		UpdateWindow(); // 重画窗口
	}

	if((xzchess!=nochess)&&(dijichess!=nochess)&&(qzwz[tox][toy].diyou==0))
	{//选中自己棋子
		if((fromx==tox)&&(fromy==toy))
		{
			qzwz[fromx][fromy].k=1;
			xzbz.qizibiaozhi=nochess;
		}
		else
		{
			qzwz[fromx][fromy].k=1;
			xzbz.qizibiaozhi=dijichess;
			xzbz.x=tox;
			xzbz.y=toy;
		}
		text=8;
		InvalidateRect(NULL,FALSE);
		UpdateWindow(); // 重画窗口
	}
	if((xzchess!=nochess)&&(dijichess==nochess))
	{
		//从有棋的地方向没有棋 的地方走棋
		CanMove(xzchess,fromx,fromy,nochess,tox,toy);
	}
	else
	{
		if((xzchess!=nochess)&&(dijichess!=nochess)&&(qzwz[tox][toy].diyou))
		{
			CanMove(xzchess,fromx,fromy,dijichess,tox,toy);//移动敌方棋子,吃我方棋子
		}
	}
}
void CVexillumView::CanMove(int xzchess,int fromx,int fromy,int dijichess,int tox,int toy)
{
	//能否到达搜索

	int r;
	r=0;
	if((xzchess==0)||(xzchess==1))
	{
		r=0;	//不能移动---------------------------------------待写
		
	}
	if(xzchess==3)	//工兵-------------------------------------------工兵待写
		{
			for(int hhh=0;hhh<80;hhh++)
				gzjlj[hhh].z=0;
			GongBingCorrelation(fromx,fromy);
			gbk=0;
		for(int qx=0;qx<8;qx++)
			for(int wx=0;wx<30;wx++)
			{
				if(zjlj[qx][wx].z)
				{
					gzjlj[gbk].x=zjlj[qx][wx].x;
					gzjlj[gbk].y=zjlj[qx][wx].y;
					gzjlj[gbk].z=1;
					gbk++;
				}
			}
			for(int rr5=0;rr5<80;rr5++)
				if(gzjlj[rr5].z)
					if((gzjlj[rr5].x==tox)&&(gzjlj[rr5].y==toy))
						r=1;
		}
	if((xzchess==2)||((xzchess>3)&&(xzchess<12)))
	{
		Correlation(fromx,fromy);
		for(int q6=0;q6<8;q6++)
			for(int qq6=0;qq6<30;qq6++)
			{
				if(zjlj[q6][qq6].z)
					if((zjlj[q6][qq6].x==tox)&&(zjlj[q6][qq6].y==toy))
						r=1;
			}
	}
	if(r)
	{
			qzwz[fromx][fromy].k=1;
			qzwz[tox][toy].k=1;
		
		if(qzwz[tox][toy].qizibiaozhi==junqi)
		{kkkkk=5;text=2;}
		qqqqqqqq++;
		if(dijichess==nochess)
		{	
			//------------------------------调用估值函数-------------------------
			GuZhi(dijichess,tox,toy,fromx,fromy,0);
			ChuanZhi(fromx,fromy,tox,toy);
			qzwz[tox][toy].diyou=qzwz[fromx][fromy].diyou;
			qzwz[tox][toy].qizibiaozhi=qzwz[fromx][fromy].qizibiaozhi;
			qzwz[fromx][fromy].qizibiaozhi=nochess;
			xzbz.qizibiaozhi=nochess;

		}
		else
		{
			if((xzchess==gongbing)&&(dijichess==dilei))
			{
				int u;
				for(int r=0;r<12;r++)
				{
					u=guess[fromx][fromy].qizi[r];
					guess[fromx][fromy].qizi[r]=0;
					if(r==gongbing)
						JunJian(gongbing,u);
					else
						JunFei(r,u);
				}
				guess[fromx][fromy].qizi[gongbing]=1000;
				ChuanZhi(fromx,fromy,tox,toy);
				qzwz[tox][toy].diyou=0;
				qzwz[tox][toy].qizibiaozhi=gongbing;
				qzwz[fromx][fromy].qizibiaozhi=nochess;
				xzbz.qizibiaozhi=nochess;
			}
			else
			{
				if((xzchess==2)||(dijichess==2)||(dijichess==1)||(qzwz[tox][toy].qizibiaozhi==qzwz[fromx][fromy].qizibiaozhi))
				{
					//----------------------------调用估值函数------------------------
					GuZhi(xzchess,tox,toy,fromx,fromy,0);
					qzwz[tox][toy].qizibiaozhi=nochess;
					qzwz[fromx][fromy].qizibiaozhi=nochess;
					xzbz.qizibiaozhi=nochess;
				}
				else
				{
					//---------------------------调用估值函数------------------------
					if(qzwz[tox][toy].qizibiaozhi>qzwz[fromx][fromy].qizibiaozhi)
					{
						GuZhi(dijichess,tox,toy,fromx,fromy,1);
						xzbz.qizibiaozhi=nochess;
						qzwz[fromx][fromy].qizibiaozhi=nochess;
						guess[fromx][fromy].z=0;
					}
					else
					{
						GuZhi(dijichess,tox,toy,fromx,fromy,-1);
						ChuanZhi(fromx,fromy,tox,toy);
						qzwz[tox][toy].diyou=qzwz[fromx][fromy].diyou;
						qzwz[tox][toy].qizibiaozhi=qzwz[fromx][fromy].qizibiaozhi;
						qzwz[fromx][fromy].qizibiaozhi=nochess;
						xzbz.qizibiaozhi=nochess;
					}
				}
			}
		}
		if(kkkkk!=5)
			text=9;
		InvalidateRect(NULL,FALSE);
		UpdateWindow(); // 重画窗口
	}
	else
	{
		if((xzchess==dilei)||(xzchess==junqi))
		{
			text=10;
			InvalidateRect(NULL,FALSE);
			UpdateWindow(); // 重画窗口
		}
		else
		{
			text=11;
			InvalidateRect(NULL,FALSE);
			UpdateWindow(); // 重画窗口	
		}
	}

}
void CVexillumView::Correlation(int x,int y)
{//位置相关函数
	for(int a=0;a<8;a++)
		for(int aa=0;aa<30;aa++)
			zjlj[a][aa].z=0;
		for(int i=0;i<8;i++)
		{
			switch(i)
			{
			case 0://向上搜索
				if(x>0)
				{
					int k;
					k=0;
					if((qzwz[x-1][y].qizibiaozhi!=nochess)&&((qzwz[x-1][y].wzbz==2)||(qzwz[x][y].diyou==qzwz[x-1][y].diyou)))
					;
					else
					{
						if((y==0)||(y==4))
						{
							if((x>1)&&(qzwz[x][y].wzbz==3))
							{
								for(int q=0;q<20;q++)
								{
									if((x-q)>1)
									{
										if(qzwz[x-q-1][y].qizibiaozhi==nochess)
										{
											zjlj[i][k].x=x-q-1;
											zjlj[i][k].y=y;
											zjlj[i][k].z=1;
											k++;
										}
										else
										{
											if(qzwz[x-q-1][y].diyou==qzwz[x][y].diyou)
												q=30;
											else{
												zjlj[i][k].x=x-q-1;
												zjlj[i][k].y=y;
												zjlj[i][k].z=1;
												q=30;
											}
										}
									}
									else
										q=30;
								}
							}
							else
							{
								zjlj[i][k].x=x-1;
								zjlj[i][k].y=y;
								zjlj[i][k].z=1;
							}
						}
						else
						{
							if(x==8)
							{
								if(y==2)
								{
									zjlj[i][k].x=5;
									zjlj[i][k].y=y;
									zjlj[i][k].z=1;
								}
							}
							else
							{
								zjlj[i][k].x=x-1;
								zjlj[i][k].y=y;
								zjlj[i][k].z=1;
							}
						}
					}
				}
				break;
			case 1://向右前方搜索
				int k;
				k=0;
				if((x>0)&&(y<4))
				{
					if((qzwz[x-1][y+1].qizibiaozhi!=nochess)&&((qzwz[x-1][y+1].diyou==qzwz[x][y].diyou)||(qzwz[x-1][y+1].wzbz==2)))
						;
					else
					{
						if(((y==0)||(y==2))&&((x==3)||(x==5)||(x==10)||(x==12)))
						{
							zjlj[i][k].x=x-1;
							zjlj[i][k].y=y+1;
							zjlj[i][k].z=1;
						}
						if(((y==1)||(y==3))&&((x==2)||(x==4)||(x==9)||(x==11)))
						{
							zjlj[i][k].x=x-1;
							zjlj[i][k].y=y+1;
							zjlj[i][k].z=1;
						}
					}
				}
				break;
			case 2://向右搜索
				if(y<4)
				{
					int k;
					k=0;
					if((qzwz[x][y+1].qizibiaozhi!=nochess)&&((qzwz[x][y+1].wzbz==2)||(qzwz[x][y+1].diyou==qzwz[x][y].diyou)))
					;
					else
					{
						if((x==1)||(x==5)||(x==8)||(x==12))
						{
						
							for(int q1=0;q1<6;q1++)
							{
								if((y+q1)<4)
								{
									if(qzwz[x][y+q1+1].qizibiaozhi==nochess)
									{
										zjlj[i][k].x=x;
										zjlj[i][k].y=y+q1+1;
										zjlj[i][k].z=1;
										k++;
									}
									else
									{
										if(qzwz[x][y+q1+1].diyou==qzwz[x][y].diyou)
											q1=6;
										else
										{
											zjlj[i][k].x=x;
											zjlj[i][k].y=y+q1+1;
											zjlj[i][k].z=1;
											q1=6;
										}
									}
								}
								else
									q1=6;
							}
						}
						else
						{
							zjlj[i][k].x=x;
							zjlj[i][k].y=y+1;
							zjlj[i][k].z=1;
						}
					}
				}
				break;
			case 3:
				if((x<12)&&(y<4))
				{
					int k;
					k=0;
					if((qzwz[x+1][y+1].qizibiaozhi!=nochess)&&((qzwz[x+1][y+1].wzbz==2)||(qzwz[x+1][y+1].diyou==qzwz[x][y].diyou)))
						;
					else
					{
						if(((y==0)||(y==2))&&((x==1)||(x==3)||(x==8)||(x==10)))
						{
							zjlj[i][k].x=x+1;
							zjlj[i][k].y=y+1;
							zjlj[i][k].z=1;
						}
						if(((y==1)||(y==3))&&((x==2)||(x==4)||(x==9)||(x==11)))
						{
							zjlj[i][k].x=x+1;
							zjlj[i][k].y=y+1;
							zjlj[i][k].z=1;
						}
					}
				}
				break;
			case 4://向下搜索
				if(x<13)
				{
					int k;
					k=0;
					if((qzwz[x+1][y].qizibiaozhi!=nochess)&&((qzwz[x+1][y].diyou==qzwz[x][y].diyou)||(qzwz[x+1][y].wzbz==2)))
						;
					else
					{
						if((y==0)||(y==4))
						{
							if((x>0)&&(x<12))
							{
								for(int q=0;q<20;q++)
								{
									if((x+q)<12)
									{
										if(qzwz[x+q+1][y].qizibiaozhi==nochess)
										{
											zjlj[i][k].x=x+q+1;
											zjlj[i][k].y=y;
											zjlj[i][k].z=1;
											k++;
										}
										else
										{
											if(qzwz[x+q+1][y].diyou==qzwz[x][y].diyou)
												q=30;
											else
											{
												zjlj[i][k].x=x+q+1;
												zjlj[i][k].y=y;
												zjlj[i][k].z=1;
												q=30;
											}
										}
									}
								}
							}
							else
							{
								zjlj[i][k].x=x+1;
								zjlj[i][k].y=y;
								zjlj[i][k].z=1;
							}
						}
						else
						{
							if(x==5)
							{
								if(y==2)
								{
								zjlj[i][k].x=8;
								zjlj[i][k].y=y;
								zjlj[i][k].z=1;
								}
							}
							else
							{
								zjlj[i][k].x=x+1;
								zjlj[i][k].y=y;
								zjlj[i][k].z=1;
							}
						}
					}
				}
				break;
			case 5://左下
				if((x<13)&&(y>0))
				{
					int k;
					k=0;
					if((qzwz[x+1][y-1].qizibiaozhi!=nochess)&&((qzwz[x+1][y-1].diyou==qzwz[x][y].diyou)||(qzwz[x+1][y-1].wzbz==2)))
						;
					else
					{
						if(((y==1)||(y==3))&&((x==2)||(x==4)||(x==9)||(x==11)))
						{
							zjlj[i][k].x=x+1;
							zjlj[i][k].y=y-1;
							zjlj[i][k].z=1;
						}
						if(((y==2)||(y==4))&&((x==1)||(x==3)||(x==8)||(x==10)))
						{
							zjlj[i][k].x=x+1;
							zjlj[i][k].y=y-1;
							zjlj[i][k].z=1;
						}
					}
				}
				break;
			case 6:
				if(y>0)
				{
					int k;
					k=0;
					if((qzwz[x][y-1].qizibiaozhi!=nochess)&&((qzwz[x][y-1].diyou==qzwz[x][y].diyou)||(qzwz[x][y-1].wzbz==2)))
						;
					else
					{
						if((x==1)||(x==5)||(x==8)||(x==12))
						{
							for(int q=0;q<5;q++)
							{
								if((y-q)>0)
								{
									if(qzwz[x][y-q-1].qizibiaozhi==nochess)
									{
										zjlj[i][k].x=x;
										zjlj[i][k].y=y-q-1;
										zjlj[i][k].z=1;
										k++;
									}
									else
									{
										if(qzwz[x][y-q-1].diyou==qzwz[x][y].diyou)
											q=6;
										else
										{
											zjlj[i][k].x=x;
											zjlj[i][k].y=y-q-1;
											zjlj[i][k].z=1;
											q=6;
										}
									}
								}
								else
									q=6;
							}
						}
						else
						{
							zjlj[i][k].x=x;
							zjlj[i][k].y=y-1;
							zjlj[i][k].z=1;
						}
					}
				}
				break;
			case 7:
				if((x>0)&&(y>0))
				{
					int k;
					k=0;
					if((qzwz[x-1][y-1].qizibiaozhi!=nochess)&&((qzwz[x-1][y-1].diyou==qzwz[x][y].diyou)||(qzwz[x-1][y-1].wzbz==2)))
						;
					else
					{
						if(((y==1)||(y==3))&&((x==2)||(x==4)||(x==9)||(x==11)))
						{
							zjlj[i][k].x=x-1;
							zjlj[i][k].y=y-1;
							zjlj[i][k].z=1;
						}
						if(((y==2)||(y==4))&&((x==3)||(x==5)||(x==10)||(x==12)))
						{
							zjlj[i][k].x=x-1;
							zjlj[i][k].y=y-1;
							zjlj[i][k].z=1;
						}
					}
				}
				break;
			}
		}
		for(int qq=0;qq<8;qq++)
			for(int qq1=0;qq1<30;qq1++)
			{
				if((zjlj[qq][qq1].x==6)||(zjlj[qq][qq1].x==7))
					zjlj[qq][qq1].z=0;
			}
}
void CVexillumView::BuJu()
{
	for(int aa=0;aa<6;aa++)
		for(int aaa=0;aaa<5;aaa++)
			qzwz[aa][aaa].qizibiaozhi=nochess;
	int k1;
	srand( (unsigned)time( NULL ) );
	k1=rand()%2+rand()%2+rand()%2;
	if((k1==0)||(k1==2))
	{
		if(k1==0)
		{
			qzwz[0][0].qizibiaozhi=paizhang;
			qzwz[0][1].qizibiaozhi=junqi;
			qzwz[0][2].qizibiaozhi=tuanzhang;
			qzwz[0][3].qizibiaozhi=dilei;
			qzwz[0][4].qizibiaozhi=lianzhang;
			qzwz[1][0].qizibiaozhi=shizhang;
			qzwz[1][1].qizibiaozhi=siling;
			qzwz[1][2].qizibiaozhi=dilei;
			qzwz[1][3].qizibiaozhi=junzhang;
			qzwz[1][4].qizibiaozhi=lianzhang;
			qzwz[2][0].qizibiaozhi=yingzhang;
			qzwz[2][2].qizibiaozhi=gongbing;
			qzwz[2][4].qizibiaozhi=dilei;
			qzwz[3][0].qizibiaozhi=gongbing;	
			qzwz[3][1].qizibiaozhi=tuanzhang;
			qzwz[3][3].qizibiaozhi=shizhang;
			qzwz[3][4].qizibiaozhi=lianzhang;
		}
		if(k1==2)
		{
			qzwz[0][0].qizibiaozhi=lianzhang;
			qzwz[0][1].qizibiaozhi=dilei;
			qzwz[0][2].qizibiaozhi=yingzhang;
			qzwz[0][3].qizibiaozhi=junqi;
			qzwz[0][4].qizibiaozhi=paizhang;
			qzwz[1][0].qizibiaozhi=lianzhang;
			qzwz[1][1].qizibiaozhi=junzhang;
			qzwz[1][2].qizibiaozhi=dilei;
			qzwz[1][3].qizibiaozhi=siling;
			qzwz[1][4].qizibiaozhi=shizhang;
			qzwz[2][0].qizibiaozhi=dilei;
			qzwz[2][2].qizibiaozhi=gongbing;
			qzwz[2][4].qizibiaozhi=yingzhang;
			qzwz[3][0].qizibiaozhi=lianzhang;

⌨️ 快捷键说明

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