Per produrre delle semplici animazioni (su di una sola riga) si deve:
Per provocare l’attesa necessaria a produrre il frame rate desiderato è possibile utilizzare il metodo sleep(int ms)
della classe Thread
specificando il tempo di attesa espresso in millisecondi. Ad esempio in Java:
try {
Thread.sleep(100);
} catch (InterruptedException ex) {
}
Per cancellare il testo scritto (il frame precedente) bisogna far ritornare il cursore all’inizio della riga utilizzado il comando Carriage Return (\r
). Ad esempio:
System.out.print("\r");
Il ciclo di animazione per 10 FPS sarebbe quindi:
while(true){
//stampa un frame
System.out.print("???????");
//attendi 100 ms
try {
Thread.sleep(100);
} catch (InterruptedException ex) {
}
//carriage return (torna a inizio riga)
System.out.print("\r");
}
Purtroppo alcune console (es. Netbeans) non interpretano correttamente il codice Carriage Return (\r
), quindi per eseguire queste animazioni dovrete usare una shell adeguata …
Scrivi il programma Elica
che produce a terminale l’animazione di un elica stilizzata stampando ripetutamente la sequenza di caratteri '|'
,'\'
,'-'
,'/'
. Vedi il filmato:
Scrivi il programma Bimotore
che produce a terminale l’animazione di un aereoplano bimotore stilizzato:
Scrivi la classe HyperCar
che produca l’animazione mostrata in seguito. La lunghezza della barra è definita dal primo argomento da linea di comando (default 10):
Scrivi il video gioco 1D FlyingDaggers
. Il gioco consiste nel lancio di un pugnale che deve colpire un bersaglio.
Il giocatore ha a disposizione un numero limitato di pugnali (default 6) che vengono lanciati in sequenza. Il pugnale parte dalla posizione orizzontale (-
) e procede ruotando in senso orario verso il bersaglio (O
).
Se, quando colpisce il bersaglio, il pugnale è in posizione orizzontale, il bersaglio esplode (*
) e il giocatore guadagna un punto:
Il gioco termina quando la riserva di pugnali è esaurita.
Ad ogni lancio il bersaglio si sposta ad una distanza casuale (minino 10, massimo 30).
Durante la partita l’interfaccia rappresenta la riserva di pugnali e il punteggio attuale: