Chiaramente rimarrò sul semplice, giusto per far vedere alcuni principi base e come si riesca a fare tutto in meno di 10 minuti!
Siete pronti con il cronometro? Bene...via!
Prima di tutto creiamo un nuovo programma andando su File -> New Mainstack.In questo modo avremo una nuova finestra con cui lavorare.
Creiamo i seguenti elementi:
- pulsante Start
- un cerchietto verde chiamandolo rana
- una rettangolo rosa che chiameremo car1.
- un grosso rettangolo verde scuro chiamandolo arrivo
- mettere la scritta ARRIVO sopra il rettangolo verde
Adesso mettiamo nella card corrente (l'unica del programma) il seguente codice per muovere la rana con le frecce della tastiera:
on arrowkey puls if the giostat of me is "attivo" then switch puls case "up" move graphic "rana" relative 0,-30 break case "down" move graphic "rana" relative 0,30 break case "left" move graphic "rana" relative -30,0 break case "right" move graphic "rana" relative 30,0 break end switch if intersect(graphic rana,graphic arrivo) then set the giostat of this card to "fermo" answer "Hai vinto!" end if end ifend arrowkey
Siamo già arrivati a metà del lavoro, ora dobbiamo scrivere il codice per muovere la macchina da sinistra a destra e riposizionarla di nuovo al punto di partenza quando ha percorso tutta la finestra. Immaginando la finestra larga 400 pixels, il codice è:
on iniziagioco set the percorso of me to true controint giocoend iniziagioco
on moveStopped put the percorso of me into temp set the percorso of me to not temp if the giostat of this card is "attivo" then send gioco to me in 0.1 millisec end if end moveStopped
on gioco put the percorso of me into temp if temp then move me relative 400,0 in 3 sec without waiting else move me relative -400,0 in 1 millisec without waiting end ifend gioco
on controint if intersect(graphic rana, me) then set the giostat of this card to "fermo" stop moving me answer "Aaaaah! La rana e' morta!" end if if the giostat of this card is "attivo" then send controint to me in 0.1 sec end if end controint
Adesso è meglio spiegare il codice appena scritto.
Iniziagioco è il messaggio che deve ricevere la macchina per cominciare a muoversi. Una vola ricevuto, comincerà ad andare da sinistra a destra per 400 pixels e riposizionarsi al punto di partenza finchè la proprietà giostat della carta corrente diventa "fermo" (non è più "attivo"). Inventarsi una proprietà della carta è una scelta comoda, perchè così la vedono tutti (macchine, rana, ecc.) e si può fermare tutto il gioco cambiandone il suo valore. Sempre dentro questo messaggio parte controint, un messaggio che si ripete ogni 0.1 secondi per vedere se la rana è investita dalla macchina.
I messaggi gioco e Movestopped servono per muovere la macchina effettivamente. Visto che intendiamo mettere 6 macchine, ognuna con velocità diverse, è meglio optare per il comando move without waiting; in questo modo non abbiamo problemi di sincronizzazione col move generale e abbiamo il messaggio MoveStopped che viene lanciato in automatico dal programma quando la macchina ha finito di muoversi.
Bene adesso copiate la macchina per arrivare ad un totale di sei macchine (copiando la macchina, viene copiato anche il codice). Cambiate i nomi delle macchine in modo che siano numerate da car1 a car6 , divertitevi a cambiare la lunghezza delle macchine. Inoltre nel codice di ogni singola macchina divertitevi a cambiare il tempo in secondi che impiega a fare un passaggio.
Come in una autostrada vera, creeremo due sensi di marcia, quindi facciamo in modo che le ultime tre macchine tre (car4, car5 e car6) si muovano da destra a sinistra cambiando i 400 in -400 e viceversa nel loro codice .
Se tutto è andato per il verso giusto avrete ottenuto qualcosa simile a questo:
Abbiamo quasi finito manca solo il codice del pulsante start:
on mouseUp set the loc of graphic rana to 200,300 set the giostat of this card to "attivo" repeat with i=1 to 3 set the left of graphic ("car" & i) to the left of this card end repeat repeat with i=4 to 6 set the right of graphic ("car" & i) to the right of this card end repeat repeat with i=1 to 6 send "iniziagioco" to graphic ("car" & i) end repeat end mouseUp
FATTO! Quanto ci avete messo?
Come vedete il codice del pulsante start mette macchine e rana al i posti di partenza e dal il segnale di partenza alle macchine.
Questo è solo un semplice esempio, il gioco può essere notevolmente migliorato ad esempio:
- sostituendo la grafica con delle immagini animate e/o animazioni
- considerando la lunghezza del mezzo nel codice del moviemento
- generando configurazioni di partenza con velocità e quantità dei mezzi casuali ogni volta
- visto che move può far muovere lungo qualunque serie di punti, si potrebbero immaginare percorsi con curve, diramazioni, ecc.
- aggiungendo timer e punteggi


Nessun commento:
Posta un commento