+ All Categories
Home > Documents > Angry Birds Basic Game Playing Softwarejeiks.net/wp-content/uploads/2014/10/AIBirds.pdf ·...

Angry Birds Basic Game Playing Softwarejeiks.net/wp-content/uploads/2014/10/AIBirds.pdf ·...

Date post: 04-Feb-2020
Category:
Upload: others
View: 8 times
Download: 0 times
Share this document with a friend
14
Angry Birds Basic Game Playing Software version1.31 Por: XiaoYu (Gary) Ge, Stephen Gould, Jochen Renz Sahan Abeyasinghe, Jim Keys, Andrew Wang, Peng Zhang Traduzido por: Jacson Rodrigues Correia da Silva Research School of Computer Science The Australian National University 2014-05-06 This work is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License and can be accessed via http://www.aibirds.org/basic-game-playing- software.html
Transcript
Page 1: Angry Birds Basic Game Playing Softwarejeiks.net/wp-content/uploads/2014/10/AIBirds.pdf · 2014-10-05 · Angry Birds Basic Game Playing Software version1.31 Por: XiaoYu (Gary) Ge,

Angry Birds Basic Game Playing Software

version1.31

Por:

XiaoYu (Gary) Ge, Stephen Gould, Jochen RenzSahan Abeyasinghe, Jim Keys, Andrew Wang, Peng Zhang

Traduzido por:Jacson Rodrigues Correia da Silva

Research School of Computer ScienceThe Australian National University

2014-05-06

This work is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0Unported License and can be accessed via http://www.aibirds.org/basic-game-playing-software.html

Page 2: Angry Birds Basic Game Playing Softwarejeiks.net/wp-content/uploads/2014/10/AIBirds.pdf · 2014-10-05 · Angry Birds Basic Game Playing Software version1.31 Por: XiaoYu (Gary) Ge,

SumárioInstalação..............................................................................................................................................1

Instalação do ambiente JAVA..........................................................................................................1Instalação do Chrome......................................................................................................................1Instalação do Software.....................................................................................................................1Instalação do Plugin.........................................................................................................................1Executando o Software....................................................................................................................2

Server-Client Architecture....................................................................................................................2Angry Birds Extension.....................................................................................................................3AI Agent...........................................................................................................................................3Proxy................................................................................................................................................3Porta de Comunicação S/C..............................................................................................................3Módulo Vision.................................................................................................................................3Obtendo MBRs................................................................................................................................4Obtendo o Contorno Real (Real Shape)..........................................................................................5Módulo Trajectory...........................................................................................................................5

O Agente Naive (standalone) – uma demonstração..............................................................................6Agente Naive...................................................................................................................................6

Jogando com o Agente Naive...............................................................................................................7Carregando a Janela do Jogo...........................................................................................................7Executando o Agente Naive.............................................................................................................7

Criando seu próprio Agente Inteligente................................................................................................8Representação dos Objetos..............................................................................................................8Tire um Screenshot e Segmente a imagem......................................................................................9Acessando o estado do Jogo............................................................................................................9Módulo Trajectory.........................................................................................................................10Efetuando tiros...............................................................................................................................10

Self-Manage mode....................................................................................................................10Auto-Arrange mode...................................................................................................................11

Outros métodos úteis..........................................................................................................................11Obter o tipo de pássaro do estilingue.............................................................................................11Obter todo o suporte/recursos de um objeto..................................................................................11Reachability...................................................................................................................................12

Compile utilizando o ANT.................................................................................................................12

Page 3: Angry Birds Basic Game Playing Softwarejeiks.net/wp-content/uploads/2014/10/AIBirds.pdf · 2014-10-05 · Angry Birds Basic Game Playing Software version1.31 Por: XiaoYu (Gary) Ge,

1

Instalação

Instalação do ambiente JAVA

Este framework foi testado com o JAVA6 e superiores. Para checar qual é a versão do java instaladaem seu computador, execute o seguinte comando em seu terminal:

