Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di el92
    Registrato dal
    Dec 2014
    Messaggi
    177

    [java]robot con coordinate

    Ciao devo realizzare una classe robot le cui istanze siano robot caratterizzati dall'essere accesi o spenti, da una coppia di interi che specifica le coordinate della loro posizione sul piano cartesiano e da un char che indica la direzione di marcia (N, E, S, W).
    La mia implementazione è:

    codice:
    class Robot{
    int x;
    int y;
    String punto;
    boolean acsp;
    //punti east,west,south
    String punti[]={"E","W","S"};
    Robot(int x,int y){
        this.x=x;
        this.y=y;
        acsp=true;
        punto="N";
    }
    Robot(){
        this(0,0);
    }
    public boolean accendi(){
        return acsp=true;
    }
    public boolean spegni(){
        return acsp=false;
    }
    public void avanti(int coordinata1){
        if(accendi()){
        y=coordinata1;
    }
    }
    /**aDestra
        fa ruotare eventualmente il robot di 90 gradi in senso orario, 
            modificando la direzione di marcia*/
    public String aDestra(){
        int count=0;
        if(acsp){
        punto=punti[count];
        count++;
    }
    return punto;
    }
    public String toString(){
        String s=" ";
        if(acsp){
        s+="robot acceso in ("+x +","+y+")"+aDestra();
        }else
        s+="il robor è spento";
        return s;
    }    
    }
    Il mio problema è nel metodo avanti(int coordinata1) il testo mi mostra un esempio in cui ogni volta che l'utente inserisce una coordinata prima si modifica la x e poi la y.es:
    On --> robot acceso in (0,0) verso N
    A 10 --> robot acceso in (0,10) verso N
    D --> robot acceso in (0,10) verso E
    A 5 --> robot acceso in (5,10) verso E
    Come faccio a dire al mio programma di modicare prima una coordinata e poi l'altra? Secondo voi per implementare il metodo aDestra() e quindi per far ruotare il robot(cioè cambiare da E,ad S),ogni volta che l'utente insersce D,dovrei usare un metodo ricorsivo,oppure uso un controllo da main?
    Ultima modifica di el92; 23-03-2015 a 16:13

  2. #2
    premesso che mi sembra di capire che il robot si possa solo muovere per le coordinate x,y e con l'unità, dire "avanti" in tale scenario porta alla risposta "avanti in che direzione?". Quindi se si sta muovendo verso E, aumenterai di una unità la X, se si sta muovendo verso N di una la Y, se si sta muovendo verso O sottrarrai -1 ad x, se si muove verso S -1 ad y. Per il resto non ho capito bene che cheidi
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    Utente di HTML.it L'avatar di el92
    Registrato dal
    Dec 2014
    Messaggi
    177
    Ciao scusa x il ritardo e grazie per le risposte...io intendevo creare un metodo che mi modifichi prima la coordinata y e poi la x.Cioè se da terminale digito:
    10 --->(0,10) poi digito 2 --->(2,10).In pratica memorizza il valore precedente in y e mette il valore appena digitato in x.Ho provato a creare un metodo:
    int x;
    int y;
    public void avanti(int coordinata1){
    y=coordinata1;
    }
    Se digito 10 e poi 2 da terminale,come posso poi aggiungere 2 alla x,memorizzando 10 in y? Il mio metodo deve riceve una sola coordinata..come posso fare?Aiutoooo
    Ultima modifica di el92; 26-03-2015 a 12:12

  4. #4
    Scusa ma stai seguendo un esercizio o te lo stai inventando così di sana pianta? letto così mi sembra tutto una cosa senza senso. Cmq, dovresti memorizzare in Robot qual è l'ultima coordinata che hai modificato (x o y) e alla volta successiva modifichi l'altra. Ad esempio metti una proprietà privata lastModified settata a null, la prima volta che chiami avanti modifica x e setta in lastModified il valore x, la seconda volta visto che lastModified è x allora modifica y e setta lastModified a y, la terza volta visto che lastModified è y allora setta x etc etc. Ma tu sei sicuro che "coordinata" come parametro non sia invece un punto (x,y) invece di un valore intero?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.