📄 formation.c
字号:
int lefts[3] = {f72_LEFT_DEFENSE, f72_LEFT_OUTSIDE_MIDFIELD, f72_LEFT_WING}; formation->GetUnit(LEFT_UNIT)->InitializeUnit(LEFT_UNIT, 3, lefts, 1);}int *Build_72_ReceiverList(int *PreferenceList, int position){ int NumOptions=0; int LocationSide = Mem->GetMyLocationSide(); switch ( position ){ case f72_LEFT_WING: case f72_RIGHT_WING: break; /* shoot */ case f72_RIGHT_OUTSIDE_MIDFIELD: case f72_LEFT_OUTSIDE_MIDFIELD: case f72_RIGHT_INSIDE_MIDFIELD: case f72_LEFT_INSIDE_MIDFIELD: case f72_RIGHT_DEFENSE: case f72_CENTER_DEFENSE: case f72_LEFT_DEFENSE: NumOptions = 2; PreferenceList[0] = (LocationSide == RIGHT) ? f72_RIGHT_WING : f72_LEFT_WING; PreferenceList[1] = (LocationSide == RIGHT) ? f72_LEFT_WING : f72_RIGHT_WING; break; case f72_RIGHT_GOALIE: case f72_LEFT_GOALIE: break; /* clear */ } for (int i = NumOptions; i<TEAM_SIZE; i++) PreferenceList[i] = position; /* Pad list with own number, meaning no receiver */}/************************ 3-3-4 Formation ********************************/#define f334_GOALIE_BUF 2#define f334_POSITION_BUF 3#define f334_GOALTENDERX (-52)#define f334_SWEEPERX (-43)#define f334_DEFENDERX (-35)#define f334_MIDFIELDERX 0#define f334_FORWARDX 30#define f334_LEFTY 25#define f334_INSIDELEFTY 15#define f334_CENTERY 0#define f334_INSIDERIGHTY (-f334_INSIDELEFTY)#define f334_RIGHTY (-f334_LEFTY)#define f334_HOMEXRANGE f334_FORWARDX#define f334_HOMEYRANGE f334_LEFTY#define f334_MAXXRANGE (f334_FORWARDX*2)#define f334_MAXYRANGE (((Y0+5) - f334_LEFTY)*2)#define f334_INSIDE_MAXYRANGE (((Y0+5) - f334_INSIDELEFTY)*2)void Initialize_334_Formation(Formation *formation){ /* set position within goal stay, in penalty box */ formation->SetPosition(f334_GOALIE, f334_GOALTENDERX, f334_CENTERY, f334_GOALIE_BUF, (X0- (-f334_GOALTENDERX))*2, GOAL_WIDTH, /*(-f334_GOALTENDERX - PA_X)*2, PA_Y*2, */ (X0- (-f334_GOALTENDERX))*2, GOAL_WIDTH, GOALIEMAXACTIVEDIST, MININACTIVEDIST, FALSE); /* set position inside penalty box, don't go more than half-way to mid */ formation->SetPosition(f334_SWEEPER, f334_SWEEPERX, f334_CENTERY, f334_POSITION_BUF, (X0- (-f334_SWEEPERX))*2, PA_Y*2, -f334_SWEEPERX - X0/2, (Y0+5)*2, GOALIEMAXACTIVEDIST, MININACTIVEDIST, TRUE); formation->SetPosition(f334_RIGHT_DEFENSE, f334_DEFENDERX, f334_INSIDERIGHTY, f334_POSITION_BUF, f334_HOMEXRANGE,f334_HOMEYRANGE, f334_MAXXRANGE ,f334_INSIDE_MAXYRANGE, MAXACTIVEDIST, MININACTIVEDIST, TRUE); formation->SetPosition(f334_LEFT_DEFENSE, f334_DEFENDERX, f334_INSIDELEFTY, f334_POSITION_BUF, f334_HOMEXRANGE,f334_HOMEYRANGE, f334_MAXXRANGE ,f334_INSIDE_MAXYRANGE, MAXACTIVEDIST, MININACTIVEDIST, TRUE); formation->SetPosition(f334_RIGHT_MIDFIELD, f334_MIDFIELDERX, f334_RIGHTY, f334_POSITION_BUF, f334_HOMEXRANGE,f334_HOMEYRANGE, f334_MAXXRANGE ,f334_MAXYRANGE, MAXACTIVEDIST, MININACTIVEDIST, TRUE); formation->SetPosition(f334_CENTER_MIDFIELD, f334_MIDFIELDERX, f334_CENTERY, f334_POSITION_BUF, f334_HOMEXRANGE,f334_HOMEYRANGE, f334_MAXXRANGE ,f334_MAXYRANGE, MAXACTIVEDIST, MININACTIVEDIST, TRUE); formation->SetPosition(f334_LEFT_MIDFIELD, f334_MIDFIELDERX, f334_LEFTY, f334_POSITION_BUF, f334_HOMEXRANGE,f334_HOMEYRANGE, f334_MAXXRANGE ,f334_MAXYRANGE, MAXACTIVEDIST, MININACTIVEDIST, TRUE); formation->SetPosition(f334_RIGHT_WING, f334_FORWARDX+5, f334_RIGHTY, f334_POSITION_BUF, f334_HOMEXRANGE,f334_HOMEYRANGE, f334_MAXXRANGE ,f334_MAXYRANGE, MAXACTIVEDIST, MININACTIVEDIST, TRUE); formation->SetPosition(f334_RIGHT_INSIDE_FORWARD, f334_FORWARDX, f334_CENTERY-10, f334_POSITION_BUF, f334_HOMEXRANGE,f334_HOMEYRANGE, f334_MAXXRANGE ,f334_MAXYRANGE, MAXACTIVEDIST, MININACTIVEDIST, TRUE); formation->SetPosition(f334_LEFT_INSIDE_FORWARD, f334_FORWARDX, f334_CENTERY+10, f334_POSITION_BUF, f334_HOMEXRANGE,f334_HOMEYRANGE, f334_MAXXRANGE ,f334_MAXYRANGE, MAXACTIVEDIST, MININACTIVEDIST, TRUE); formation->SetPosition(f334_LEFT_WING, f334_FORWARDX+5, f334_LEFTY, f334_POSITION_BUF, f334_HOMEXRANGE,f334_HOMEYRANGE, f334_MAXXRANGE ,f334_MAXYRANGE, MAXACTIVEDIST, MININACTIVEDIST, TRUE); /* Candidate receivers will be chosen on the fly here */ int dummylist[TEAM_SIZE]; for (int i=0; i<TEAM_SIZE; i++) formation->SetCandidateReceivers(i,0,dummylist); formation->AllocateUnits(6); int defenders[4] = {f334_GOALIE, f334_SWEEPER, f334_RIGHT_DEFENSE, f334_LEFT_DEFENSE}; formation->GetUnit(DEFENSIVE_UNIT)->InitializeUnit(DEFENSIVE_UNIT, 4, defenders, 0); int midfielders[3] = {f334_CENTER_MIDFIELD, f334_RIGHT_MIDFIELD, f334_LEFT_MIDFIELD}; formation->GetUnit(MIDFIELD_UNIT)->InitializeUnit(MIDFIELD_UNIT, 3, midfielders, 0); int forwards[4] = {f334_RIGHT_INSIDE_FORWARD, f334_LEFT_INSIDE_FORWARD, f334_RIGHT_WING, f334_LEFT_WING}; formation->GetUnit(FORWARD_UNIT)->InitializeUnit(FORWARD_UNIT, 4, forwards, 0); int rights[3] = {f334_RIGHT_DEFENSE, f334_RIGHT_MIDFIELD, f334_RIGHT_WING}; formation->GetUnit(RIGHT_UNIT)->InitializeUnit(RIGHT_UNIT, 3, rights, 1); int centers[5] = {f334_GOALIE, f334_SWEEPER, f334_CENTER_MIDFIELD, f334_RIGHT_INSIDE_FORWARD, f334_LEFT_INSIDE_FORWARD}; formation->GetUnit(CENTER_UNIT)->InitializeUnit(CENTER_UNIT, 5, centers, 2); int lefts[3] = {f334_LEFT_DEFENSE, f334_LEFT_MIDFIELD, f334_LEFT_WING}; formation->GetUnit(LEFT_UNIT)->InitializeUnit(LEFT_UNIT, 3, lefts, 1);}int *Build_334_ReceiverList(int *PreferenceList, int position){ int NumOptions=0; int Side = Mem->GetMyPositionSide(); int LocationSide = Mem->GetMyLocationSide(); switch ( position ){ case f334_LEFT_INSIDE_FORWARD: case f334_RIGHT_INSIDE_FORWARD: break; /* shoot */ case f334_LEFT_WING: NumOptions = (int_random(3) ? 3 : 0); /* shoot 1 in 3 times */ PreferenceList[0] = f334_LEFT_INSIDE_FORWARD; PreferenceList[1] = f334_RIGHT_INSIDE_FORWARD; PreferenceList[2] = f334_RIGHT_WING; break; case f334_RIGHT_WING: NumOptions = (int_random(3) ? 3 : 0); /* shoot 1 in 3 times */ PreferenceList[0] = f334_RIGHT_INSIDE_FORWARD; PreferenceList[1] = f334_LEFT_INSIDE_FORWARD; PreferenceList[2] = f334_LEFT_WING; break; case f334_CENTER_MIDFIELD: NumOptions = 6; PreferenceList[0] = (LocationSide == RIGHT) ? f334_RIGHT_WING : f334_LEFT_WING; PreferenceList[1] = (LocationSide == RIGHT) ? f334_LEFT_WING : f334_RIGHT_WING; PreferenceList[2] = (LocationSide == RIGHT) ? f334_RIGHT_INSIDE_FORWARD : f334_LEFT_INSIDE_FORWARD; PreferenceList[3] = (LocationSide == RIGHT) ? f334_LEFT_INSIDE_FORWARD : f334_RIGHT_INSIDE_FORWARD; PreferenceList[4] = (LocationSide == RIGHT) ? f334_RIGHT_MIDFIELD : f334_LEFT_MIDFIELD; PreferenceList[5] = (LocationSide == RIGHT) ? f334_LEFT_MIDFIELD : f334_RIGHT_MIDFIELD; break; case f334_RIGHT_MIDFIELD: case f334_LEFT_MIDFIELD: NumOptions = 5; PreferenceList[0] = (Side == RIGHT) ? f334_RIGHT_WING : f334_LEFT_WING; PreferenceList[1] = (Side == RIGHT) ? f334_RIGHT_INSIDE_FORWARD : f334_LEFT_INSIDE_FORWARD; PreferenceList[2] = (Side == RIGHT) ? f334_LEFT_INSIDE_FORWARD : f334_RIGHT_INSIDE_FORWARD; PreferenceList[3] = f334_CENTER_MIDFIELD; PreferenceList[4] = (Side == RIGHT) ? f334_LEFT_WING : RIGHT_WING; break; case f334_RIGHT_DEFENSE: case f334_LEFT_DEFENSE: case f334_SWEEPER: case f334_GOALIE: NumOptions = 7; PreferenceList[0] = (LocationSide == RIGHT) ? f334_RIGHT_MIDFIELD : f334_LEFT_MIDFIELD; PreferenceList[1] = (LocationSide == RIGHT) ? f334_RIGHT_WING : f334_LEFT_WING; PreferenceList[2] = (Side == RIGHT) ? f334_RIGHT_INSIDE_FORWARD : f334_LEFT_INSIDE_FORWARD; PreferenceList[3] = f334_CENTER_MIDFIELD; PreferenceList[4] = (LocationSide == RIGHT) ? f334_LEFT_MIDFIELD : f334_RIGHT_MIDFIELD; PreferenceList[5] = (Side == RIGHT) ? f334_LEFT_INSIDE_FORWARD : f334_RIGHT_INSIDE_FORWARD; PreferenceList[6] = (LocationSide == RIGHT) ? f334_LEFT_WING : f334_RIGHT_WING; break; } for (int i = NumOptions; i<TEAM_SIZE; i++) PreferenceList[i] = position; /* Pad list with own number, meaning no receiver */}/************************ 2-4-4 Formation ********************************/#define f244_GOALIE_BUF 2#define f244_POSITION_BUF 3#define f244_GOALTENDERX (-52)#define f244_SWEEPERX (-43)#define f244_DEFENDERX (-35)#define f244_MIDFIELDERX 0#define f244_FORWARDX 30#define f244_LEFTY 25#define f244_INSIDELEFTY 15#define f244_CENTERY 0#define f244_INSIDERIGHTY (-f244_INSIDELEFTY)#define f244_RIGHTY (-f244_LEFTY)#define f244_HOMEXRANGE f244_FORWARDX#define f244_HOMEYRANGE f244_LEFTY#define f244_MAXXRANGE (f244_FORWARDX*2)#define f244_MAXYRANGE (((Y0+5) - f244_LEFTY)*2)#define f244_INSIDE_MAXYRANGE (((Y0+5) - f244_INSIDELEFTY)*2)void Initialize_244_Formation(Formation *formation){ /* set position within goal stay, in penalty box */ formation->SetPosition(f244_GOALIE, f244_GOALTENDERX, f244_CENTERY, f244_GOALIE_BUF, (X0- (-f244_GOALTENDERX))*2, GOAL_WIDTH, /*(-f244_GOALTENDERX - PA_X)*2, PA_Y*2, */ (X0- (-f244_GOALTENDERX))*2, GOAL_WIDTH, GOALIEMAXACTIVEDIST, MININACTIVEDIST, FALSE); formation->SetPosition(f244_RIGHT_DEFENSE, f244_DEFENDERX, f244_INSIDERIGHTY, f244_POSITION_BUF, f244_HOMEXRANGE,f244_HOMEYRANGE, f244_MAXXRANGE ,f244_INSIDE_MAXYRANGE, MAXACTIVEDIST, MININACTIVEDIST, TRUE); formation->SetPosition(f244_LEFT_DEFENSE, f244_DEFENDERX, f244_INSIDELEFTY, f244_POSITION_BUF, f244_HOMEXRANGE,f244_HOMEYRANGE, f244_MAXXRANGE ,f244_INSIDE_MAXYRANGE, MAXACTIVEDIST, MININACTIVEDIST, TRUE); formation->SetPosition(f244_RIGHT_MIDFIELD, f244_MIDFIELDERX, f244_RIGHTY, f244_POSITION_BUF, f244_HOMEXRANGE,f244_HOMEYRANGE, f244_MAXXRANGE ,f244_MAXYRANGE, MAXACTIVEDIST, MININACTIVEDIST, TRUE); formation->SetPosition(f244_DEFENSIVE_CENTER_MIDFIELD, f244_MIDFIELDERX-10, f244_CENTERY, f244_POSITION_BUF, f244_HOMEXRANGE,f244_HOMEYRANGE, f244_MAXXRANGE ,f244_MAXYRANGE, MAXACTIVEDIST, MININACTIVEDIST, TRUE); formation->SetPosition(f244_OFFENSIVE_CENTER_MIDFIELD, f244_MIDFIELDERX+10, f244_CENTERY, f244_POSITION_BUF, f244_HOMEXRANGE,f244_HOMEYRANGE, f244_MAXXRANGE ,f244_MAXYRANGE, MAXACTIVEDIST, MININACTIVEDIST, TRUE); formation->SetPosition(f244_LEFT_MIDFIELD, f244_MIDFIELDERX, f244_LEFTY, f244_POSITION_BUF, f244_HOMEXRANGE,f244_HOMEYRANGE, f244_MAXXRANGE ,f244_MAXYRANGE, MAXACTIVEDIST, MININACTIVEDIST, TRUE); formation->SetPosition(f244_RIGHT_WING, f244_FORWARDX+5, f244_RIGHTY, f244_POSITION_BUF, f244_HOMEXRANGE,f244_HOMEYRANGE, f244_MAXXRANGE ,f244_MAXYRANGE, MAXACTIVEDIST, MININACTIVEDIST, TRUE); formation->SetPosition(f244_RIGHT_INSIDE_FORWARD, f244_FORWARDX, f244_CENTERY-10, f244_POSITION_BUF, f244_HOMEXRANGE,f244_HOMEYRANGE, f244_MAXXRANGE ,f244_MAXYRANGE, MAXACTIVEDIST, MININACTIVEDIST, TRUE); formation->SetPosition(f244_LEFT_INSIDE_FORWARD, f244_FORWARDX, f244_CENTERY+10, f244_POSITION_BUF, f244_HOMEXRANGE,f244_HOMEYRANGE, f244_MAXXRANGE ,f244_MAXYRANGE, MAXACTIVEDIST, MININACTIVEDIST, TRUE); formation->SetPosition(f244_LEFT_WING, f244_FORWARDX+5, f244_LEFTY, f244_POSITION_BUF, f244_HOMEXRANGE,f244_HOMEYRANGE, f244_MAXXRANGE ,f244_MAXYRANGE, MAXACTIVEDIST, MININACTIVEDIST, TRUE); /* Candidate receivers will be chosen on the fly here */ int dummylist[TEAM_SIZE]; for (int i=0; i<TEAM_SIZE; i++) formation->SetCandidateReceivers(i,0,dummylist); formation->AllocateUnits(6); int defenders[3] = {f244_GOALIE, f244_RIGHT_DEFENSE, f244_LEFT_DEFENSE}; formation->GetUnit(DEFENSIVE_UNIT)->InitializeUnit(DEFENSIVE_UNIT, 3, defenders, 0); int midfielders[4] = {f244_DEFENSIVE_CENTER_MIDFIELD, f244_OFFENSIVE_CENTER_MIDFIELD, f244_RIGHT_MIDFIELD, f244_LEFT_MIDFIELD}; formation->GetUnit(MIDFIELD_UNIT)->InitializeUnit(MIDFIELD_UNIT, 4, midfielders, 0); int forwards[4] = {f244_RIGHT_INSIDE_FORWARD, f244_LEFT_INSIDE_FORWARD, f244_RIGHT_WING, f244_LEFT_WING}; formation->GetUnit(FORWARD_UNIT)->InitializeUnit(FORWARD_UNIT, 4, forwards, 0); int rights[3] = {f244_RIGHT_DEFENSE, f244_RIGHT_MIDFIELD, f244_RIGHT_WING}; formation->GetUnit(RIGHT_UNIT)->InitializeUnit(RIGHT_UNIT, 3, rights, 1); int centers[5] = {f244_GOALIE, f244_DEFENSIVE_CENTER_MIDFIELD, f244_OFFENSIVE_CENTER_MIDFIELD, f244_RIGHT_INSIDE_FORWARD, f244_LEFT_INSIDE_FORWARD}; formation->GetUnit(CENTER_UNIT)->InitializeUnit(CENTER_UNIT, 5, centers, 2); int lefts[3] = {f244_LEFT_DEFENSE, f244_LEFT_MIDFIELD, f244_LEFT_WING}; formation->GetUnit(LEFT_UNIT)->InitializeUnit(LEFT_UNIT, 3, lefts, 1);}int *Build_244_ReceiverList(int *PreferenceList, int position){
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -