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 + -
显示快捷键?