Salve a tutti, ho bisogno di un piccolo aiuto, qualsiasi suggerimento è ben accetto.
Sto creando un gioco per l'esame di programmazione dell'università, anche se può sembrare macchinoso in alcuni punti, devo attenermi alle linee guida delle richieste effettuatemi.
Il problema di per se credo sia semplice ma non riesco a venirne a capo: un metodo void appartenente ad un'altra classe dovrebbe modificare il valore di una variabile booleana a seconda di un valore random. Fin qui molto semplice:
codice:
public class CalòPlayer implements Player {
@Override
public void start(boolean isFirst) {
double random = Math.random()*10;
System.out.println(random);
if (random <= 5.0){
isFirst = true;
System.out.println(isFirst);
}
else{
isFirst = false;
System.out.println(isFirst);
}
}
Come si può vedere, con delle stampe opportunamente fatte durante l'applicazione del metodo,so che la variabile booleana assume correttamente il valore che deve assumere. Tuttavia appena fuori dall'applicazione del metodo la var booleana ritorna ad avere il valore di default (false) oppure true se per esempio al momento della dichiarazione la eguaglio a true.
Segue la parte di codice in cui il metodo viene applicato:
codice:
public class GameManager {
private boolean isFirst;
CalòPlayer dio = new CalòPlayer();
public void gioca (Giocatore g1, Giocatore g2){
System.out.println("Ha inizio la partita!");
dio.start(this.isFirst);
System.out.println(isFirst); //Già qui isFirst assume il valore di default
g1.colore(isFirst);
g2.colore(!isFirst);
System.out.println(g1.getColore());
System.out.print(" " + isFirst);
}
}
La classe giocatore ha solo il metodo "colore" al momento che eguaglia il valore "rosso" o "blu" ad una String in base al valore della variabile booleana.
codice:
public class Giocatore {
private String colore = "";
public Giocatore () {
System.out.println("Ho instanziato la classe giocatore");
}
public void colore (boolean isFirst){
if (isFirst == true){
this.colore = "rosso";
}
else {
this.colore = "blu";
}
}
public String getColore (){
return this.colore;
}
}
Infine il metodo Main:
codice:
public class Main {
public static void main(String[] args) {
GameManager a = new GameManager();
Giocatore g1 = new Giocatore();
Giocatore g2 = new Giocatore();
a.gioca(g1, g2);
}
}
Grazie per qualsiasi aiuto