www.pudn.com > ccnu_robot.rar > InterFace.cpp


#include  
#include "InterFace.h" 
#include "Strategy.h" 
 
BOOL APIENTRY DllMain( HANDLE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved ) 
{     
    return TRUE; 
} 
 
extern "C" STRATEGY_API void Create ( Environment *env ) 
{ 
} 
 
extern "C" STRATEGY_API void Destroy ( Environment *env ) 
{ 
} 
 
extern "C" STRATEGY_API void Strategy ( Environment *env ) 
{ 
	int testInt = 100; 
	int nIndex  = 0; 
 
	switch (env->gameState) 
	{ 
		case 0: 
			{ 
				Position( &env->home[0], 70,70); 
				// 缺省情况下的策略 
				// 三个机器人进行追逐对方的策略 
 
//				MoonFollowOpponent ( &env->home [1], &env->opponent [2] ); 
//				MoonFollowOpponent ( &env->home [2], &env->opponent [3] ); 
//				MoonFollowOpponent ( &env->home [3], &env->opponent [4] ); 
				 
				// 第四个抢球 
//				MoonAttack ( &env->home [4], env ); 
				// 守门员守门 
//				Goalie1 ( &env->home [0], env ); 
 
			}				 
			break; 
 
		case FREE_BALL: 
			{ 
				// 跟随对方机器人 
				MoonFollowOpponent ( &env->home [1], &env->opponent [2] ); 
				MoonFollowOpponent ( &env->home [2], &env->opponent [3] ); 
				MoonFollowOpponent ( &env->home [3], &env->opponent [4] ); 
 
				// 抢球 
				MoonAttack ( &env->home [4], env ); 
 
				// 守门员守门 
				Goalie1 ( &env->home [0], env ); 
			} 
			break; 
 
		case PLACE_KICK: 
			{ 
				// 发生坠球时的策略 
				// 由二号小车发球 
				MoonAttack ( &env->home [2], env ); 
			}			 
			break;	 
			 
		case PENALTY_KICK: 
 
			// 发生罚球时的策略 
			switch (env->whosBall) 
			{ 
				case ANYONES_BALL: 
					MoonAttack ( &env->home [1], env ); 
					break; 
				case BLUE_BALL: 
					MoonAttack ( &env->home [4], env ); 
					break; 
				case YELLOW_BALL: 
					MoonAttack ( &env->home [0], env ); 
					break; 
			} 
			break; 
 
		case FREE_KICK: 
			{ 
				// 保存对方机器人的相关坐标 
				FILE * pDebugFile = NULL;  
				pDebugFile = fopen("debugfile.txt", "a");  
				 
				for( nIndex = 0; nIndex < PLAYERS_PER_SIDE; nIndex++ )  
				{ 
					fprintf( pDebugFile, "robot: %d x: %f y: %f z: %f \n",  
						nIndex, env->opponent[nIndex].pos.x,  
						env->opponent[nIndex].pos.y,  
						env->opponent[nIndex].pos.z );  
				}		 
				 
				fclose(pDebugFile);  
 
				// 发生任意球时的策略 
				MoonAttack ( &env->home [0], env ); 
			} 
			break; 
 
		case GOAL_KICK: 
			{ 
				// 发生点球时的策略 
				MoonAttack ( &env->home [0], env ); 
			}			 
			break; 
  } 
}