Precedente Indice Successiva

Input da tastiera

Immagine slide
  • Anche per la gestione della tastiera dobbiamo predisporre delle funzioni di gestione dell'evento (handler)
  • In particolare, per la tastiera ne abbiamo due, uno per la pressione di un tasto l'altro per il rilascio.
  • Per installare il gestore della pressione, useremo il metodo set_keydown_handler(<gestore>) di frame:
    finestra.set_keydown_handler(premuto)
  • Mentre per installare il gestore di rilascio useremo il metodo set_keyup_handler(<gestore>) di frame:
    finestra.set_keyup_handler(rilasciato)
  • In entrambi i gestori abbiamo un parametro che riporta il codice del tasto:
    def rilasciato(key):
    global movimento
    if key == simplegui.KEY_MAP['up'] or key == simplegui.KEY_MAP['down']:
    movimento = 0
  • Per conoscere i codici dei tasti si utilizza la lista KEY_MAP[<nome>] di simplegui. Per conoscerne i nomi si veda http://www.codeskulptor.org/docs.html#Keys
  • Un esempio completo è:
    import simplegui
    import random
    larghezza = 300
    altezza = 200
    racc_sopra = 70
    racc_sotto = 130
    movimento = 0
    def disegno (pannello):
    global movimento, racc_sopra, racc_sotto
    if movimento > 0:
    if racc_sotto < altezza:
    racc_sopra +=1
    racc_sotto += 1
    else:
    movimento = 0
    elif movimento < 0:
    if racc_sopra > 0:
    racc_sopra -= 1
    racc_sotto -= 1
    else:
    movimento = 0
    pannello.draw_line((300, racc_sopra), (300, racc_sotto), 5, "Red")
    def premuto(key):
    global movimento
    if key == simplegui.KEY_MAP['up']:
    movimento = -1
    elif key == simplegui.KEY_MAP['down']:
    movimento = 1
    def rilasciato(key):
    global movimento
    if key == simplegui.KEY_MAP['up'] or key == simplegui.KEY_MAP['down']:
    movimento = 0
    finestra = simplegui.create_frame("Prova", larghezza, altezza)
    finestra.set_canvas_background('#000080')
    finestra.set_draw_handler(disegno)
    finestra.set_keydown_handler(premuto)
    finestra.set_keyup_handler(rilasciato)
    finestra.start()
  • ESERCIZIO: combinare il movimento della racchetta nell'esercizio di prima, aggiungendo anche un conteggio dei rimbalzi sulla racchetta e delle palle perse
© Ing. Stefano Salvi - released under FDL licence

Valid XHTML 1.0! Valid CSS!