Ajuda me na criação de um Agente com Heurística

6 respostas
java
C

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.

6 Respostas

I

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.

C

Regra do projeto é criar uma agente para pegar e esse mesmo agente para escapar.
usar uma Heurística para pegar, por exemplo.

I

Certo, e para a primeira pergunta…

Dê-nos um ponto de partida (começa com você tentando fazer) para te ajudá-lo.

C
Este é o código que eu comecei a fazer,  tenho quadro classe criada, este é a classe Desenhadora,  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
	
}

}

C

este é o inicio da classe.

I

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).

Criado 18 de dezembro de 2019
Ultima resposta 18 de dez. de 2019
Respostas 6
Participantes 2