Python 2 - Grafica - 17

# Animazioni

- Come avrete notato, la funzione di disegno viene chiamata frequentemente, quindi non c'è un modo per forzare un ridisegno e non occorre usare timer.
- Occorre invece prevedere delle variabili globali di stato ed aggiornarle nella funzione di ridisegno. Con qualche esperimento si potrà trovare l'incremento opportuno in base alla frequenza del ridisego.
- Potremmo ad esempio facilmente creare una pallina che rimbalzi sui bordi del pannello, partendo con un'angolazione casuale.
- Utilizzeremo quattro variabili di stato x, y, vx e vy.
- La nostra pallina sarà un cerchio.
- Un esempio sarà il seguente:

      import simplegui
      import random
      larghezza = 300
      altezza = 200
      raggio = 15
      x = larghezza / 2
      y = altezza / 2
      vx = random.randrange(1,5)
      vy = random.randrange(1,5)
      def disegno (pannello):
          global x, y, vx, vy
          pannello.draw_circle((x,y), raggio, 2, "Yellow", "#ffffc0")
          x += vx
          y += vy
          if x < raggio or x > larghezza - raggio:
              vx = -vx
          if y < raggio or y > altezza - raggio:
              vy = -vy
      finestra = simplegui.create_frame("Prova", larghezza, altezza, 5)
      finestra.set_canvas_background('#000080')
      finestra.set_draw_handler(disegno)
      finestra.start()

- Se vogliamo avere un controllo migliore sulla velocità, ed avere velocità inferiori, possiamo includere il modulo time ed utilizzare la funzione time.time() che ritorna un tempo in secondi, ma con i decimali,

© Ing. Stefano Salvi - released under FDL licence