[Python] Un videogioco fatto con la standard library

Daniele Zambelli daniele.zambelli a gmail.com
Dom 11 Dic 2011 09:41:02 CET


Il 10 dicembre 2011 11:34, Francesco Maida <dev a cesco.it> ha scritto:
> [...]
> Qui il filmato:
> http://www.youtube.com/watch?v=Bj-H9uPEa5U
>
> Qui il codice sorgente:
> http://snake-1526l.googlecode.com/files/snake2615l.tar.bz2

Grazie per il link

> Mi potreste aiutare a capire come funziona per favore?
>[...]
>
>
> Secondo voi è corretta questa analisi?

Mi pare di sì.

> In particolare mi riesce
> difficile capire esattamente cosa fa il codice fra le righe 17 e 22.

Per quanto riguarda la riga 17, l'espressione:

(key==KEY_RIGHT and 1 or key==KEY_LEFT and -1)

restituisce 1 o -1 a seconda del tasto premuto. Si può capire tenendo
conto del modo in cui funzionano le espressioni booleane in Python:
restituiscono il primo oggetto che risolve l'espressione:

>>> True and False
False
>>> True and "Pippo"
'Pippo'
>>> False and True
False
>>> False and "Pippo"
False
>>> True and ""
''

Tieni presente che in Python zero, la lista vuota, la stringa vuota
sono considerati False tutti gli altri oggetti True.

Prova tu a vedere cosa avviene con l'operazione or.

Quindi l'intera riga 17:

    snake.insert(0,[snake[0][0]+(key==KEY_RIGHT and 1 or key==KEY_LEFT and -1),
                           snake[0][1]+(key==KEY_DOWN and 1 or
key==KEY_UP and -1)])

aggiunge come primo elemento della lista snake un elemento uguale al
precedente ma con i valori incrementati o decrementati di uno in base
al tasto premuto.

Ciao

-- 

Daniele

www.fugamatematica.blogspot.com

    giusto!
    nel verso
    forse è perché non guardiamo le cose
    Quando non ci capiamo,


Maggiori informazioni sulla lista Python