java -version

Você pode efetuar o download do ambiente java deste link:

http://www.oracle.com/technetwork/java/javase/downloads/index.html

Instalação do Chrome

O navegador Chrome pode ser obtido no link: https://www.google.com/chrome/browser/

Instalação do Software

Descompacte o arquivo zip com o software. Assumindo que o diretório do software é ./angrybirds/

Você terá os seguintes arquivos/pastas:• A pasta external que contém todas as bibliotecas necessárias.• A pasta src que contém todos os códigos fontes.• A pasta plugin que possui uma extensão para interagir com o Chrome.

Instalação do Plugin

1. Abra o Chrome;

2. Vá em: chrome://chrome/extensions/

3. Clique na caixinha (checkbox) “Modo Desenvolvedor”;

4. Clique no botão “Carregar extensão descompactada...”;

5. Selecione a pasta plugin (que contém o arquivo manifest.json);

NOTA: Se os screenshots estão sendo gravados como arquivos PNGs transparentes, faça isso:

1. Abra o Chrome;

2. Vá em: chrome://flags/

3. Encontre a opção “Desabilitar WebGL” e marque-a.

This work is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License and canbe accessed via http://www.aibirds.org/basic-game-playing-software.html. It was translated by: Jacson RC Silva

Page 4: Angry Birds Basic Game Playing Softwarejeiks.net/wp-content/uploads/2014/10/AIBirds.pdf · 2014-10-05 · Angry Birds Basic Game Playing Software version1.31 Por: XiaoYu (Gary) Ge,

2

Executando o Software

Através da linha de comando você pode executar o Agente Naive (veja a seção Executando oAgente Naive), ver em tempo real a segmentação das imagens do jogo (veja seção Módulo Vision) ever em tempo real a trajetória de saída (veja seção Módulo Trajectory).

Server-Client Architecture

This work is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License and canbe accessed via http://www.aibirds.org/basic-game-playing-software.html. It was translated by: Jacson RC Silva

Page 5: Angry Birds Basic Game Playing Softwarejeiks.net/wp-content/uploads/2014/10/AIBirds.pdf · 2014-10-05 · Angry Birds Basic Game Playing Software version1.31 Por: XiaoYu (Gary) Ge,

3

Angry Birds Extension

O plugin do chrome interage com o navegador Chrome. Ele oferece funcionalidades, como capturara janela do jogo, executar ações (ex.: mover o mouse, clicar e modificar o zoom). Para instalá-lo,veja a seção Instalação do Plugin.

AI Agent

Um agente pode utilizar o módulo vision para analisar os cenários do jogo e o módulo trajectorypara planejar os tiros. Embora o jogo seja escrito em Java, o agente pode ser implementado emoutras linguagens, como C++, Python, etc.

Proxy

O servidor interage com a extensão do Angry Birds através do módulo proxy. As mensagens doproxy são:

• CLICK: clicar com o botão esquerdo do mouse;

• DRAG: arrastar o cursor de um lugar para outro;

• MOUSEWHEEL: rolar a rodinha do mouse;

• SCREENSHOT: capturar a imagem da janela atual do jogo

O agente não precisa de acessar o componente proxy.

Porta de Comunicação S/C

A porta de comunicação Servidor/Cliente recebe mensagens dos agentes e envia os feedbacks devolta após o servidor executar as ações indicadas pelas mensagens. As mensagens se encaixam nasseguintes categorias:

• Mensagens de Configuração;

• Mensagens de Consulta (Query);

• Mensagens de ação dentro do jogo (In-Game);

• Mensagens de seleção de nível.

A sintaxe das mensagens pode ser encontrada em /doc/ServerClientProtocols.pdf

Módulo Vision

