Animazioni1D

Per produrre delle semplici animazioni (su di una sola riga) si deve:

  1. Disegnare un frame o fotogramma dell’animazione (nel nostro caso, un carattere o del testo ma senza mai andare a capo).
  2. Aspettare un certo tempo. Ad esempio per ottenere un frame rate di 10 FPS, ossia 10 immagini al secondo, dovremo attendere circa 1 decimo di secondo (100 millisecondi).
  3. Cancellare il frame corrente (nel nostro caso, ritornare all’inizio della riga) e ripetere dal punto 1.

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 …

Elica anim1D Livello 12

Scrivi il programma Elica che produce a terminale l’animazione di un elica stilizzata stampando ripetutamente la sequenza di caratteri '|','\','-','/'. Vedi il filmato:

SuperCar anim1D Livello 13

Scrivi il programma SuperCar che produce l’animazione seguente:

Bimotore anim1D Livello 13

Scrivi il programma Bimotore che produce a terminale l’animazione di un aereoplano bimotore stilizzato:

HyperCar anim1D Livello 14

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):

Domino anim1D Livello 14

Scrivi il programma Domino che produce l’animazione seguente:

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: