10
Correzione esercizio verifica in classe: disegnare una sequenza di quadrati a partire dal punto cliccato fino ad includere un rettangolo dato Welcome, students!

Correzioni Esercizioverifica300109

Embed Size (px)

DESCRIPTION

disegnare una successione di quadrati

Citation preview

Page 1: Correzioni Esercizioverifica300109

Correzione esercizio verifica in classe: disegnare una sequenza di quadrati a partire dal punto cliccato

fino ad includere un rettangolo datoWelcome, students!

Page 2: Correzioni Esercizioverifica300109

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.

Page 3: Correzioni Esercizioverifica300109

Una possibile soluzione

Page 4: Correzioni Esercizioverifica300109

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

Page 5: Correzioni Esercizioverifica300109

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

Page 6: Correzioni Esercizioverifica300109

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.

Page 7: Correzioni Esercizioverifica300109

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() !!!!

Page 8: Correzioni Esercizioverifica300109

Gestione della variabile booleana: cliccato

Page 9: Correzioni Esercizioverifica300109

Risultato della elaborazione

Page 10: Correzioni Esercizioverifica300109

Let’s Have a Great Year!