O módulo Vision é composto de dois componentes de segmentação de imagem. Um doscomponetnes segmenta uma imagem e gera uma lista de Retângulos de Limites Mínimos (MBR)dos objetos essenciais da imagem. Os elementos essenciais incluem {“Sling”, “Red Bird”, “YellowBird”, “Blue Bird”, “Black Bird”, “White Bird”, “Pig”, “Ice”, “Wood”, “Stone”, “TNT”,

This work is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License and canbe accessed via http://www.aibirds.org/basic-game-playing-software.html. It was translated by: Jacson RC Silva

Page 6: Angry Birds Basic Game Playing Softwarejeiks.net/wp-content/uploads/2014/10/AIBirds.pdf · 2014-10-05 · Angry Birds Basic Game Playing Software version1.31 Por: XiaoYu (Gary) Ge,

4

“TrajPoints”} (traduzindo: {“Estilingue”, “Pássaro Vermelho”, “Pássaro Amarelo”, “Pássaro Azul”,“Pássaro Preto”, “Pássaro Branco”, “Porco”, “Gelo”, “Madeira”, “Pedra”, “Dinamite”,“TrajPoints”}).

O outro componente gera formas reais ao invés de MBRs. Você pode utilizar ambos para processarum screenshot.

Obtendo MBRs

Geralmente são necessários 100ms para processar o MBR de um cenário. A seguir tem-se umexemplo do resultado da segmentação (MBRs).

Para exibir a segmentação em tempo real, você deve executar o aplicativo com o comando:java -jar ABSoftware.jar -showMBR

This work is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License and canbe accessed via http://www.aibirds.org/basic-game-playing-software.html. It was translated by: Jacson RC Silva

Page 7: Angry Birds Basic Game Playing Softwarejeiks.net/wp-content/uploads/2014/10/AIBirds.pdf · 2014-10-05 · Angry Birds Basic Game Playing Software version1.31 Por: XiaoYu (Gary) Ge,

5

Obtendo o Contorno Real (Real Shape)

Geralmente são necessários 300–500ms para processar o Contorno Real. Além dos objetoessenciais, essa segmentação de imagem pode reconhecer colinas e o chão. Colinas são osobstáculos da cor marrom escuro que não serão afetados ou destruídos por objetos do jogo. A seguirtem-se um exemplo do resultado da segmentação (Real Shape).

Para mostrar essa segmentação, você deve executar o aplicativo com o comando:java -jar ABSoftware.jar -showReal

Módulo Trajectory

O módulo Trajectory estima a trajetória que o pássaro seguirá dado um particular ponto delançamento (relativo ao tiro do estilingue). Nós utilizamos uma constante de velocidade para todosos tiros do mesmo nível e utilizamos o ponto de lançamento e a localização do estilingue paradeterminar o ângulo de lançamento a. Com isso, nós podemos computar as velocidades horizontaise verticais como v cos(a) e v sen(a), respectivamente.

Com as velocidades iniciais em mãos, nós utilizamos as leis físicas clássicas de Newton paraestimar a o caminho parabólico que o pássaro vai seguir. A função predictTrajectory dentro domódulo Trajectory retorna uma lista de pontos que o pássaro vai seguir dado um certo ponto delançamento. Para facilitar o planejamento dos tiros, o módulo Trajectory fornece uma função(chamada estimulateLaunchPoint) para estimar o ponto de lançamento a partir do fornecimento deum destino desejado (por exemplo, o centro de um dos porcos detectados). A função utiliza a

seguinte equação para calcular o ângulo: θ=arctan( v2±√v4

−g(gx2+2 yv2

)

gx )

This work is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License and canbe accessed via http://www.aibirds.org/basic-game-playing-software.html. It was translated by: Jacson RC Silva

Page 8: Angry Birds Basic Game Playing Softwarejeiks.net/wp-content/uploads/2014/10/AIBirds.pdf · 2014-10-05 · Angry Birds Basic Game Playing Software version1.31 Por: XiaoYu (Gary) Ge,

6

