qualche anima pia vorrebbe darmi una mano con questo esercizio?!

grazie


Esercizio 3
Il seguente codice va completato sostituendo ai commenti la parte di codice descritta dal commento stesso.
Ill programma usa un’interfaccia Sfidabile che ha un unico metodo vince(Sfidabile x) con tipo di ritorno booleano. La classe Sfidante implementa quest’interfaccia, e ha due campi: nome e numero (una stringa e un intero). Il metodo vince va implementato come segue: se this.nome segue in ordine alfabetico x.nome (si usi l’ordinamento lessicografico predefinito per le stringhe), ritorna true. Se le stringhe sono uguali, ritorna true se this.numero>x.numero. Altrimenti ritorna false.
Lo scopo del programma è quello di creare un frame con un’etichetta, sotto tre bottoni, e sotto ancora un’etichetta. L’etichetta in alto contiene l’indicazione di una variabile Sfidante chiamata avv e scelta a caso come spiegato nel codice. I tre bottoni contengono tre stringhe, scelte in modo diverso come riportato sotto. L’etichetta in basso contiene la dicitura “Non hai ancora vinto”. Ogni volta che viene cliccato un bottone, viene incrementato contatore e viene creata una variabile nuovo di tipo Sfidante il cui campo nome è la stringa del bottone premuto e numero è uguale a contatore. Poi si confrontano nuovo e avv: se nuovo.nome viene dopo avv.nome nell’ordine lessicografico, oppure sono uguali e nuovo.contatore>avv.contatore (ovvero, le stesse condizioni dette prima), l’etichetta in basso diventa “Hai vinto!”


//importare tutti i package che servono
class Ascoltatore implements ActionListener
{ private Esercizio es;
public Ascoltatore(Esercizio es)
{ this.es = es; }
public void actionPerformed(ActionEvent e)
{ es.conteggia(e); }
}
class Sfidante implements Sfidabile
{ String nome; int numero;
public Sfidante(String nome, int numero)
{ this.nome = nome; this.numero = numero; }
public String toString()
//scrivere un metodo “toString” che riporti “(nome,numero)”
public boolean vince(Sfidabile x)
//scrivere il metodo “vince” seguendo le condizioni citate sopra
}
public class Esercizio extends JFrame {
private static final String[] VETTORE = {"Asso","Due","Cinque","Fante","Cavallo","Re"}; private JButton[] bottoni = new JButton[3];
private JLabel sfida,risultato;
private int contatore; Random dGen; Sfidante avv;
//dichiarare 3 ascoltatori in un vettore asc
public Esercizio()
{ super(); contatore=0; dGen = new Random(System.currentTimeMillis());
avv = new Sfidante(VETTORE[dGen.nextInt(4)],dGen.nextInt(5));
inizializzaGUI(); this.setVisible(true);
}
private void inizializzaGUI()
{ //creare i tre bottoni: bottoni[0] contiene un elemento a caso di VETTORE,
//bottoni[1] contiene il campo nome di avv, bottoni[2] contiene “Zzzz”
//creare i tre ascoltatori e associarli ai bottoni
//creare le etichette sfida e risultato(inizializzata a "Non hai ancora vinto")
//venga settato il frame in modo che il programma termini quando viene chiusa la finestra
//aggiungere al frame sfida, i bottoni, risultato.
//(si usi BorderLayout, mettendo gli elementi a NORTH, WEST, CENTER, EAST, SOUTH) this.pack(); this.setVisible(true);
}
public void conteggia(ActionEvent e)
{ //incrementare contatore
//creare una variabile intera “premuto” che contenga l’indice del bottone premuto
//creare una variabile Sfidante “nuovo” e confrontarla con “avv”.
//Se si verifica la condizione riportata sopra:
risultato.setText("Hai vinto!");
this.repaint();
}
public static void main(String args[]) { new Esercizio();}
}