Eu não sei se alguém consegui me ajudar, eu quero criar um agente que possa pegar outro agente , como se fosse um tabuleiro ou labirinto, e que, esse mesmo agente possa escapar do outro agente, não sei por onde começar.
No eclipse.
Ajuda me na criação de um Agente com Heurística
6 Respostas
O ideal é que o título da postagem seja pertinente ao problema que se queira obter auxílio. Além disso, tu deve dar mais detalhes sobre o problema, como por exemplo:
1 - Já tentou fazer (poste para analisarmos)?
2 - Se tentou fazer, está apresentando algum alerta, erro ou exceção?
3 - Qual é a regra de negócio ou a dinâmica do projeto?
4 - Etc.
Regra do projeto é criar uma agente para pegar e esse mesmo agente para escapar.
usar uma Heurística para pegar, por exemplo.
Certo, e para a primeira pergunta…
Dê-nos um ponto de partida (começa com você tentando fazer) para te ajudá-lo.
Este é o código que eu comecei a fazer, já tenho quadro classe criada, este é a classe Desenhadora, só me falta criar um agente.
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import com.jogamp.opengl.GL2;
import com.jogamp.opengl.GLAutoDrawable;
import com.jogamp.opengl.GLEventListener;
import com.jogamp.opengl.glu.GLU;
public class Desenhadora implements GLEventListener, KeyListener{
private GLU glu = new GLU();
private Quadrado q;
private float largura = 1.0f, altura = 1.0f;
private int _fila = 10, _coluna = 10;
private Quadrado[][] tabuleiro = new Quadrado[_fila][_coluna];
private Cor[] _cores = new Cor[2];
private int fila, coluna;
<a class="mention" href="/u/override">@Override</a>
public void display(GLAutoDrawable drawable) {
// TODO Auto-generated method stub
final GL2 gl = drawable.getGL().getGL2();
//Limpar o ecrã
gl.glClear(GL2.GL_COLOR_BUFFER_BIT| GL2.GL_DEPTH_BUFFER_BIT);
//Fazer reset na matrix e carregar o eixo das coordenadas (0,0,0)
gl.glLoadIdentity();
// Transladar o objecto
float tx = -1*_fila/2;
float ty = -1*_fila/2;
float tz = -1*2*_fila;
gl.glTranslatef(tx, ty, tz);
//quadrado.novaPosicao(fila, coluna);
//quadrado.desenha(drawable);
for(int i = 0; i < _fila; i++) {
for(int j = 0; j < _coluna; j++) {
if(i % 2 == 0)
gl.glColor3f(_cores[j % 2].getR(), _cores[j % 2].getG(), _cores[j % 2].getB());
else {
if(j % 2 == 0)
gl.glColor3f(_cores[1].getR(), _cores[1].getG(), _cores[1].getB());
else
gl.glColor3f(_cores[0].getR(), _cores[0].getG(), _cores[0].getB());
}
gl.glBegin(GL2.GL_POLYGON);
gl.glVertex3f((float)j*largura, (float)i*altura, 0.0f);
gl.glVertex3f((float)j*largura + largura, (float)i*altura, 0.0f);
gl.glVertex3f((float)j*largura + largura, (float)i*altura + altura, 0.0f);
gl.glVertex3f((float)j*largura, (float)i*altura + altura, 0.0f);
gl.glEnd();
}
}
int i = _fila - q.getPosicao().getFila() - 1,
j = q.getPosicao().getColuna();
//System.out.println("i=" + i + ", j=" + j);
gl.glColor3f(q.getCor().getR(), q.getCor().getG(), q.getCor().getB());
gl.glBegin(GL2.GL_POLYGON);
gl.glVertex3f((float)j*q.getLargura(), (float)i*q.getLargura(), 0.0f);
gl.glVertex3f((float)j*q.getLargura() + q.getLargura(), (float)i*q.getLargura(), 0.0f);
gl.glVertex3f((float)j*q.getLargura() + q.getLargura(), (float)i*q.getLargura() + q.getLargura(), 0.0f);
gl.glVertex3f((float)j*q.getLargura(), (float)i*q.getLargura() + q.getLargura(), 0.0f);
gl.glEnd();
// Processar o objecto (desenho)
gl.glFlush();
}
@Override
public void dispose(GLAutoDrawable drawable) {
// TODO Auto-generated method stub
System.out.println("dispose() called");
}
@Override
public void init(GLAutoDrawable drawable) {
// TODO Auto-generated method stub
System.out.println("init() called");
GL2 gl = drawable.getGL().getGL2();
gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
gl.glShadeModel(GL2.GL_FLAT);
_cores[0] = new Cor(0.0f, 0.0f, 1.0f);
_cores[1] = new Cor(1.0f, 1.0f, 1.0f);
q = new Quadrado(new Cor(1.0f, 0.0f, 0.0f), new Posicao(0, 0), 1.0f);
fila = coluna = 0;
tabuleiro[fila][coluna] = q;
}
@Override
public void reshape(GLAutoDrawable drawable, int x, int y, int largura, int altura) {
// TODO Auto-generated method stub
System.out.println("reshape() called: x = " + x + ", y= " + y + ", largura=" + largura + ", altura= " + altura);
final GL2 gl = drawable.getGL().getGL2();
if(altura <= 0){
altura = 1;
}
final float h = (float)largura / (float)altura;
gl.glViewport(0,0,largura,altura);
gl.glMatrixMode(GL2.GL_PROJECTION);
gl.glLoadIdentity();
glu.gluPerspective(45.0f, h, 1.0,20.0);
gl.glMatrixMode(GL2.GL_MODELVIEW);
gl.glLoadIdentity();
}
@Override
public void keyPressed(KeyEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void keyReleased(KeyEvent key) {
// TODO Auto-generated method stub
//System.out.println("Código de tecla = " + key.getKeyCode());
tabuleiro[fila][coluna] = null;
if(key.getKeyCode() == 37) //Seta para esquerda
{
System.out.println("Esquerda");
System.out.println("(f,c)=(" + fila + "," + coluna + ")");
coluna = (coluna - 1) >= 0 ? coluna - 1: coluna;
System.out.println("(f,c)=(" + fila + "," + coluna + ")");
}
if(key.getKeyCode() == 38) //Seta para cima
{
System.out.println("Cima");
System.out.println("(f,c)=(" + fila + "," + coluna + ")");
fila = (fila - 1) >= 0 ? fila - 1: fila;
System.out.println("(f,c)=(" + fila + "," + coluna + ")");
}
if(key.getKeyCode() == 39) //Seta para direita
{
System.out.println("Direita");
System.out.println("(f,c)=(" + fila + "," + coluna + ")");
coluna = (coluna + 1) < tabuleiro.length ? coluna + 1: coluna;
System.out.println("(f,c)=(" + fila + "," + coluna + ")");
}
if(key.getKeyCode() == 40) //Seta pra baixo
{
System.out.println("Baixo");
System.out.println("(f,c)=(" + fila + "," + coluna + ")");
fila = (fila + 1) < tabuleiro.length ? fila + 1: fila;
System.out.println("(f,c)=(" + fila + "," + coluna + ")");
}
q.setPosicao(new Posicao(fila, coluna));
tabuleiro[fila][coluna] = q;
}
@Override
public void keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub
}
}
Só mude o título do post para que “desperte interesse”. Poucas pessoas vão clicar em um post com “Olá, como estão? Eu espero que estejam bem”. Que tal mudar para algo como (exemplo): “Ajuda na criação de Agentes com Heurística”. Isso dá uma ideia do que você precisa a quem tiver esse conhecimento vai te ajudar.
Obs.: essas ‘regras’ estão descritas na FAQ do fórum (servem para deixar o teu post com maior visibilidade).