Onde (x,y) são as coordenadas normalizadas do ponto de destino relativos ao estilingue (utilizandoo tamanho do estilingue como escala) e a gravidade g é definida como 1 unidade. Dois ângulos sãoobtidos dessa equação e a função retorna dois pontos de lançamento correspondentes em umArrayList de Points.

Note que quando um tiro é fabricado, o ângulo atual de lançamento a é sempre um pouquinhodiferente do arco tangente do vetor de lançamento e a diferença varia de nível para nível. Da mesmaforma, as velocidades normalizadas são um pouquinho diferentes entre os níveis. A variação noângulo e na velocidade são levados em conta na predição das trajetórias e nos pontos delançamento. O módulo trajectory provê um método (adjustTrajectory) para ajustar essas duasmudanças utilizando a informação do último tiro, de modo que a precisão dos tiros seguintes émelhorada.

Observe também que devido as variações no nível do pixel no local do estilingue, pássaro e efeitosdevido à escala, os caminhos estimados pelo módulo Trajectory são somente aproximados. OsAgentes devem devem levar isso em conta quando planejam seus tiros.

Para mostrar a segmentação em tempo real, você pode executar o aplicativo com o comando:java -jar ABSoftware.jar -showTraj

Exemplo da saída:

O Agente Naive (standalone) – uma demonstração

Agente Naive

O Agente Naive foi criado para demonstrar como construir um agente baseado nos módulosprovidos, nomealmente, o plugin do Chrome, o módulo vision e o módulo trajectory. O agentenaive é chamado “naive” (tradução: tolo) por que ele dispara o pássaro diretamente no porco semraciocínio algum.

O código pode ser encontrado em: /src/ab/demo/NaiveAgent.java

This work is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License and canbe accessed via http://www.aibirds.org/basic-game-playing-software.html. It was translated by: Jacson RC Silva

Page 9: Angry Birds Basic Game Playing Softwarejeiks.net/wp-content/uploads/2014/10/AIBirds.pdf · 2014-10-05 · Angry Birds Basic Game Playing Software version1.31 Por: XiaoYu (Gary) Ge,

7

Jogando com o Agente Naive

Carregando a Janela do Jogo

Para carregar a janela do jogo, faça:

1. Abra o Chrome;

2. Maximize a janela do navegador;

3. Digite “http://chrome.angrybirds.com/” na barra de endereços e pressione ENTER;

4. Selecione versão SD e clique em Play;

5. Selecione o episódio POACHED EGGS e permaneça na página de seleção de níveis.

(Página de seleção de níveis)

Por favor, mantenha a aba do jogo visível. Você não precisa de manter a janela do navegador nafrente das outras janelas. Por exemplo, você pode minimizar a janela do navegador após carregar ojogo, mas garantindo que a aba do jogo esteja selecionada.

Executando o Agente Naive

Para executar o Agente Naive, faça:

1. Carregue o jogo no Chrome (veja seção Carregando a Janela do Jogo);

2. Abra o terminal (janela de comandos);

3. Vá ao diretório do jogo;

4. Então, execute no terminal o comando:

java -jar ABSoftware.jar -na [1-21]

substituindo [1-21] pelo nível que você desejar. O nível inicial é 1 por padrão.

Ex.: “java -jar ABSoftware.jar -na 2” começará o agente Naive no nível 2. Obsercação: Você nãopode acessar um nível antes de desbloqueá-lo.

This work is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License and canbe accessed via http://www.aibirds.org/basic-game-playing-software.html. It was translated by: Jacson RC Silva

Page 10: Angry Birds Basic Game Playing Softwarejeiks.net/wp-content/uploads/2014/10/AIBirds.pdf · 2014-10-05 · Angry Birds Basic Game Playing Software version1.31 Por: XiaoYu (Gary) Ge,

8

Criando seu próprio Agente Inteligente

Representação dos Objetos

Para cada objeto de um screenshot, o módulo vision criará um objeto java sobre ele. Este objeto éespecificado dentro do ABObject.java que estende java.awt.Rectangle. A classe ABObject temquatro atributos principais: x e y da coordenada do canto superior esquerdo, width (largura) e height(altura).

