Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Correzioni Esercizioverifica300109

588 views

Published on

disegnare una successione di quadrati

Published in: Education
  • Be the first to comment

  • Be the first to like this

Correzioni Esercizioverifica300109

  1. 1. Correzione esercizio verifica in classe: disegnare una sequenza di quadrati a partire dal punto cliccato fino ad includere un rettangolo dato Welcome, students!
  2. 2. Il testo del problema <ul><li>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. </li></ul><ul><li>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). </li></ul><ul><li>L’iterazione che disegna questa successione di quadrati deve terminare quando il quadrato contiene completamente al suo interno il rettangolo dato. </li></ul><ul><li>Ad ogni quadrato assegnate un colore random. al termine dell’iterazione, assegnate il colore red al rettangolo. </li></ul>
  3. 3. Una possibile soluzione
  4. 4. Fare un metodo che risolve il problema <ul><li>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 . </li></ul><ul><li>Al metodo passiamo il parametro g della classe Graphics. E’ necessario perché le istruzioni, che qui usiamo, appartengono alla classe Graphics </li></ul><ul><li>Facciamo una iterazione con do. Perché ? Almeno un quadrato deve essere disegnato </li></ul><ul><li>Deve avere un colore casuale </li></ul><ul><li>Deve avere come vertice cPoint </li></ul><ul><li>E come lato un multiplo n di lato </li></ul>
  5. 5. Questione importante da capire <ul><li>La condizione di iterazione è (contiente==false) </li></ul><ul><li>Qui è il gioco </li></ul><ul><li>Ci inventiamo una variabile booleana, un interruttore avente due valori possibili: true, false. </li></ul><ul><li>Questa variabile booleana “contiene” ci serve per indicare due stati diversi della elaborazione: </li></ul><ul><ul><li>Finchè il quadrato non contiene il rettangolo dato, il valore di contiene rimane false </li></ul></ul><ul><ul><li>Quando il quadrato contiene il rettandolo dato, il valore di contiene viene commutato a true! </li></ul></ul><ul><li>pertanto il valore di questa variabile è fondamentale per risolvere l’algoritmo </li></ul>
  6. 6. Gestione della variabile booleana <ul><li>Definiamo la variabile contiene e le assegniamo il valore false </li></ul><ul><li>Finchè il valore di contiene rimane false, continuiamo a fare la nostra iterazione, ossia la stampa di un nuovo quadrato, </li></ul><ul><li>Quando il quadrato contiene il rettangolo dato, il valore della variabile contiene viene messo uguale a true. </li></ul><ul><li>Quando il valore della variabile contiene è true, si esce dalla iterazione. </li></ul>
  7. 7. Da quale punto del programma viene mandato in esecuzione il metodo disegnaQuadrati( ) ? <ul><li>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. </li></ul><ul><li>Ma non sempre devo lanciare questo metodo </li></ul><ul><li>Lo devo mandare in esecuzione solo se qualcuno ha cliccato con il mouse in un punto del pannello. </li></ul><ul><li>Chi è in ascolto degli eventi inviati dal mouse ? E’ l’oggetto e della MouseEvent input al metodo mouseClicked() </li></ul><ul><li>Di conseguenza qui dentro gestiamo un’altra variabile booleana: cliccato </li></ul><ul><li>All’inizio questa variabile interruttore (swc) è false </li></ul><ul><li>Se il mouse viene cliccato, il valore di questa variabile è commutato a true. </li></ul><ul><li>Pertanto, quando questo valore è true, deve essere mandato in esecuzione il metodo diesegnaQuadrati() dentro paintComponent() !!!! </li></ul>
  8. 8. Gestione della variabile booleana: cliccato
  9. 9. Risultato della elaborazione
  10. 10. Let’s Have a Great Year!

×