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

📄 utils.cpp

📁 2002年
💻 CPP
字号:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <iostream>

#include "utils.h"
#include "client.h"
#include "paramreaderutil.h"
#include "log.h"
#include "clientparam.h"
#include "serverparam.h"
//#include "worldmodel.h"
#include "perceptron.h"
//#include "skill.h"
#include "agent.h"

#ifdef _WINDOWS
#define TEXT_OUT 30000
extern HWND hWND;
#endif

/***************************** my_error  **********************************/

char error[CP_MaxLines][8096];
int current = ClientParam::MaxLines;
int lines = -1;
char outstring[1000];

#ifdef _WINDOWS
int enable_my_error = 0;
#else // _LINUX
int enable_my_error = 1;
#endif

/* Set Log */

void my_error(char *format,...)
{
#ifdef _LINUX
  if (!enable_my_error) return;
	
  va_list argptr;
  va_start(argptr,format);
  vsprintf(outstring, format, argptr);
  va_end(argptr);
  
  printf("%s (player %d, time %d): %s\n", MyTeamName,
   Agent::MyNumber, situation.CurrentTime, outstring);
#endif
	 return;
}

/******** Get Options from command lines or file ******************************/

void GetOptions(int argc,char** argv){
	option_t opt[] = {		
		{"log_dir",		    (void *)&ClientParam::logdir,		V_STRING},
		{"pas_file",			(void *)&ClientParam::pasfile,		V_STRING},		
		{"fm_offense_weight_file",		(void *)&ClientParam::FM_offense_weightfile,	V_STRING},
		{"fm_defense_weight_file",		(void *)&ClientParam::FM_defense_weightfile,	V_STRING},
		{"cb_weight_file",		(void*)&ClientParam::CB_weightfile,		V_STRING},
		
		{"offsen_weight_file",	(void *)&ClientParam::Off_sen_weightfile,	V_STRING},	
		{"df_sensitivity_weight_file",	(void *)&ClientParam::DF_Sensitivity_weightfile,	V_STRING}, 
		{"mark_weight_file",	(void *)&ClientParam::Mark_priority_weightfile, V_STRING}, 
		{"block_weight_file",	(void *)&ClientParam::Block_priority_weightfile, V_STRING}, 
		
		{"kick_oa_weightfile_a",	(void *)&ClientParam::KickOA_weightfile_A, V_STRING},
		{"kick_oa_weightfile_b",	(void *)&ClientParam::KickOA_weightfile_B, V_STRING},
		{"kick_oa_weightfile_c",	(void *)&ClientParam::KickOA_weightfile_C, V_STRING},
		{"kick_oa_weightfile_d",	(void *)&ClientParam::KickOA_weightfile_D, V_STRING},	
		{"deviation_weight_file",   (void *)&ClientParam::deviation_weightfile,V_STRING}, 
		{"df_formation_priority_file", (void *)&ClientParam::DF_formation_priority_file,V_STRING}, 
		{"df_press_priority_file",  (void *)&ClientParam::DF_press_priority_file,V_STRING},       
		
		{"reconnect",                   (void *)&ServerParam::IP_reconnect,          V_INT},
		
		{"team_name",        		(void *)&MyTeamName,            V_STRING},
		{"goalie",        		(void *)&ClientParam::goalie,             V_ONOFF},
		{"UNum",                (void *)&ClientParam::Number,             V_INT},
		
		{"player_1_attackness",                (void *)&FieldParam::FP_attackness[0],  V_FLOAT},
		{"player_1_leftness",                (void *)&FieldParam::FP_leftness[0],  V_FLOAT},
		{"player_1_aggressiveness",                (void *)&FieldParam::FP_aggressiveness[0],  V_FLOAT},
		{"player_1_creativeness",                (void *)&FieldParam::FP_creativeness[0],  V_FLOAT},
		{"player_2_attackness",                (void *)&FieldParam::FP_attackness[1],  V_FLOAT},
		{"player_2_leftness",                (void *)&FieldParam::FP_leftness[1],  V_FLOAT},
		{"player_2_aggressiveness",                (void *)&FieldParam::FP_aggressiveness[1],  V_FLOAT},
		{"player_2_creativeness",                (void *)&FieldParam::FP_creativeness[1],  V_FLOAT},
		{"player_3_attackness",                (void *)&FieldParam::FP_attackness[2],  V_FLOAT},
		{"player_3_leftness",                (void *)&FieldParam::FP_leftness[2],  V_FLOAT},
		{"player_3_aggressiveness",                (void *)&FieldParam::FP_aggressiveness[2],  V_FLOAT},
		{"player_3_creativeness",                (void *)&FieldParam::FP_creativeness[2],  V_FLOAT},
		{"player_4_attackness",                (void *)&FieldParam::FP_attackness[3],  V_FLOAT},
		{"player_4_leftness",                (void *)&FieldParam::FP_leftness[3],  V_FLOAT},
		{"player_4_aggressiveness",                (void *)&FieldParam::FP_aggressiveness[3],  V_FLOAT},
		{"player_4_creativeness",                (void *)&FieldParam::FP_creativeness[3],  V_FLOAT},
		{"player_5_attackness",                (void *)&FieldParam::FP_attackness[4],  V_FLOAT},
		{"player_5_leftness",                (void *)&FieldParam::FP_leftness[4],  V_FLOAT},
		{"player_5_aggressiveness",                (void *)&FieldParam::FP_aggressiveness[4],  V_FLOAT},
		{"player_5_creativeness",                (void *)&FieldParam::FP_creativeness[4],  V_FLOAT},
		{"player_6_attackness",                (void *)&FieldParam::FP_attackness[5],  V_FLOAT},
		{"player_6_leftness",                (void *)&FieldParam::FP_leftness[5],  V_FLOAT},
		{"player_6_aggressiveness",                (void *)&FieldParam::FP_aggressiveness[5],  V_FLOAT},
		{"player_6_creativeness",                (void *)&FieldParam::FP_creativeness[5], V_FLOAT},
		{"player_7_attackness",                (void *)&FieldParam::FP_attackness[6],  V_FLOAT},
		{"player_7_leftness",                (void *)&FieldParam::FP_leftness[6],  V_FLOAT},
		{"player_7_aggressiveness",                (void *)&FieldParam::FP_aggressiveness[6],  V_FLOAT},
		{"player_7_creativeness",                (void *)&FieldParam::FP_creativeness[6],  V_FLOAT},
		{"player_8_attackness",                (void *)&FieldParam::FP_attackness[7],  V_FLOAT},
		{"player_8_leftness",                (void *)&FieldParam::FP_leftness[7],  V_FLOAT},
		{"player_8_aggressiveness",                (void *)&FieldParam::FP_aggressiveness[7],  V_FLOAT},
		{"player_8_creativeness",                (void *)&FieldParam::FP_creativeness[7],  V_FLOAT},
		{"player_9_attackness",                (void *)&FieldParam::FP_attackness[8],  V_FLOAT},
		{"player_9_leftness",                (void *)&FieldParam::FP_leftness[8],  V_FLOAT},
		{"player_9_aggressiveness",                (void *)&FieldParam::FP_aggressiveness[8],  V_FLOAT},
		{"player_9_creativeness",                (void *)&FieldParam::FP_creativeness[8],  V_FLOAT},
		{"player_10_attackness",               (void *)&FieldParam::FP_attackness[9], V_FLOAT},
		{"player_10_leftness",               (void *)&FieldParam::FP_leftness[9], V_FLOAT},
		{"player_10_aggressiveness",                (void *)&FieldParam::FP_aggressiveness[9],  V_FLOAT},
		{"player_10_creativeness",                (void *)&FieldParam::FP_creativeness[9],  V_FLOAT},
		{"player_11_attackness",               (void *)&FieldParam::FP_attackness[10], V_FLOAT},
		{"player_11_leftness",               (void *)&FieldParam::FP_leftness[10], V_FLOAT},
		{"player_11_aggressiveness",                (void *)&FieldParam::FP_aggressiveness[10],  V_FLOAT},
		{"player_11_creativeness",                (void *)&FieldParam::FP_creativeness[10],  V_FLOAT},
		{"goalie_number",               (void *)&FieldParam::FP_goalie_number        , V_INT},
		{"shoot_avoidgoalie",           (void *)&ClientParam::shoot_avoidgoalie    , V_FLOAT},
		{"\0",				NULL, 			       	V_NONE}
  } ;
  
  int i = 0;
  ParamReader paramreader;
  while(true){
	  if(opt[i].optname[0] == 0) break;
	  paramreader.AddItem(opt[i]);
	  i++;
  }
  i = 0;
  while(true){
	   if(ServerParam::OptionList[i].optname[0] == 0) break;
	  paramreader.AddItem(ServerParam::OptionList[i]);
	  i++;
  }
  paramreader.GetOptions(argc, argv); 

#ifdef _OffClient
#ifdef _Off_Client_Num
  ClientParam::Number = _Off_Client_Num;
#endif
#endif
  
  /*****************************************************************/
  ServerParam::half_time = ServerParam::half_time * 1000 / ServerParam::simulator_step ;
  ServerParam::kickable_area = ServerParam::kickable_margin + ServerParam::ball_size + ServerParam::player_size ;
  
  if ( !ClientParam::goalie )
	  ClientParam::goalie = bool(ClientParam::Number == FieldParam::FP_goalie_number);
  
  if (ServerParam::IP_reconnect)
	  ClientParam::Number = ServerParam::IP_reconnect;
  
  Perceptron::MyTeamNameLen = strlen(Perceptron::MyTeamName);

  char fname_templet[100];
  strcpy(fname_templet, ClientParam::logdir);
  int t_len = strlen(fname_templet);
  if(fname_templet[t_len-1] != '/' && fname_templet[t_len-1] != '\\'){
	  strcat(fname_templet, "/");
  }
  strcat(fname_templet, MyTeamName);

  strcpy(ClientParam::matfile, fname_templet);
  strcat(ClientParam::matfile, "_mat");
  
#ifdef _OffClient
  strcat(fname_templet,"_off");
#endif

  strcpy(ClientParam::logfile, fname_templet);
  strcat(ClientParam::logfile, "_log");
  strcpy(ClientParam::recfile, fname_templet);
  strcat(ClientParam::recfile, "_rec");
  
  char n[10];
  sprintf(n,"_%d",ClientParam::Number);
  strcat(ClientParam::matfile, n);
  strcat(ClientParam::logfile, n);
  strcat(ClientParam::recfile, n);
  
  ClientParam::attackness = FieldParam::FP_attackness[Idx(ClientParam::Number)];
  ClientParam::leftness = FieldParam::FP_leftness[Idx(ClientParam::Number)];
  ClientParam::aggressiveness = FieldParam::FP_aggressiveness[Idx(ClientParam::Number)];
  ClientParam::creativeness = FieldParam::FP_creativeness[Idx(ClientParam::Number)];
  
  sprintf(ClientParam::appname, "%s-No.%d", MyTeamName, ClientParam::Number);
  
  ServerParam::ball_decay_ln = (float)log(ServerParam::ball_decay);
  ClientParam::turnball_radius_threshold = ServerParam::ball_size + ServerParam::player_size + ClientParam::collision_buffer;
  ServerParam::semi_pitch_length = ServerParam::pitch_length / 2;
  ServerParam::semi_pitch_width  = ServerParam::pitch_width / 2;
  ServerParam::midfieldline = ServerParam::semi_pitch_length * 0.48f;
  ServerParam::backfieldline = -ServerParam::semi_pitch_length * 0.285f;
  ServerParam::left_wing = - ServerParam::semi_pitch_width * 0.353f; 
  ServerParam::right_wing = -ServerParam::left_wing;
  ClientParam::control_margin = ServerParam::kickable_area + 0.15f;
  ServerParam::pitch_diameter = (float)sqrt(Sqr(ServerParam::pitch_width) + Sqr(ServerParam::pitch_length)); 
  ClientParam::safecatch_width = (float)sqrt(Sqr(ServerParam::catch_area_l) - Sqr(ServerParam::ball_speed_max /2));
}

⌨️ 快捷键说明

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