A classe ABObject tem um atributo indicando o tipo de objeto de um objeto do jogo. Os tipos deobjetos são: {“Hill”, “Sling”, “Red Bird”, “Yellow Bird”, “Blue Bird”, “Black Bird”, “White Bird”,“Pig”, “Ice”, “Wood”, “Stone”, “TNT”} (traduzindo: {“Colina/Morro”, “Estilingue”, “PássaroVermelho”, “Pássaro Amarelo”, “Pássaro Azul”, “Pássaro Preto”, “Pássaro Branco”, “Porco”,“Gelo”, “Madeira”, “Pedra”, “Dinamite”}).

O atributo “hollow” indica se um objeto está com cavidade (tem um buraco no meio) ou não.Observação: A segmentação MBR não distingue entre objetos com cavidade e objetos sólidos.

Nós classificamos as formas dos objetos do jogo em três grupos: Circle (círculo), Rect (retângulo) ePoly (polígono) (referem-se a /src/ab/vision/real/shape). Há uma classe java correspondente paracada grupo e as classes javas estendem o ABObject.java, mantendo assim todos os métodos eatributos do ABObject.

• Circle: representa uma fórmula circular do centro do círculo e do raio.• Rect: representa um retângulo de um ângulo arbitrário. Além dos quatro atributos que

especificam a MBR, a classe Rect representa o desenho real de um retângulo, possuindo maistrês atributos: pwidth, plength e angle.

O pwdith e o plength abrigam

o tamanho do menor e domaior borda respectivamente.

• Poly: representa um polígono utilizando java.awt.Polygon. Triângulos são representados assim.

This work is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License and canbe accessed via http://www.aibirds.org/basic-game-playing-software.html. It was translated by: Jacson RC Silva

Page 11: Angry Birds Basic Game Playing Softwarejeiks.net/wp-content/uploads/2014/10/AIBirds.pdf · 2014-10-05 · Angry Birds Basic Game Playing Software version1.31 Por: XiaoYu (Gary) Ge,

9

Tire um Screenshot e Segmente a imagem

É muito simples tirar um screenshot e segmentá-lo. O seguinte fragmento de código exibe oprocesso.

//Start the game proxy

ActionRobot aRobot = new ActionRobot();

//Capture an Image

BufferedImage screenshot = aRobot.doScreenShot();

// Initialize the vision component

Vision vision = new Vision(screenshot);

// Get a list of MBRs of all the pigs in the screenshot

List<ABObject> pigsMBR = vision.findPigsMBR();

// Get a list of real shapes of all the pigs in the screenshot

List<ABObject> pigsReal = vision.findPigsRealShape();

Como pode ser visto do código, nós fornecemos uma visão macro (veja /src/ab/vision/Vision.java)que gerencia os dois componentes de segmentação. O método findPigsRealShape() utiliza asegmentação com contorno real para obter a lista de porcos enquanto o método findPigsMBR()utiliza a segmentação MBR. Sob os componentes de segmentação ocorre o reconhecimento de todasas categorias de objetos. A segmentação MBR não detecta a colina/morro enquanto a segmentaçãocom contorno real não reconhece o TNT. Então, o método findTNTs() utiliza a segmentação MBR eo método findHills() utiliza a segmentação com contorno real (real-shape).

Acessando o estado do Jogo

Há cinco estados principais do jogo:

1. “WON”: uma página mostra o placar final e as estrelas que você ganhou.

2. “LOST”: um grande porco fala que você perdeu.

3. “PLAYING”: o jogo ainda não acabou.

4. “LEVEL SELECTION”: a página de seleção de níveis.

5. “LOADING”: o jogo está sendo carregado neste momento e uma barra de progresso éapresentada sobre a página.

Por favor, consulte /src/ab/vision/GameStateExtractor.java para detalhes.

