Example #1
0
int WorldInfo::chooseScenarioByScore(void)
{
	Scenario *AScenario;
	if(this->score>=3)
	{
		AScenario = new FullDefence();
		this->pActiveScenario=AScenario;
		AScenario->displayInfo();
		return AScenario->ID;
	}
	if(this->score<=-2)
	{
		AScenario = new Rush();
		this->pActiveScenario=AScenario;
		AScenario->displayInfo();
		return AScenario->ID;
	}
	AScenario = new FlankAttack();
	this->pActiveScenario=AScenario;
	AScenario->displayInfo();
	return AScenario->ID;
}
Example #2
0
int WorldInfo::chooseScenarioByAllyPosition(void)
{
	Scenario *AScenario;
/* 
число полевых игроков, за чужой половине
	int NPlayersOnEnemyHalf=0;
	// число полевых игроков на чужом фланге
	int NPlayersOnEnemyFlanks=0;
*/      
        // число полевых игроков, за чужой половине
	int nPlayersOnEnemyHalf = 0;
	// число полевых игроков на чужом фланге
	int nPlayersOnEnemyFlanks = 0;
	// число полевых игроков у ворот(во вратарской)
	int nPlayersInEnemyGoalKeaperArea = 0;
	// число полевых игроков в чужой штрафной зоне
	int nPlayersInEnemyPenaltyArea = 0;

	// Вратаря не считаем, его index=0
	for(int i=1;i<Players_in_team;i++)
	{
		switch(pAllyState[i]->getPositionZone())
		{
			case TOP_LEFT_FLANK:
				break;

			case TOP_RIGHT_FLANK:
				nPlayersOnEnemyHalf++;
				nPlayersOnEnemyFlanks++;
				break;

			case LEFT_GOALKEAPER_AREA:
				break;

			case RIGHT_GOALKEAPER_AREA:
				nPlayersOnEnemyHalf++;
				nPlayersInEnemyGoalKeaperArea++;
				break;

			case DOWN_LEFT_FLANK:
				break;

			case DOWN_RIGHT_FLANK:
				nPlayersOnEnemyHalf++;
				nPlayersOnEnemyFlanks++;
				break;

			case LEFT_PENALTY_AREA:
				break;

			case RIGHT_PENALTY_AREA:
				nPlayersOnEnemyHalf++;
				nPlayersInEnemyPenaltyArea++;
				break;

			case LEFT_CENTER:
				break;

			case RIGHT_CENTER:
				nPlayersOnEnemyHalf++;
				break;

			
			case UNKNOWN:
			case OUT:
			default:
				break;
		}
	}
	if(nPlayersOnEnemyHalf>3)
	{
		AScenario = new Rush();
		this->pActiveScenario=AScenario;
		AScenario->displayInfo();
		return AScenario->ID;
	}

	if(nPlayersOnEnemyHalf== 0)
	{
		AScenario = new FullDefence();
		this->pActiveScenario=AScenario;
		AScenario->displayInfo();
		return AScenario->ID;
	}

	if(nPlayersOnEnemyHalf>=2 || nPlayersOnEnemyFlanks>=1)
	{
		AScenario = new FlankAttack();
		this->pActiveScenario=AScenario;
		AScenario->displayInfo();
		return AScenario->ID;
	}
	AScenario= new Scenario();
	return AScenario->ID;
}