Corso di Interfacce Utente - A.A. 2002-2003

PROGETTO DI RECUPERO - DOCUMENTO 0

Descrizione dell'applicazione e requisiti dell'interfaccia

Scopo: Realizzare un'interfaccia per un gioco in cui una pallina si muove in un ambiente di lavoro che presenta ostacoli contro i quali la pallina puo' urtare e buchi in cui la pallina puo' cadere. Lo scopo del gioco e' non far cadere la pallina in un buco.

L'applicazione

Consideriamo una rappresentazione bidimensionale. Abbiamo una pallina che si muove in un'ambiente di lavoro con una certa velocita'. La pallina e' un cerchio, l'ambiente di lavoro un rettangolo.

L'ambiente presenta ostacoli e buchi. Ogni ostacolo e' un rettangolo. Quando la pallina urta un ostacolo, viene rimbalzata indietro. Lo stesso avviene quando la pallina urta una parete dell'ambiente di lavoro.

Ogni buco e' un cerchio. Se durante il moto la pallina passa con il suo baricentro sopra un buco, e il buco ha diametro superiore a quello della pallina, ci cade dentro, e il gioco termina.
L'utente puo' iniziare un nuovo gioco collocando un'altra pallina.

L'utente puo' variare la velocita' della pallina e le sue dimensioni ad animazione ferma.
Puo' aggiungere ostacoli e buchi, cancellarli, spostarli, cambiarne le dimensioni.

Ad animazione in corso l'utente puo' agire sulla direzione dela velocita' della pallina attraendola verso un punto oppure verso un lato dell'ambiente di lavoro.

Dati e operazioni forniti dal programma applicativo

Il programma che implementa l'applicazione viene dato a scatola chiusa e contiene una serie di strutture dati ed operazioni che l'interfaccia puo' utilizzare, senza modificarle.

Dati

Il programma applicativo contiene al suo interno le strutture dati per rappresentare:

Un buco e' descritto da:

Centro e raggio devono essere tali che il buco sia interamente contenuto nell'ambiente di lavoro.

Un ostacolo e' descritto da:

Punto di aggancio, larghezza e altezza devono essere tali che l'ostacolo sia interamente contenuto nell'ambiente di lavoro.

Una pallina e' descritta da:

Centro e raggio devono essere tali che la pallina sia interamente contenuta nell'ambiente di lavoro.
L'intensita' della velocita' (unita' di lunghezza percorse nell'unita' di tempo) deve essere compresa tra 0 e la meta' del raggio.
La storia indica che cosa e' successo alla pallina nell'ultimo passo della simulazione (nulla, ha urtato un ostacolo, ha urtato una parete dell'ambiente di lavoro).

L'ambiente di lavoro e' descritto da:

Il gioco puo' iniziare solo se c'e' la pallina e c'e' almeno un buco.

Funzioni

Il programma applicativo fornisce funzioni per:

Funzionalita' dell'interfaccia

L'interfaccia deve usare il programma applicativo a scatola chiusa, senza modificarli. Deve fornire all'utente strumenti per compiere le seguenti operazioni:

  1. Inizializzare le dimensioni dell'ambiente di lavoro. Questa operazione va eseguita ad ambiente di lavoro vuoto.

  2. Caricare da file ostacoli e buchi.

  3. Aggiungere, cancellare o modificare singoli ostacoli e singoli buchi.

  4. Riempire l'intero ambiente o una sua sotto-area di una miscela di ostacoli e buchi in percentuali assegnate.

  5. Cancellare ostacoli e buchi specificando una sotto-area che deve essere svuotata.

  6. Visualizzare la situazione corrente (si intende il disegno grafico!).

  7. Inserire la pallina, spostarla, modificare la sua velocita', cancellarla.

  8. Modificare la direzione della velocita' della pallina mediante un attrattore. L'attrattore puo' essere un punto all'interno dell'ambiente di lavoro oppure un lato dell'ambiente di lavoro.

  9. Eseguire la simulazione in animazione continua (con velocita' controllabile dall'utente), con possibilita' per l'utente di stabilire pause a comando oppure pause automatiche ad intervalli di tempo stabiliti (ogni tot unita' di tempo), oppure ad ogni urto.

Tutte le operazioni possono essere eseguite all'inizio o durante qualsiasi pausa della simulazione. La simulazione deve poi riprendere dalla situazione in cui si era fermata, con le modifiche apportate dall'utente.
Unica eccezione l'attrazione della velocita' che puo' essere eseguita anche a simulazione in corso (questo e' il modo in cui l'utente cerca di evitare che la pallina cada nei buchi).

L'animazione puo' essere eseguita solo se c'e' la pallina e c'e' almeno un buco nell'ambiente.

La visualizzazione deve riflettere in ogni momento lo stato corrente della simulazione.