Ciao sto provando ad implementare 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 è:
class Robot{
int x;
int y;
boolean acsp;
String punti[]={"N","E","S","W"};
int pos;
Robot(int x,int y){
this.x=x;
this.y=y;
acsp=true;
pos=0;
}
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(){
String punto="";
if(accendi()||spegni()){
punto=punti[pos];
pos++;
}
return punto;
}
public String toString(){
String s="";
if(acsp){
s+="robot acceso in ("+x +","+y+") verso "+aDestra();
}else
s+="il robot è spento in ("+x +","+y+") verso "+aDestra();
return s;
}
}
Il mio problema è il metodo aDestra();ogni volta che invoco da main aDestra(),il mio programma dovrebbe scorrere di una posizione nell'array punti.
da main:
import java.util.*;
class VerificaRobot{
public static void main(String[] args) {
Robot r=new Robot(0,0);
r.aDestra();
System.out.println(r.toString());
r.aDestra();
System.out.println(r.toString());
}
}
il punto è che da teminale il programma mi dovrebbe stampare :
robot acceso in (0,0) verso N
robot acceso in (0,0) verso E
invece mi stampa:
robot acceso in (0,0) verso E
robot acceso in (0,0) verso W
Quindi in parole povere...perchè da terminale il programma mi stampa i punti a distanza di due posizioni?come faccio a stampare ad incrementare la posizione dell'array utilizzando solo un ciclo if?