Per esempio, immaginiamo di dover fare un gioco dove bisogna muovere una macchina usando i tasti freccia della tastiera e che va spostata relativamente a dove punta il muso della macchina, come nelle macchinine telecomandate.
Prima di tutto mettiamo l'immagine della macchina:
Per ruotarla basta cambiare la proprietà angle dell'immagine.
Finchè rimane in verticale è facile dare le coordinate per spostarla, ma se la inclinassimo di 45°, come dobbiamo scrivere il codice?
Conoscendo un minimo di trigonometria, per muoverla di 5 pixel alla volta, tutto il codice è il seguente:
on arrowkey puls
switch puls
case "up"
#dobbiamo muoverla in indietro rispetto al verso del muso
#prendiamo l'angolo della direzione
put the angle of image "car" into temp
#creaimo una strina del tipo x,y
put -5 * sin( pi / 180 * temp) into movimento
put "," after movimento
put -5 * cos( pi / 180 * temp) after movimento
move image "car" relative movimento
break
case "down"
#dobbiamo muoverla in indietro rispetto al verso del muso
#prendiamo l'angolo della direzione
put the angle of image "car" into temp
#creaimo una strina del tipo x,y
put 5 * sin( pi / 180 * temp) into movimento
put "," after movimento
put 5 * cos( pi / 180 * temp) after movimento
move image "car" relative movimento
break
case "left"
#ruotiamo a sinistra l'immagine
put the angle of image "car" into temp
add 1 to temp
set the angle of image "car" to temp
break
case "right"
#ruotiamo a destra l'immagine
put the angle of image "car" into temp
add -1 to temp
set the angle of image "car" to temp
break
end switch
end arrowkey
Notate che non c'è bisogno di preoccuparsi se angle è più di 360° o meno di zero, livecode ritrasforma l'angolo correttamente. Anche per le coordinate relative non è un problema se non sono degli interi.
L'unica attenzione va fatta nelle funzioni seno e coseno, che accettano come input l'angolo in radianti, mentre l'angolo delle immagini è espresso in gradi. Per questo motivo c'è la moltiplicazione per π/180 che fa da conversione.
Per chi è a digiuno di informatica ricordo che il sistema di riferimento X,Y delle finestre, in tutti i linguaggi di programmazione, ha:
- l'origine nell'angolo in alto a sinistra
- l'asse X punta verso destra
- l'asse Y punta verso il basso
Per chiarezza ecco uno schema riassuntivo:
Nessun commento:
Posta un commento