Boas pessoal!
Ando com uns problemas a programar a JAVA e fiz um pseudo-código, mas não estou a conseguir passar para código.
Se alguém me pudesse dar umas luzes.
tenho as seguintes operações para movimentar o robot:
void RobotController.move()- Avança uma unidade, caso exista um obstáculo, o robot fica destruído e a missão comprometida.
boolean RobotController.senseSpace()- Devolve Verdadeiro ou Falso caso exista ou não um espaço à frente do robot
boolean RobotController.senseWall()- Devolve Verdadeiro ou Falso caso exista ou não uma parede à frente do robot.
boolean RobotController.senseEnergy()- Devolve Verdadeiro ou Falso caso exista ou não uma fonte de energia à frente do robot.
boolean RobotController.recharge()- Devolve verdadeiro ou falso caso o robot consiga recarregar ou não.
int RobotController.getEnergy()- Ddevolve um nº inteiro referente à energia disponivel na bateria do robo
void RobotController.turnLeft()- o robot fica na mesma posição mas vira 90º para a esquerda.
void RobotController.turnRight()- o robot fica na mesma posição mas vira 90º para a direita.
Não estou a conseguir criar o seguinte:
1º Uma memória que me guarde as coordenadas e consequentemente não deixe o meu robot andar por sítios que já andou.
2º Criar um file log com as decisões/operações efectuadas
3º E acho que não percebo nada disto porque tudo me parece mal!
Ando com uns problemas a programar a JAVA e fiz um pseudo-código, mas não estou a conseguir passar para código.
Se alguém me pudesse dar umas luzes.
Código:
package pt.ulht.fp.curiosity.core;
import java.util.Random;
import pt.ulht.fp.curiosity.RobotController;
import pt.ulht.fp.curiosity.Simulator;
import pt.ulht.fp.curiosity.Simulator.Map;
import pt.ulht.fp.curiosity.Simulator.Speed;
public class Curiosity {
static int linhaactual;
static int colunaactual;
static int comprimento;
static int largura;
static int [][] coordenadas= new int [comprimento][largura];
public static void configLandingSite(int line, int column, int numLines,
int numColumns) {
//Inicializa estado do robot
colunaactual = column;
linhaactual = line;
comprimento= numLines;
largura = numColumns;
System.out.println("A Posição inicial é"+ colunaactual +"," + linhaactual);
}
public static void controlRobot() {
int energia = RobotController.getEnergy();
System.out.println(energia);
if(RobotController.senseEnergy()){
System.out.println("Bateria");
RobotController.recharge();
RobotController.turnRight();
RobotController.senseSpace();
if(RobotController.senseSpace()==true){
RobotController.move();
System.out.println("coordenada actual"+ linhaactual+","+colunaactual);
}
else if(RobotController.senseSpace()==false){
RobotController.turnRight();
RobotController.senseSpace();
}
}
if(RobotController.senseWall()){
System.out.println("Parede");
if(RobotController.senseWall()==true){
RobotController.turnRight();
RobotController.senseWall();
}
else if(RobotController.senseWall()==false){
RobotController.move();
System.out.println("coordenada actual"+ linhaactual+","+colunaactual);
}
}
if(RobotController.senseSpace()){
RobotController.move();
System.out.println("coordenada actual"+ linhaactual+","+colunaactual);
}
}
public static void transmitState(String filename) {
//Escrever estado para ficheiro filename passado como argumentos
}
public static void main(String[] args) {
//Experimentar Map.WORLD01 Map.WORLD02 Map.WORLD03 Map.WORLD04 Map.WORLD05
//e as velocidades Speed.SLOW Speed.NORMAL Speed.FAST
Simulator.run(Map.WORLD03, Speed.NORMAL);
}
}
tenho as seguintes operações para movimentar o robot:
void RobotController.move()- Avança uma unidade, caso exista um obstáculo, o robot fica destruído e a missão comprometida.
boolean RobotController.senseSpace()- Devolve Verdadeiro ou Falso caso exista ou não um espaço à frente do robot
boolean RobotController.senseWall()- Devolve Verdadeiro ou Falso caso exista ou não uma parede à frente do robot.
boolean RobotController.senseEnergy()- Devolve Verdadeiro ou Falso caso exista ou não uma fonte de energia à frente do robot.
boolean RobotController.recharge()- Devolve verdadeiro ou falso caso o robot consiga recarregar ou não.
int RobotController.getEnergy()- Ddevolve um nº inteiro referente à energia disponivel na bateria do robo
void RobotController.turnLeft()- o robot fica na mesma posição mas vira 90º para a esquerda.
void RobotController.turnRight()- o robot fica na mesma posição mas vira 90º para a direita.
Não estou a conseguir criar o seguinte:
1º Uma memória que me guarde as coordenadas e consequentemente não deixe o meu robot andar por sítios que já andou.
2º Criar um file log com as decisões/operações efectuadas
3º E acho que não percebo nada disto porque tudo me parece mal!