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

📄 march_n.cpp

📁 网页游戏赤壁
💻 CPP
📖 第 1 页 / 共 5 页
字号:
						{
							if(ForwardX>0)
								{MARCH_LineTrack[MARCH_TrackNum][COORD_X]=MARCH_LineTrack[MARCH_TrackNum-1][COORD_X]+1;}
							else{MARCH_LineTrack[MARCH_TrackNum][COORD_X]=MARCH_LineTrack[MARCH_TrackNum-1][COORD_X]-1;}
							MARCH_LineTrack[MARCH_TrackNum][COORD_Y]=MARCH_LineTrack[MARCH_TrackNum-1][COORD_Y];
							MARCH_TrackNum++;
							if(MARCH_TrackNum>NUMBER_OF_TRACK-2){return(MARCH_ERROR_GO_OUT_ARRAY);}
						}
					MARCH_LineTrack[MARCH_TrackNum][COORD_X]=MARCH_EndX;
					MARCH_LineTrack[MARCH_TrackNum][COORD_Y]=MARCH_EndY;
					MARCH_TrackNum++;
					if(MARCH_TrackNum>NUMBER_OF_TRACK-2){return(MARCH_ERROR_GO_OUT_ARRAY);}
					MARCH_LineTrack[MARCH_TrackNum][COORD_X]=-1;
					MARCH_LineTrack[MARCH_TrackNum][COORD_Y]=-1;
					MARCH_TrackNum++;
					if(MARCH_TrackNum>NUMBER_OF_TRACK-2){return(MARCH_ERROR_GO_OUT_ARRAY);}
					return(MARCH_OK);
				}
			j=BetweenX-i;
			X_Num=0;
			while(j>0)
				{
					X_Num++;
					j=j-i;
				}
			X_Num--;
			i=0;
			while(i<=BetweenY)
				{
					k=i*X_Num;
					for(j=1;j<=X_Num;j++)
						{
							if(ForwardX>0)
								{MARCH_LineTrack[MARCH_TrackNum][COORD_X]=MARCH_LineTrack[MARCH_TrackNum-1][COORD_X]+1;}
							else{MARCH_LineTrack[MARCH_TrackNum][COORD_X]=MARCH_LineTrack[MARCH_TrackNum-1][COORD_X]-1;}
							if(ForwardY>0)
								{MARCH_LineTrack[MARCH_TrackNum][COORD_Y]=MARCH_LineTrack[MARCH_TrackNum-1][COORD_Y];}
							else{MARCH_LineTrack[MARCH_TrackNum][COORD_Y]=MARCH_LineTrack[MARCH_TrackNum-1][COORD_Y];}
							MARCH_TrackNum++;
							if(MARCH_TrackNum>NUMBER_OF_TRACK-2){return(MARCH_ERROR_GO_OUT_ARRAY);}
							if((MARCH_LineTrack[MARCH_TrackNum-1][COORD_X]==MARCH_EndX)||(MARCH_LineTrack[MARCH_TrackNum-1][COORD_Y]==MARCH_EndY))
								{break;}
						}
					if((MARCH_LineTrack[MARCH_TrackNum-1][COORD_X]==MARCH_EndX)||(MARCH_LineTrack[MARCH_TrackNum-1][COORD_Y]==MARCH_EndY))
						{break;}
					if(MARCH_BeginY&0x0001)
						{
							if(ForwardX>0)
								{
									MARCH_LineTrack[MARCH_TrackNum][COORD_X]=MARCH_LineTrack[MARCH_TrackNum-1][COORD_X]+1;
									if(ForwardY>0)
										{MARCH_LineTrack[MARCH_TrackNum][COORD_Y]=MARCH_LineTrack[MARCH_TrackNum-1][COORD_Y]+1;}
									else{MARCH_LineTrack[MARCH_TrackNum][COORD_Y]=MARCH_LineTrack[MARCH_TrackNum-1][COORD_Y]-1;}
									MARCH_TrackNum++;
									if(MARCH_TrackNum>NUMBER_OF_TRACK-2){return(MARCH_ERROR_GO_OUT_ARRAY);}
									if((MARCH_LineTrack[MARCH_TrackNum-1][COORD_X]==MARCH_EndX)||(MARCH_LineTrack[MARCH_TrackNum-1][COORD_Y]==MARCH_EndY))
										{break;}
									MARCH_LineTrack[MARCH_TrackNum][COORD_X]=MARCH_LineTrack[MARCH_TrackNum-1][COORD_X];
									if(ForwardY>0)
										{MARCH_LineTrack[MARCH_TrackNum][COORD_Y]=MARCH_LineTrack[MARCH_TrackNum-1][COORD_Y]+1;}
									else{MARCH_LineTrack[MARCH_TrackNum][COORD_Y]=MARCH_LineTrack[MARCH_TrackNum-1][COORD_Y]-1;}
									MARCH_TrackNum++;
									if(MARCH_TrackNum>NUMBER_OF_TRACK-2){return(MARCH_ERROR_GO_OUT_ARRAY);}
									i++;
									i++;
									if((MARCH_LineTrack[MARCH_TrackNum-1][COORD_X]==MARCH_EndX)||(MARCH_LineTrack[MARCH_TrackNum-1][COORD_Y]==MARCH_EndY))
										{break;}
								}
							else{
									MARCH_LineTrack[MARCH_TrackNum][COORD_X]=MARCH_LineTrack[MARCH_TrackNum-1][COORD_X];
									if(ForwardY>0)
										{MARCH_LineTrack[MARCH_TrackNum][COORD_Y]=MARCH_LineTrack[MARCH_TrackNum-1][COORD_Y]+1;}
									else{MARCH_LineTrack[MARCH_TrackNum][COORD_Y]=MARCH_LineTrack[MARCH_TrackNum-1][COORD_Y]-1;}
									MARCH_TrackNum++;
									if(MARCH_TrackNum>NUMBER_OF_TRACK-2){return(MARCH_ERROR_GO_OUT_ARRAY);}
									if((MARCH_LineTrack[MARCH_TrackNum-1][COORD_X]==MARCH_EndX)||(MARCH_LineTrack[MARCH_TrackNum-1][COORD_Y]==MARCH_EndY))
										{break;}
									MARCH_LineTrack[MARCH_TrackNum][COORD_X]=MARCH_LineTrack[MARCH_TrackNum-1][COORD_X]-1;
									if(ForwardY>0)
										{MARCH_LineTrack[MARCH_TrackNum][COORD_Y]=MARCH_LineTrack[MARCH_TrackNum-1][COORD_Y]+1;}
									else{MARCH_LineTrack[MARCH_TrackNum][COORD_Y]=MARCH_LineTrack[MARCH_TrackNum-1][COORD_Y]-1;}
									MARCH_TrackNum++;
									if(MARCH_TrackNum>NUMBER_OF_TRACK-2){return(MARCH_ERROR_GO_OUT_ARRAY);}
									i++;
									i++;
									if((MARCH_LineTrack[MARCH_TrackNum-1][COORD_X]==MARCH_EndX)||(MARCH_LineTrack[MARCH_TrackNum-1][COORD_Y]==MARCH_EndY))
										{break;}
								}

						}
					else{
							if(ForwardX<0)
								{
									MARCH_LineTrack[MARCH_TrackNum][COORD_X]=MARCH_LineTrack[MARCH_TrackNum-1][COORD_X]-1;
									if(ForwardY>0)
										{MARCH_LineTrack[MARCH_TrackNum][COORD_Y]=MARCH_LineTrack[MARCH_TrackNum-1][COORD_Y]+1;}
									else{MARCH_LineTrack[MARCH_TrackNum][COORD_Y]=MARCH_LineTrack[MARCH_TrackNum-1][COORD_Y]-1;}
									MARCH_TrackNum++;
									if(MARCH_TrackNum>NUMBER_OF_TRACK-2){return(MARCH_ERROR_GO_OUT_ARRAY);}
									if((MARCH_LineTrack[MARCH_TrackNum-1][COORD_X]==MARCH_EndX)||(MARCH_LineTrack[MARCH_TrackNum-1][COORD_Y]==MARCH_EndY))
										{break;}
									MARCH_LineTrack[MARCH_TrackNum][COORD_X]=MARCH_LineTrack[MARCH_TrackNum-1][COORD_X];
									if(ForwardY>0)
										{MARCH_LineTrack[MARCH_TrackNum][COORD_Y]=MARCH_LineTrack[MARCH_TrackNum-1][COORD_Y]+1;}
									else{MARCH_LineTrack[MARCH_TrackNum][COORD_Y]=MARCH_LineTrack[MARCH_TrackNum-1][COORD_Y]-1;}
									MARCH_TrackNum++;
									if(MARCH_TrackNum>NUMBER_OF_TRACK-2){return(MARCH_ERROR_GO_OUT_ARRAY);}
									i++;
									i++;
									if((MARCH_LineTrack[MARCH_TrackNum-1][COORD_X]==MARCH_EndX)||(MARCH_LineTrack[MARCH_TrackNum-1][COORD_Y]==MARCH_EndY))
										{break;}
								}
							else{
									MARCH_LineTrack[MARCH_TrackNum][COORD_X]=MARCH_LineTrack[MARCH_TrackNum-1][COORD_X];
									if(ForwardY>0)
										{MARCH_LineTrack[MARCH_TrackNum][COORD_Y]=MARCH_LineTrack[MARCH_TrackNum-1][COORD_Y]+1;}
									else{MARCH_LineTrack[MARCH_TrackNum][COORD_Y]=MARCH_LineTrack[MARCH_TrackNum-1][COORD_Y]-1;}
									MARCH_TrackNum++;
									if(MARCH_TrackNum>NUMBER_OF_TRACK-2){return(MARCH_ERROR_GO_OUT_ARRAY);}
									if((MARCH_LineTrack[MARCH_TrackNum-1][COORD_X]==MARCH_EndX)||(MARCH_LineTrack[MARCH_TrackNum-1][COORD_Y]==MARCH_EndY))
										{break;}
									MARCH_LineTrack[MARCH_TrackNum][COORD_X]=MARCH_LineTrack[MARCH_TrackNum-1][COORD_X]+1;
									if(ForwardY>0)
										{MARCH_LineTrack[MARCH_TrackNum][COORD_Y]=MARCH_LineTrack[MARCH_TrackNum-1][COORD_Y]+1;}
									else{MARCH_LineTrack[MARCH_TrackNum][COORD_Y]=MARCH_LineTrack[MARCH_TrackNum-1][COORD_Y]-1;}
									MARCH_TrackNum++;
									if(MARCH_TrackNum>NUMBER_OF_TRACK-2){return(MARCH_ERROR_GO_OUT_ARRAY);}
									i++;
									i++;
									if((MARCH_LineTrack[MARCH_TrackNum-1][COORD_X]==MARCH_EndX)||(MARCH_LineTrack[MARCH_TrackNum-1][COORD_Y]==MARCH_EndY))
										{break;}
								}
						}
				}
			k=MARCH_EndX-MARCH_LineTrack[MARCH_TrackNum-1][COORD_X];
			#ifdef	CORRECT_LINE_TRACK
			if(k>=3)
				{
					int	ReturnCode;
					ReturnCode=MARCH_CorrectLine(MARCH_LineTrack[MARCH_TrackNum-1][COORD_X],MARCH_LineTrack[MARCH_TrackNum-1][COORD_Y],MARCH_EndX,MARCH_EndY);
					return(ReturnCode);
				}
			#endif		
			if((k<0)&&(ForwardX>0))
				{
					#ifdef	DEBUG
					OutputDebugString("You have go out by X coord\n");
					#endif
					return(MARCH_ERROR_GO_OUT_X_IN_GET_LINE);
				}
			if((k>0)&&(ForwardX<0))
				{
					#ifdef	DEBUG
					OutputDebugString("You have go out by X coord\n");
					#endif
					return(MARCH_ERROR_GO_OUT_X_IN_GET_LINE);
				}
			if(k<0){k=-k;}
			if(ForwardX>0)
				{
					for(i=1;i<=k;i++)
						{
							MARCH_LineTrack[MARCH_TrackNum][COORD_X]=MARCH_LineTrack[MARCH_TrackNum-1][COORD_X]+1;
							MARCH_LineTrack[MARCH_TrackNum][COORD_Y]=MARCH_LineTrack[MARCH_TrackNum-1][COORD_Y];
							MARCH_TrackNum++;
							if(MARCH_TrackNum>NUMBER_OF_TRACK-2){return(MARCH_ERROR_GO_OUT_ARRAY);}
						}
				}
			else{
					for(i=1;i<=k;i++)
						{
							MARCH_LineTrack[MARCH_TrackNum][COORD_X]=MARCH_LineTrack[MARCH_TrackNum-1][COORD_X]-1;
							MARCH_LineTrack[MARCH_TrackNum][COORD_Y]=MARCH_LineTrack[MARCH_TrackNum-1][COORD_Y];
							MARCH_TrackNum++;
							if(MARCH_TrackNum>NUMBER_OF_TRACK-2){return(MARCH_ERROR_GO_OUT_ARRAY);}
						}
				}
			k=MARCH_EndY-MARCH_LineTrack[MARCH_TrackNum-1][COORD_Y];
			if((k<0)&&(ForwardY>0))
				{
					#ifdef	DEBUG
					OutputDebugString("You have go out by Y coord\n");
					#endif
					return(MARCH_ERROR_GO_OUT_Y_IN_GET_LINE);
				}
			if((k>0)&&(ForwardY<0))
				{
					#ifdef	DEBUG
					OutputDebugString("You have go out by Y coord\n");
					#endif
					return(MARCH_ERROR_GO_OUT_Y_IN_GET_LINE);
				}
			if(k<0){k=-k;}
			k=k>>1;
			if(ForwardY>0)
				{
					for(i=1;i<=k;i++)
						{
							MARCH_LineTrack[MARCH_TrackNum][COORD_X]=MARCH_LineTrack[MARCH_TrackNum-1][COORD_X];
							MARCH_LineTrack[MARCH_TrackNum][COORD_Y]=MARCH_LineTrack[MARCH_TrackNum-1][COORD_Y]+2;
							MARCH_TrackNum++;
							if(MARCH_TrackNum>NUMBER_OF_TRACK-2){return(MARCH_ERROR_GO_OUT_ARRAY);}
						}
				}
			else{
					for(i=1;i<=k;i++)
						{
							MARCH_LineTrack[MARCH_TrackNum][COORD_X]=MARCH_LineTrack[MARCH_TrackNum-1][COORD_X];
							MARCH_LineTrack[MARCH_TrackNum][COORD_Y]=MARCH_LineTrack[MARCH_TrackNum-1][COORD_Y]-2;
							MARCH_TrackNum++;
							if(MARCH_TrackNum>NUMBER_OF_TRACK-2){return(MARCH_ERROR_GO_OUT_ARRAY);}
						}
				}
			if(MARCH_LineTrack[MARCH_TrackNum-1][COORD_Y]!=MARCH_EndY)
				{
					MARCH_LineTrack[MARCH_TrackNum][COORD_X]=MARCH_LineTrack[MARCH_TrackNum-1][COORD_X];
					if(ForwardY>0)
						{MARCH_LineTrack[MARCH_TrackNum][COORD_Y]=MARCH_LineTrack[MARCH_TrackNum-1][COORD_Y]+1;}
					else{MARCH_LineTrack[MARCH_TrackNum][COORD_Y]=MARCH_LineTrack[MARCH_TrackNum-1][COORD_Y]-1;}
					MARCH_TrackNum++;
					if(MARCH_TrackNum>NUMBER_OF_TRACK-2){return(MARCH_ERROR_GO_OUT_ARRAY);}
				}
			MARCH_LineTrack[MARCH_TrackNum][COORD_X]=MARCH_EndX;
			MARCH_LineTrack[MARCH_TrackNum][COORD_Y]=MARCH_EndY;
			MARCH_TrackNum++;
			if(MARCH_TrackNum>NUMBER_OF_TRACK-2){return(MARCH_ERROR_GO_OUT_ARRAY);}
			MARCH_LineTrack[MARCH_TrackNum][COORD_X]=-1;
			MARCH_LineTrack[MARCH_TrackNum][COORD_Y]=-1;
			MARCH_TrackNum++;
			if(MARCH_TrackNum>NUMBER_OF_TRACK-2){return(MARCH_ERROR_GO_OUT_ARRAY);}
			return(MARCH_OK);

		}

}




