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

    [java]caselle di una scacchiera

    Ciao non riesco a risolvere un problema...in pratica devo costruire una scacchiera...che contiene diverse caselle,ognuna contente una pedina...il problema mi fà prima costruire la classe Giocatore avente nome ed un energia iniziale pari a 100:

    codice:
    class Giocatore{
    private String name;
    private int energia;
    Giocatore(String name){
    this.name=name;
    energia=100;
    }
    public void addenergia(int e ){
    energia+=e;
    }
    public int getEnergia(){
    return energia;
    }
    public String getName(){
    return name;
    }
    public String toString(){
        return name+" "+energia;
    }
    }
    Fin qui tutto liscio...poi devo costruire la classe Casella:

    codice:
    class Casella{
    Giocatore g1;
    public void getinizio(Giocatore g){
        g1=new Giocatore(g.getName());
        if(g!=null&&g.getEnergia()>g1.getEnergia()){
            g1=g;
        }else
        g1=g1;
    }
    public Giocatore stampagiocatore(){
        return g1;
     }
     public String toString(){
         return "il giocatore è: "+g1;
     }
    public static void main(String[] args){
    Giocatore g=new Giocatore("marco");
    g.addenergia(5);
    Giocatore g1=new Giocatore("luca");
    g1.addenergia(7);
    Casella c=new Casella();
    c.getinizio(g1);
    c.getinizio(g);
        System.out.println(c);
        }
    }
    Il problema è il metodo getinizio(Giocatore g) che verifica se la casella contiene già un giocatore e se è così stampa l'energia maggiore(non posso unsare un array).come posso verificare quale dei due giocatori ha la maggiore energia e come memorizzo in casella un giocatore alla volta, se non uso un array?

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    361
    codice:
    public void getinizio(Giocatore g){
        g1=newGiocatore(g.getName());
        if(g!=null&&g.getEnergia()>g1.getEnergia()){
            g1=g;
        }else
        g1=g1;
    }
    Ciao, non sono un esperto ma mi pare che intanto questo metodo sia confusionario, cioè tu passi al metodo un Giocatore già instanziato e dentro al metodo invece che fare i controlli e scegliere se assegnarlo o no alla Casella crei un nuovo Giocatore copiando il nome di quello passato (g1=newGiocatore(g.getName());).
    Poi controlli se il giocatore passato al metodo è null (mentre tu dici che devi verificare se la casella contiene già un giocatore quindi dovresti controllare se g1 della casella è null).
    Infine usi due diverse variabili uguali a g1 e nell'ultima riga scrivi g1=g1 (brrrrrrrr).

    Io questo metodo lo riscriverei nel seguente modo:

    codice:
    public void getinizio(Giocatore g)
    {
        if(g1==null)g1=g; // se g1 e' null metto il giocatore nella Casella che è vuota
        else if(g.getEnergia()>g1.getEnergia()) g1=g; // se il giocatore passato ha energia maggiore lo sostituisco,volendo puoi usare un or e unire le due righe
    }
    Poi per quanto riguarda il problema sul numero dei giocatori questo dipende dalla consegna:

    se ogni Casella può averne solo uno allora tieni quello con energia maggiore, se può averne di più ma vuoi che sia "attivo" solo quello con energia maggiore comunque gli altri devono essere memorizzati da qualche parte (Array,ArrayList,Map....)
    Ultima modifica di Ansharja; 17-06-2015 a 16:05

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.