This work is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License and canbe accessed via http://www.aibirds.org/basic-game-playing-software.html. It was translated by: Jacson RC Silva

Page 12: Angry Birds Basic Game Playing Softwarejeiks.net/wp-content/uploads/2014/10/AIBirds.pdf · 2014-10-05 · Angry Birds Basic Game Playing Software version1.31 Por: XiaoYu (Gary) Ge,

10

Módulo Trajectory

Uma vez que você sabe seu objetivo, você precisa do módulo trajectory para planejar os tiros. Paraobter o conjunto de pontos de lançamento estimados dados para um objetivo (destino), você podechaamar o método estimateLaunchPoint(Rectangle, Point). Este método necessita do MBR doestilingue e to ponto de destino.

//Initial a trajectory planner

TrajectoryPlanner tp = new TrajectoryPlanner();

//Get the estimated points

List<Point> pts = tp.estimateLaunchPoint(sling, target);

Por favor, consulte /src/ab/planner/TrajectoryPlanner.java para detalhes.

Efetuando tiros

Um Tiro (Shot) contém seis parâmetros (x, y, dx, dy, t_shot, t_tap). Os primeiros quatro parâmetrosespecificam o caminho do mouse de (x,y) à (x+dx, y+dy). T_shot é o tempo que o pássaro serácolocado para ser lançado. T_tap especifica o intervalo entre o tempo de liberação e o tempo detocar na tela (clicar) após isso. O tempo é mensurado em milissegundos. Você pode submeter umalista de tiros ao servidor e ele pode executar um por um de acordo com a ordem.

Mais detalhes sobre efetuar tiros podem ser vistos na seção Mensagens das Ações Dentro do Jogo,em ServerClientProtocols.pdf (Pode ser encontrado no diretório “doc”).

Self-Manage mode

Digamos que você deseja atirar dois pássaros seguindo as correspondentes instâncias de tiro:

1) Shot (x,y,dx,dy, 5000,2000);

2) Shot (x,y,dx,dy, 13000,5000);

Você pode passar os dois tiros ao servidor e ele seguirá a seguinte linha do tempo:

> Tempo5000 7000 13000 18000

(shot 1) (tap 1) (shot 2) (tap 2)

Observação> t_tap especifica o intervalo entre o lançamento e o tempo correspondente ao tapping(que é o ato de bater na tela após o lançamento para ativar a característica do pássaro).

Quando você especificar o tempo do tiro (shot), por favor tenha atenção que:

1) Evite fazer um tiro (shot) e um tap ao mesmo tempo. Ex.: Os seguintes tiros estão com conflito:Shot (x,y,dx,dy, 5000,3000); Shot (x,y,dx,dy, 8000,5000);

This work is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License and canbe accessed via http://www.aibirds.org/basic-game-playing-software.html. It was translated by: Jacson RC Silva

Page 13: Angry Birds Basic Game Playing Softwarejeiks.net/wp-content/uploads/2014/10/AIBirds.pdf · 2014-10-05 · Angry Birds Basic Game Playing Software version1.31 Por: XiaoYu (Gary) Ge,

11

2) No jogo, há um intervalo entre dois tiros. Você não pode atirar um pássaro imediatamente após ooutro tiro. O intervalo é de aproximadamente 5 segundos. Então, por favor, ajuste o t_shot eassegure-se que o tempo entre dois tiros é maior que 5000.

3) O tempo do tap do primeiro tiro não pode ser após atirar o segundo pássaro.

Auto-Arrange mode

Nós fornecemos outra forma conveniente de atirar os pássaros. Isso pode ser utilizado se você nãoquiser se importar sobre o tempo exato. Nós podemos organizar o tempo de tiro para você. Bastadefinir o t_shot de cada tiro da sequẽncia como 0 (zero). Por exemplo:

1) Shot (x,y,dx,dy, 0,3000);

2) Shot (x,y,dx,dy, 0,5000);

