View
426
Download
1
Embed Size (px)
DESCRIPTION
disegnare una successione di quadrati
Citation preview
Correzione esercizio verifica in classe: disegnare una sequenza di quadrati a partire dal punto cliccato
fino ad includere un rettangolo datoWelcome, students!
Il testo del problema Disegnare un rettangolo di colore blue su di un pannello
java. A tua scelta scegli le coordinate P0(x0,y0) del suo vertice in alto a sinistra; ed il valore della sua base b, e della sua altezza h.
Successivamente, quando clicchi il mouse in un punto del pannello che si trova all’esterno del rettangolo dato, alla sua sinistra, e un pò più in alto del suo vertice P0, devi disegnare il contorno ( g.drawRect(...) ) di una sequenza di quadrati che hanno tutti il loro Vertice Pc(xc,yc) coincidente con il punto in cui è stato cliccato il mouse, ed aventi come lato un multiplo n (contatore) del lato iniziale (il cui valore sia 1/10 di quello da te scelto per la base b del rettangolo).
L’iterazione che disegna questa successione di quadrati deve terminare quando il quadrato contiene completamente al suo interno il rettangolo dato.
Ad ogni quadrato assegnate un colore random. al termine dell’iterazione, assegnate il colore red al rettangolo.
Una possibile soluzione
Fare un metodo che risolve il problema
Conviene mettere la logica di soluzione dentro un metodo. Ossia tutte le istruzioni che concorrono a risolvere il nostro problema sono strettamente correlate tra di loro e quindi cosituiscono una funzione.
Al metodo passiamo il parametro g della classe Graphics. E’ necessario perché le istruzioni, che qui usiamo, appartengono alla classe Graphics
Facciamo una iterazione con do. Perché ? Almeno un quadrato deve essere disegnato
Deve avere un colore casuale Deve avere come vertice cPoint E come lato un multiplo n di lato
Questione importante da capire
La condizione di iterazione è (contiente==false) Qui è il gioco Ci inventiamo una variabile booleana, un interruttore
avente due valori possibili: true, false. Questa variabile booleana “contiene” ci serve per
indicare due stati diversi della elaborazione: Finchè il quadrato non contiene il rettangolo dato, il valore
di contiene rimane false Quando il quadrato contiene il rettandolo dato, il valore di
contiene viene commutato a true!
pertanto il valore di questa variabile è fondamentale per risolvere l’algoritmo
Gestione della variabile booleana
Definiamo la variabile contiene e le assegniamo il valore false
Finchè il valore di contiene rimane false, continuiamo a fare la nostra iterazione, ossia la stampa di un nuovo quadrato,
Quando il quadrato contiene il rettangolo dato, il valore della variabile contiene viene messo uguale a true.
Quando il valore della variabile contiene è true, si esce dalla iterazione.
Da quale punto del programma viene mandato in esecuzione il metodo disegnaQuadrati( ) ?
Le istruzioni di disegno grafico devono trovarsi all’interno del metodo paintComponent(), di conseguenza è qui dentro che deve essere lanciato il metodo disegnaQuadrati() e deve essergli passato il parametro di input g.
Ma non sempre devo lanciare questo metodo Lo devo mandare in esecuzione solo se qualcuno ha cliccato
con il mouse in un punto del pannello. Chi è in ascolto degli eventi inviati dal mouse ? E’ l’oggetto e
della MouseEvent input al metodo mouseClicked() Di conseguenza qui dentro gestiamo un’altra variabile
booleana: cliccato All’inizio questa variabile interruttore (swc) è false Se il mouse viene cliccato, il valore di questa variabile è
commutato a true. Pertanto, quando questo valore è true, deve essere mandato in
esecuzione il metodo diesegnaQuadrati() dentro paintComponent() !!!!
Gestione della variabile booleana: cliccato
Risultato della elaborazione
Let’s Have a Great Year!