int MARCH_CheckAroundPoint(int	AroundPointX,int	AroundPointY,int	MARCH_Level)
// 判断所给的坐标的点上的属性
{
	DWORD		i,j;
	struct	MAP_UNIT_CODE_STRUCT	UnitDeCode;
	struct	MAP_GROUND_CODE_STRUCT	GroundDeCode;


	if((AroundPointY<=3)||(AroundPointY>=MAP_Lib.szNum.cy-3))
		{return(MARCH_ERROR_COORD_Y);}
	if((AroundPointX<=1)||(AroundPointX>=MAP_Lib.szNum.cx-1))
		{return(MARCH_ERROR_COORD_X);}
	i=MAP_GetUnitData(AroundPointX,AroundPointY);
	if(i!=MAP_DATA_NONE)
		{
			MAP_UnitDeCode(i,&UnitDeCode);
			if(UnitDeCode.nFile<27)
				{
					if((UnitDeCode.nFile==16)||(UnitDeCode.nFile==17))
						{return(MARCH_PLAIN);}
					else{return(MARCH_BUILDING);} 
				}
			else
				{
					if((UnitDeCode.nFile>=27)&&(UnitDeCode.nFile<=33))
						{return(MARCH_ONE_PEOPLE);}
					if(UnitDeCode.nFile==49){return(MARCH_FOUR_SHIP);}
					if((UnitDeCode.nFile==34)||(UnitDeCode.nFile==37)){return(MARCH_TWO_PEOPLE);}
					if((UnitDeCode.nFile==35)||(UnitDeCode.nFile==36)||(UnitDeCode.nFile==38)||(UnitDeCode.nFile==39)||(UnitDeCode.nFile==45))
						{return(MARCH_ONE_PEOPLE);}
					if((UnitDeCode.nFile>=40)&&(UnitDeCode.nFile<=44)){return(MARCH_TWO_PEOPLE);}
					if(UnitDeCode.nFile==46){return(MARCH_ONE_SHIP);}
					if((UnitDeCode.nFile==47)||(UnitDeCode.nFile==48)||(UnitDeCode.nFile==52)){return(MARCH_TWO_SHIP);}
					if((UnitDeCode.nFile==50)||(UnitDeCode.nFile==51)){return(MARCH_ONE_PEOPLE);}
					else{return(MARCH_ERROR_DECODE);}
				}

		}
	else
		{
			j=MAP_GetGroundData(MARCH_Level,AroundPointX,AroundPointY);
			if((j==MAP_DATA_NONE)&&(MARCH_Level==0)){return(MARCH_ERROR_GROUND);}
			if((j==MAP_DATA_NONE)&&(MARCH_Level!=0)){return(MARCH_EMPTY);}
			MAP_GroundDeCode((WORD)j,&GroundDeCode);
			if( GroundDeCode.nAttr!=MAP_SPECIAL_NONE&&GroundDeCode.nAttr != MAP_SPECIAL_CUT_WOOD&&GroundDeCode.nAttr != MAP_SPECIAL_CUT_WHEAT )
				{return(MARCH_SPECIAL);}
			if( GroundDeCode.nFile==3 )
				{
					if( GroundDeCode.nCol==12 )
						{return( MARCH_WATER );}
					else{return( MARCH_RIVERBED );}
				}
			else
				{
					if((GroundDeCode.nFile==0)||(GroundDeCode.nFile==1)||(GroundDeCode.nFile==2)||(GroundDeCode.nFile==4)||(GroundDeCode.nFile==5))
						{return( MARCH_PLAIN );}
					else{
							if(GroundDeCode.nFile==12)
								{return(MARCH_FORTRESS);}
							else{if((GroundDeCode.nFile==6)||(GroundDeCode.nFile==11))
									{return(MARCH_WALL);}
								 else{return( MARCH_HILL );}
								}
						}
				}
		}
	return(MARCH_OK);
}
 

void	MARCH_TransBack(int	*NowX, int	*NowY, int	LastX, int	LastY, int	Forward)
//从上一点的坐标和前进的方向得到下一点的坐标
{

	if(LastY&0x0001)
		{
			switch(Forward)
				{
					case	0:
							*NowX=LastX;
							*NowY=LastY-2;
							return;
							break;
					case	1:
							*NowX=LastX+1;
							*NowY=LastY-1;
							return;
							break;
					case	2:
							*NowX=LastX+1;
							*NowY=LastY;
							return;
							break;

⌨️ 快捷键说明

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