- Best Y Inverso
O Best Y Inverso é responsável por achar a melhor posição para o Striker receber o passe. Ao analisar o passe, percebemos que uma boa posição tem que possuir um caminho livre do Attacker, pois é ele que irá mandar a bola, e também um caminho livre para o gol, pois é para lá que a bola irá depois. Assim, iremos analisar duas retas: uma reta que sai do Attacker e outra que sai do gol. A interseção dessas duas retas será a melhor posição para o Striker ficar esperando a bola.
- Reta do Gol
Para encontrar a reta do gol, foi utilizado uma estratégia parecida com a do Best Y. Primeiro escolhemos o ponto de referência do gol inimigo, que leva em conta a posição do goleiro deles, escolhendo o setor que está mais aberto. Depois analisamos cada robô inimigo, vendo qual região ele bloqueia, para assim determinar as seções onde não há inimigos. Definimos também dois ângulos limites, o superior e inferior, que são baseados no campo e na posição do Attacker. Analisando só as seções que estão entre esses ângulos limites, pegamos a maior. A reta que passa no meio dessa seção e pelo centro do gol será a reta do gol.
![Área analisada para encontrar a reta do gol] (Imagem.002.jpeg)
![Reta do gol] (Imagem.003.jpeg)
No código, a implementação é feita assim:
1. Primeiro é encontrado o ângulo do Attacker. Esse será um dos ângulos limites.
2. Depois são calculados os ângulos de cada robô inimigo. Caso o robô esteja no nosso lado do campo, ele não é considerado, logo seus valores são -5. Para os outros robôs, são calculados dois ângulos, o que inicia e o que termina o gap.
3. Desse array de ângulos dos robôs inimigos é gerado um outro array só com os ângulos de início dos gaps do inimigo. O novo array criado é ordenado de menor para maior.
4. Usando esse novo array, o primeiro array é ordenado pelo ângulo inicial menor
5. Após isso, ele começa a fazer os cálculos dos intervalos. Ele faz isso subtraindo o valor do ângulo do inicio do inimigo do angulo do inicio do intervalo, e analisando esse tamanho. Se for maior que o theta que ele te guardado, ele calcula o novo theta e substitui.
6. No final, ele faz uma última checagem do intervalo que falta, que é o final do ultimo dos inimigos e com o final do intervalo geral que está sendo analisado.
- Reta do Attacker
Para encontrar a reta do Attaker, fazemos a mesma análise. Olhamos para a posição do Attacker, e analisamos o campo a partir do ponto mais proximo da área da defesa inimiga que está na linha dos fundos até o seu canto oposto (veja a figura abaixo). Esses pontos foram escolhidos para prevenir que a posição final do attacker seja fora do campo. Depois determinamos as seções onde não há robôs inimigos e selecionamos a maior seção. A reta que passa pelo Attacker e pelo meio dessa seção será a reta do Attacker.
![Área analisada para encontrar a reta do Attacker] (attackerline1.001.jpeg)
![Reta do Attacker] (attackerline2.001.jpeg)
- Posição Final
Assim, fazendo a interseção das duas retas, encontramos a melhor posição para o Striker ficar esperando a bola.
![Posição final] (Imagem.004.jpeg)
Atualizado por Carla Cosenza há mais de 5 anos · 7 revisões