1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[Java] Ajuda urgente! Controlar Robot!

Discussão em 'Programação' iniciada por Pinistia, 15 de Janeiro de 2013. (Respostas: 0; Visualizações: 667)

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

    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!
     

Partilhar esta Página