Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

Notice Board

Per partecipare al corso di Fondamenti di programmazione 2023-24 loggatevi e attivatelo nella vostra pagina dei corsi preferiti. A quel punto il corso appare nel menù personale cliccando sul proprio avatar. Per i materiali degli anni precedenti seguite lo stesso metodo.

To join the Programming/Lab 2023-24 course, log-on and select it on the my courses page. It will appear on the personal menu of your avatar. For earlier years use the same method.

Comportamento del metodo draw_rectangle visto nella lezione

l
laertleba (2840 points)
11 28 42
in Programmare in Python by (2.8k points)
Ciao a tutti,

stavo ripassando le lezioni e c'è un pezzo di codice che non riesco a capire perchè funziona cosi.

Lezione 14, abbiamo definito la classe Immagine e abbiamo un metodo draw_rectangle, in cui quando si disegna la seconda linea verticale metiamo che la lunghezza di tale linea dovrebbe essere  h(altezza) + 1, mentre la lunghezza dell'altra linea è h. Anche nella lezione quando il professore ha eseguito il codice, nel caso metiamo solo h, nel rettangolo manca un pixel. Non capisco perchè funziona cosi.

Ecco il codice (non so se si può mettere però ci provo comunque...)

      def draw_rectangle(self, x, y, w, h, color):
            #disegno un retangolo vuoto
            self.draw_line_H(x,   y,   w,   color)
            self.draw_line_H(x,   y+h, w,   color)
            self.draw_line_V(x,   y,   h,   color)
            self.draw_line_V(x+w, y,   h+1, color)
366 views

1 Answer

anaran (7090 points)
3 5 37
by (7.1k points)
edited by
Perché nel disegnare le rette horizzontali l'ultimo pixel che colori è [y][x+w-1] alla prima chiamata e [y+h][x+w-1] alla seconda , dato che usi range(x,x+w). Nell'ultima draw_l_V parti da x+w e colori il pixel in alto a destra che non era ancora colorato, ma nemmeno quello in basso a destra lo è, e quindi devi aggiungere un pixel per arrivare lì sotto con range.