esercitazione obiettivo: scrivere una applicazione per il gioco “Centra Bersaglio” metodo individuazione e definizione delle classi necessarie individuazione metodi pubblici soluzione online dal (tardo) pomeriggio
file.java CentraBersaglio solo per metodo main() CentraBersaglioFrame crea frame che monta il pannello con tutta la grafica PannelloGrafico contiene le classi PannelloGrafico AreaGioco Bersaglio contiene la classe Bersaglio nonché i listener Movimento e Sparo
CentraBersaglioFrame classe che estende JFrame, contenente solo il costruttore definisce titolo finestra e dimensioni definisce la “default close operation” crea un oggetto PannelloGrafico e lo addiziona al content pane in posizione “Center”
PannelloGrafico classe che estende JPanel che contiene costruttore definisce per il pannello un BorderLayout crea ed inizializza un campo di testo, addizionandolo in posizione “North” crea un oggetto AreaGioco (pannello contenente la grafica del bersaglio in movimento) e lo addiziona in posizione “Center” metodo setPunteggio aggiorna il contenuto del campo di testo
AreaGioco stesso file di PannelloGrafico, estende JPanel istanzia pannelli che visualizzano il bersaglio in movimento variabili istanza riferimento al bersaglio metodi costruttore istanzia il bersaglio, inizializzando la variabile di istanza paintComponent per il fill del bersaglio
Bersaglio 1/2 estende Ellipse2D.Double istanzia un cerchio colorato in movimento, registrando nel pannello che lo deve visualizzare (oggetto AreaGioco) un opportuno mouse listener istanzia ed inizializza l’oggetto Timer, per la simulazione del movimento
Bersaglio 2/2 variabili globali variabili che descrivono geometria e colore del cerchio riferimento al Container in cui viene visualizzato il bersaglio (deve essere parametro passato al costruttore!) riferimento all’oggetto Timer altre… (non fondamentali) metodi costruttore inizializza l’oggetto, inizializza e registra i listener disegna tramite fill metodo invocato da paintComponent, che passa il parametro attuale Graphics2D setCentro per traslare il bersaglio chiama repaint
listener Movimento implementa ActionListener usato per rispondere agli eventi generati dall’oggetto Timer variabili generatore Random metodi costruttore inizializza generatore random actionPerformed genera movimento verifica che il bersaglio traslato sia nell’area di gioco, gestendo eventuali rimbalzi chiama setCentro
listener Sparo estende MouseAdapter metodi mousePressed calcola le coordinate del click costruisce punteggio (massimo se colpito il centro del bersaglio, nullo fuori dal bersaglio; decresce linearmente dal centro alla frontiera) aggiorna punteggio, se necessario, chiamando il metodo setPunteggio della classe PannelloGrafico l’oggetto PannelloGrafico è accessibile tramite il metodo getParent, applicato al container in cui viene disegnato il bersaglio