O primeiro tiro será feito no tempo 0 (zero) e o segundo tiro será feito no tempo 5000. Além disso,o primeiro tap ocorre no tempo 3000 + 0 = 3000 e o segundo tap ocorre no tempo 5000 + 5000 =10000.

Observe que se você quer que o servidor organize os tiros para você, você terá que garantir quetodos os campos t_shot serão definidos para 0 (zero) na sequência de tiros desejada.

O servidor tratará a seguinte sequência com conflitos como auto-gerida:

1) Shot (x, y,dx,dy, 0,3000);

2) Shot (x,y,dx,dy, 0,5000);

3) Shot (x,y,dx,dy, 10000,5000);

Outros métodos úteis

Obter o tipo de pássaro do estilingue

Você pode obter o tipo de pássaro do estilingue utilizando o método getBirdTypeOnSling() (veja

/src/ab/demo/other/ActionRobot.java). Este método fará um zoom no estilingue, obterá umscreenshot e segmentará a imagem para obter a lista de pássaros. O método então ordenará a listapara encontrar o pássaro mais alto e retornará o tipo desse pássaro.

Obter todo o suporte/recursos de um objeto

O método isSupport(ABObject o1, ABObject o2) (veja /src/ab/utils/ABUtil.java) retornaráverdadeiro se o1 suporta o2. O método determina a relação dos objetos checando se a bordasuperior do MBR de o1 está situada na região de suporte (apresentada como o retângulo pontilhadoda figura a seguir) do MBR do o2.

This work is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License and canbe accessed via http://www.aibirds.org/basic-game-playing-software.html. It was translated by: Jacson RC Silva

Page 14: Angry Birds Basic Game Playing Softwarejeiks.net/wp-content/uploads/2014/10/AIBirds.pdf · 2014-10-05 · Angry Birds Basic Game Playing Software version1.31 Por: XiaoYu (Gary) Ge,

12

A região de suporte é o retângulo com o (x,y, width, height) como (o2.x – intervalo, o2.y +o2.height – intervalo, intervalo * 2 + o2.width, intervalo * 2). O intervalo é ajustável. Na figura, ointervalo é de 5px.

O método getSupporters(ABObject o2, List<ABObject> objs) retorna uma lista contendo umsubconjunto de objs que suportam o2.

Como você percebeu, este método não é compatível com o suporte de retângulos angulares. Vocêterá que fazer sua própria estratégia para realizar uma checagem disso.

Reachability

O método isReachable(Vision vision, Point target, Shot shot) (veja /src/ab/utils/ABUtil.java) retornatrue se o ponto (target/destino/alvo) é alcançavel (sem obstruções) pelo tiro (shot).

O método primeiro obtém uma lista de todos os pontos da trajetória de um tiro e guarda (preserva)aqueles que estão a esquerda do alvo. Tipo assim: a coordenada x do ponto é menor que o algo.Então, o método checa se qualquer um dos pontos contidos no MBR de qualquer bloco (madeira,gelo e pedra), ou se tem um RGB similar a cor de uma colina/morro. O método retorna true(alcançavel) quando estes pontos não existem.

Você pode também desenvolver sua própria estratégia para determinar a alcançabilidade do pássaro.

Compile utilizando o ANT

Você pode utilizar o ANT para compilar o código fonte pela linha de comando. Ant é uma bibliotecaJava e uma ferramenta em linha de texto que possui a missão de direcionar o processo descrito nosarquivos de compilação (build), compilando as dependências e gerando o resultado almejado.

Para mais informações, acesse: http://ant.apache.org/

Você pode efetuar o download do ANT em: http://ant.apache.org/manualdownload.cgi

É necessário ter o ANT 1.7 ou superior.

Para compilar o código fonte, vá ao diretório do software e execute: ant compile

Para gear o executável “jar”, execute: ant jar

This work is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License and canbe accessed via http://www.aibirds.org/basic-game-playing-software.html. It was translated by: Jacson RC Silva


Recommended