pitch.cpp

来自「2002年」· C++ 代码 · 共 179 行

CPP
179
字号
#include "pitch.h"
#include "types.h"
#include "serverparam.h"
#include "clientparam.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

Pitch::Pitch()
{
}

void Pitch::Initialize(bool rotate)
{	
	field = Rect(-ServerParam::semi_pitch_length, ServerParam::semi_pitch_length,
		-ServerParam::semi_pitch_width,ServerParam::semi_pitch_width);
	marginfield = Rect(-ServerParam::pitch_length/2 - ServerParam::pitch_margin,
		ServerParam::pitch_length/2 + ServerParam::pitch_margin, -ServerParam::pitch_width/2 - ServerParam::pitch_margin,
		ServerParam::pitch_width/2 + ServerParam::pitch_margin);
	l_field = Rect(-ServerParam::semi_pitch_length, ServerParam::semi_pitch_length,
		0, -ServerParam::semi_pitch_width);
	r_field = Rect(-ServerParam::semi_pitch_length, ServerParam::semi_pitch_length,
		0, ServerParam::semi_pitch_width);

	myfield = Rect(-ServerParam::semi_pitch_length, 0,
		-ServerParam::semi_pitch_width,ServerParam::semi_pitch_width);
	theirfield = Rect(0, ServerParam::semi_pitch_length, 
		-ServerParam::semi_pitch_width,ServerParam::semi_pitch_width);

	backfield = Rect(-ServerParam::semi_pitch_length, ServerParam::backfieldline,
		-ServerParam::semi_pitch_width,ServerParam::semi_pitch_width);
	forwardfield = Rect(ServerParam::midfieldline, ServerParam::semi_pitch_length,
		-ServerParam::semi_pitch_width, ServerParam::semi_pitch_width);
	midfield = Rect(ServerParam::backfieldline, ServerParam::midfieldline,
		-ServerParam::semi_pitch_width, ServerParam::semi_pitch_width);

	l_backfield = Rect(-ServerParam::semi_pitch_length, ServerParam::backfieldline, 
		-ServerParam::semi_pitch_width, ServerParam::left_wing);
	m_backfield = Rect(-ServerParam::semi_pitch_length, ServerParam::backfieldline,
		ServerParam::left_wing, ServerParam::right_wing);
	r_backfield = Rect(-ServerParam::semi_pitch_length, ServerParam::backfieldline,
		ServerParam::right_wing, ServerParam::semi_pitch_width);

	l_midfield = Rect(ServerParam::backfieldline, ServerParam::midfieldline,
		-ServerParam::semi_pitch_width, ServerParam::left_wing);
	m_midfield = Rect(ServerParam::backfieldline, ServerParam::midfieldline,
		ServerParam::left_wing,ServerParam::right_wing);
	r_midfield = Rect(ServerParam::backfieldline, ServerParam::midfieldline,
		ServerParam::right_wing, ServerParam::semi_pitch_width);

	l_forwardfield = Rect(ServerParam::midfieldline, ServerParam::semi_pitch_length,
		-ServerParam::semi_pitch_width, ServerParam::left_wing);
	m_forwardfield = Rect(ServerParam::midfieldline, ServerParam::semi_pitch_length,
		ServerParam::left_wing, ServerParam::right_wing);
	r_forwardfield = Rect(ServerParam::midfieldline, ServerParam::semi_pitch_length,
		ServerParam::right_wing, ServerParam::semi_pitch_width);

	my_penaltyarea = Rect(-ServerParam::semi_pitch_length, ServerParam::penalty_area_length -ServerParam::semi_pitch_length,
		ServerParam::penalty_area_width /2, - ServerParam::penalty_area_width /2);
	their_penaltyarea = Rect(ServerParam::semi_pitch_length, - ServerParam::penalty_area_length + ServerParam::semi_pitch_length,
		ServerParam::penalty_area_width /2, - ServerParam::penalty_area_width /2);

	my_goaltenderbox = Rect(-ServerParam::semi_pitch_length, -ServerParam::semi_pitch_length + ServerParam::goal_area_length,
		ServerParam::goal_area_width / 2, - ServerParam::goal_area_width / 2);

	their_goaltenderbox = Rect(ServerParam::semi_pitch_length, ServerParam::semi_pitch_length - ServerParam::goal_area_length,
		ServerParam::goal_area_width / 2, - ServerParam::goal_area_width / 2);

	my_goaldefendbox = Rect(-ServerParam::semi_pitch_length, -ServerParam::semi_pitch_length + ServerParam::goal_area_length - ServerParam::catch_area_l /2, 
		ServerParam::goal_area_width / 2, - ServerParam::goal_area_width / 2); 


	expanded_field = Rect(-ServerParam::semi_pitch_length - ClientParam::out_of_pitch_error, ServerParam::semi_pitch_length + ClientParam::out_of_pitch_error,
		-ServerParam::semi_pitch_width - ClientParam::out_of_pitch_error, ServerParam::semi_pitch_width + ClientParam::out_of_pitch_error);

	shrinked_field = Rect(-ServerParam::semi_pitch_length + ClientParam::out_of_pitch_error, ServerParam::semi_pitch_length - ClientParam::out_of_pitch_error,
		-ServerParam::semi_pitch_width + ClientParam::out_of_pitch_error, ServerParam::semi_pitch_width - ClientParam::out_of_pitch_error);

	mygoal = Vector(-ServerParam::semi_pitch_length, 0);
	theirgoal = Vector(ServerParam::semi_pitch_length, 0);

	l_mygoalpost = Vector(-ServerParam::semi_pitch_length, -ServerParam::goal_width / 2.0f);
	r_mygoalpost = Vector(-ServerParam::semi_pitch_length, ServerParam::goal_width / 2.0f);
	l_theirgoalpost = Vector(ServerParam::semi_pitch_length, -ServerParam::goal_width / 2.0f);
	r_theirgoalpost = Vector(ServerParam::semi_pitch_length, ServerParam::goal_width / 2.0f);

	SideLines[SL_Right].LineFromTwoPoints(Vector(ServerParam::semi_pitch_length, 1), Vector(ServerParam::semi_pitch_length, 0));
	SideLines[SL_Left].LineFromTwoPoints(Vector(-ServerParam::semi_pitch_length, 1), Vector(-ServerParam::semi_pitch_length, 0));
	SideLines[SL_Bottom].LineFromTwoPoints(Vector(1, ServerParam::semi_pitch_width), Vector(0, ServerParam::semi_pitch_width));
	SideLines[SL_Top].LineFromTwoPoints(Vector(1, -ServerParam::semi_pitch_width), Vector(0, -ServerParam::semi_pitch_width));

/**************************Initialize   Markers  *************************************/
	int i=0;
	Markers[i].set_pos(-ServerParam::pitch_length/2.0f, 0.0f ,rotate); i++; /* Goal_L */
	Markers[i].set_pos(ServerParam::pitch_length/2.0f, 0.0f ,rotate); i++; /* Goal_R */
	Markers[i].set_pos(0.0f, 0.0f , rotate); i++; /* Flag_C */
	Markers[i].set_pos(0.0f, -ServerParam::pitch_width/2.0f, rotate); i++; /* Flag_CT */
	Markers[i].set_pos(0.0f, ServerParam::pitch_width/2.0f, rotate); i++; /* Flag_CB */

	Markers[i].set_pos(-ServerParam::pitch_length/2.0f, -ServerParam::pitch_width/2.0f, rotate); i++; /* Flag_LT */
	Markers[i].set_pos(-ServerParam::pitch_length/2.0f, ServerParam::pitch_width/2.0f, rotate); i++; /* Flag_LB */
	Markers[i].set_pos(ServerParam::pitch_length/2.0f, -ServerParam::pitch_width/2.0f, rotate); i++; /* Flag_RT */
	Markers[i].set_pos(ServerParam::pitch_length/2.0f, ServerParam::pitch_width/2.0f, rotate); i++; /* Flag_RB */

	Markers[i].set_pos(-ServerParam::pitch_length/2.0f+ServerParam::penalty_area_length,
		                -ServerParam::penalty_area_width/2.0f, rotate); i++; /* Flag_PLT */
	Markers[i].set_pos(-ServerParam::pitch_length/2.0f+ServerParam::penalty_area_length, 0, rotate); i++; /* Flag_PLC */
  
	Markers[i].set_pos(-ServerParam::pitch_length/2.0f+ServerParam::penalty_area_length,
				ServerParam::penalty_area_width/2.0f, rotate); i++; /* Flag_PLB */
	Markers[i].set_pos(ServerParam::pitch_length/2.0f-ServerParam::penalty_area_length,
				-ServerParam::penalty_area_width/2.0f , rotate); i++; /* Flag_PRT */
	Markers[i].set_pos(ServerParam::pitch_length/2.0f-ServerParam::penalty_area_length, 0, rotate); i++; /* Flag_PRC */
	Markers[i].set_pos(ServerParam::pitch_length/2.0f-ServerParam::penalty_area_length,
				ServerParam::penalty_area_width/2.0f, rotate); i++; /* Flag_PRB */

	Markers[i].set_pos(-ServerParam::pitch_length/2.0f, -ServerParam::goal_width/2.0f, rotate); i++; /* Flag_GLT */
	Markers[i].set_pos(-ServerParam::pitch_length/2.0f, ServerParam::goal_width/2.0f, rotate); i++; /* Flag_GLB */
	Markers[i].set_pos(ServerParam::pitch_length/2.0f, -ServerParam::goal_width/2.0f, rotate); i++; /* Flag_GRT */
	Markers[i].set_pos(ServerParam::pitch_length/2.0f, ServerParam::goal_width/2.0f, rotate); i++; /* Flag_GRB */

	Markers[i].set_pos(-50.0f, -ServerParam::pitch_width/2.0f-ServerParam::pitch_margin, rotate); i++; /* Flag_TL50 */
	Markers[i].set_pos(-40.0f, -ServerParam::pitch_width/2.0f-ServerParam::pitch_margin, rotate); i++; /* Flag_TL40 */
	Markers[i].set_pos(-30.0f, -ServerParam::pitch_width/2.0f-ServerParam::pitch_margin, rotate); i++; /* Flag_TL30 */
	Markers[i].set_pos(-20.0f, -ServerParam::pitch_width/2.0f-ServerParam::pitch_margin, rotate); i++; /* Flag_TL20 */
	Markers[i].set_pos(-10.0f, -ServerParam::pitch_width/2.0f-ServerParam::pitch_margin, rotate); i++; /* Flag_TL10 */
	Markers[i].set_pos(0.0f, -ServerParam::pitch_width/2.0f-ServerParam::pitch_margin, rotate); i++; /* Flag_T0 */
	Markers[i].set_pos(10.0f, -ServerParam::pitch_width/2.0f-ServerParam::pitch_margin, rotate); i++; /* Flag_TR10 */
	Markers[i].set_pos(20.0f, -ServerParam::pitch_width/2.0f-ServerParam::pitch_margin, rotate); i++; /* Flag_TR20 */
	Markers[i].set_pos(30.0f, -ServerParam::pitch_width/2.0f-ServerParam::pitch_margin, rotate); i++; /* Flag_TR30 */
	Markers[i].set_pos(40.0f, -ServerParam::pitch_width/2.0f-ServerParam::pitch_margin, rotate); i++; /* Flag_TR40 */
	Markers[i].set_pos(50.0f, -ServerParam::pitch_width/2.0f-ServerParam::pitch_margin, rotate); i++; /* Flag_TR50 */

	Markers[i].set_pos(-50.0f, ServerParam::pitch_width/2.0f+ServerParam::pitch_margin, rotate); i++; /* Flag_BL50 */
	Markers[i].set_pos(-40.0f, ServerParam::pitch_width/2.0f+ServerParam::pitch_margin, rotate); i++; /* Flag_BL40 */
	Markers[i].set_pos(-30.0f, ServerParam::pitch_width/2.0f+ServerParam::pitch_margin, rotate); i++; /* Flag_BL30 */
	Markers[i].set_pos(-20.0f, ServerParam::pitch_width/2.0f+ServerParam::pitch_margin, rotate); i++; /* Flag_BL20 */
	Markers[i].set_pos(-10.0f, ServerParam::pitch_width/2.0f+ServerParam::pitch_margin, rotate); i++; /* Flag_BL10 */
	Markers[i].set_pos(0.0f, ServerParam::pitch_width/2.0f+ServerParam::pitch_margin, rotate); i++; /* Flag_B0 */
	Markers[i].set_pos(10.0f, ServerParam::pitch_width/2.0f+ServerParam::pitch_margin, rotate); i++; /* Flag_BR10 */
	Markers[i].set_pos(20.0f, ServerParam::pitch_width/2.0f+ServerParam::pitch_margin, rotate); i++; /* Flag_BR20 */
	Markers[i].set_pos(30.0f, ServerParam::pitch_width/2.0f+ServerParam::pitch_margin, rotate); i++; /* Flag_BR30 */
	Markers[i].set_pos(40.0f, ServerParam::pitch_width/2.0f+ServerParam::pitch_margin, rotate); i++; /* Flag_BR40 */
	Markers[i].set_pos(50.0f, ServerParam::pitch_width/2.0f+ServerParam::pitch_margin, rotate); i++; /* Flag_BR50 */

	Markers[i].set_pos(-ServerParam::pitch_length/2.0f-ServerParam::pitch_margin, -30, rotate); i++; /* Flag_LT30 */
	Markers[i].set_pos(-ServerParam::pitch_length/2.0f-ServerParam::pitch_margin, -20, rotate); i++; /* Flag_LT20 */
	Markers[i].set_pos(-ServerParam::pitch_length/2.0f-ServerParam::pitch_margin, -10, rotate); i++; /* Flag_LT10 */
	Markers[i].set_pos(-ServerParam::pitch_length/2.0f-ServerParam::pitch_margin, 0, rotate); i++; /* Flag_L0 */
	Markers[i].set_pos(-ServerParam::pitch_length/2.0f-ServerParam::pitch_margin, 10, rotate); i++; /* Flag_LB10 */
	Markers[i].set_pos(-ServerParam::pitch_length/2.0f-ServerParam::pitch_margin, 20, rotate); i++; /* Flag_LB20 */
	Markers[i].set_pos(-ServerParam::pitch_length/2.0f-ServerParam::pitch_margin, 30, rotate); i++; /* Flag_LB30 */

	Markers[i].set_pos(ServerParam::pitch_length/2.0f+ServerParam::pitch_margin, -30, rotate); i++; /* Flag_RT30 */
	Markers[i].set_pos(ServerParam::pitch_length/2.0f+ServerParam::pitch_margin, -20, rotate); i++; /* Flag_RT20 */
	Markers[i].set_pos(ServerParam::pitch_length/2.0f+ServerParam::pitch_margin, -10, rotate); i++; /* Flag_RT10 */
	Markers[i].set_pos(ServerParam::pitch_length/2.0f+ServerParam::pitch_margin, 0, rotate); i++; /* Flag_R0 */
	Markers[i].set_pos(ServerParam::pitch_length/2.0f+ServerParam::pitch_margin, 10, rotate); i++; /* Flag_RB10 */
	Markers[i].set_pos(ServerParam::pitch_length/2.0f+ServerParam::pitch_margin, 20, rotate); i++; /* Flag_RB20 */
	Markers[i].set_pos(ServerParam::pitch_length/2.0f+ServerParam::pitch_margin, 30, rotate); /* Flag_RB30 */

	for(i = 0; i < SP_num_markers + 1; i ++)
		Markers[i].set_objtype(OBJ_Marker);
/***********       Initialize Side Lines          *********************************/

	Lines[SL_Left].set_global_angle(270,rotate);
	Lines[SL_Right].set_global_angle(90,rotate);
	Lines[SL_Top].set_global_angle(0,rotate);
	Lines[SL_Bottom].set_global_angle(180,rotate);
	for(i = 0; i < SP_num_lines + 1; i ++)
		Lines[i].set_objtype(OBJ_Line);
}


Pitch::~Pitch()
{
}

⌨️ 快捷键说明

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