Menu

Tree [1874d7] master /
 History

HTTPS access


File Date Author Commit
 jar 2011-07-30 Alessandro Franci Alessandro Franci [1874d7] added files
 lib 2011-07-30 Alessandro Franci Alessandro Franci [1874d7] added files
 resources 2011-07-30 Alessandro Franci Alessandro Franci [1874d7] added files
 src 2011-07-30 Alessandro Franci Alessandro Franci [1874d7] added files
 LICENSE 2011-07-30 Alessandro Franci Alessandro Franci [1874d7] added files
 Makefile 2011-07-30 Alessandro Franci Alessandro Franci [1874d7] added files
 README 2011-07-30 Alessandro Franci Alessandro Franci [1874d7] added files
 airbum.sh 2011-07-30 Alessandro Franci Alessandro Franci [1874d7] added files
 airbum6.jar 2011-07-30 Alessandro Franci Alessandro Franci [1874d7] added files
 createjar.sh 2011-07-30 Alessandro Franci Alessandro Franci [1874d7] added files

Read Me

COMPONENTI DEL GRUPPO:
Il progetto AIRBUM è stato sviluppato dai seguenti studenti: 
Davide Riccardo Caliendo, Gianpietro Farina, Alessandro Franci.
----------------------------------------------------------------------------------
DESCRIZIONE GENERALE DEL PROGRAMMA:
Una volta lanciato AIRBUM si aprirà una finestra in cui sono presenti 4 pulsanti:
Start Game, Impostazioni, About, Exit.

Exit: 			Causa la terminazione del programma.
About:			Mostrerà una piccola finestra bloccante di about in cui verranno mostrate con
				del testo a scorrimento verticale alcune informazioni riguardo ai programmi 
				che si sono utilizzati per lo sviluppo del progetto, e informazioni relative 
				agli autori di quest'ultimo. Clickando su Ok sarà possibile chiudere la finestra
				di dialogo.
Impostazioni:	Cambierà il pannello principale della finestra di gioco nel pannello impostazioni.
				Attraverso questo pannello sarà possibile settare alcune impostazioni generali del gioco
				come per esempio: grandezza della finestra di gioco, presenza/assenza effetti audio, 
				l'intervallo in millisecondi fra un colpo e un altro (nel caso si utilizzi una salva di colpi 
				con più di un proiettile), il limite di tempo totale per lo sparo dei colpi. 
				Quest'ultima opzione è utile nel caso si stia utilizzando una strategia con più di un 
				colpo e la velocità di lancio sia alta, e non si abbia la pazienza di aspettare la caduta
				 di tutti i proiettili. 
Start Game:     Clickandoci apparirà una piccola finestra di dialogo che permetterà l'input dei dati 
				sull'utente. Clickando successivamente su Ok, apparirà il vero e proprio pannello per 
				giocare. La finestra è ora suddivisa in due parti (inferiore e superiore).
				Nella superiore vi è disegnato uno sfondo con l'aereo e il cannone.
				La parte inferiore gestisce l'input dell'utente. È possibile inserire la velocità e l'angolo 
				iniziali del colpo attraverso dei textfield (su cui verrà effettuato un test sui dati
				che contengono). Se si preme il pulsante SPARA senza definire una strategia partirà un singolo colpo 
				con i dati dei textfield. E' possibile altrimenti definire delle strategie: 
				Strategia-> Numero Colpi e Strategia->Tattica Sparo.
				E' possibile per esempio modificare	il numero di colpi da sparare. 
				Se il numero di colpi è maggiore di uno sarà possible definire per ognuno di questi (eccetto il primo) 
				anche delle variazioni rispetto ai valori inseriti nel textfield. Sarà inoltre possibile salvare 
				strategie per un successivo utilizzo, e caricarne di precedenti. 
				Clickando su Tipo Velivolo sarà possibile definire la forma del velivolo (simbolica, statica, animata)
				Nell'ultima voce della barra (Menu) si troveranno le voci: 
				Punteggi: che permette la visualizzazione dei 10 maggiori punteggi realizzati.	
				Esci:	che permette il ritorno alla finestra principale del programma.								

------------------------------------------------------------------------------------------------------------
FEATURE AGGIUNTIVE RISPETTO ALLE SPECIFICHE:
Per gestire in modo più efficiente i suoni si è deciso di utilizzare
una libreria esterna a quelle standard di java. La libreria è vorbisspi.
Questa scelta è stata necessaria poichè altrimenti non sarebbe stato possibile
gestire file con un formato diverso dal .wav, notevolmente pesanti rispetto per 
esempio a file in decodifica .ogg (facilmente gestibili con questa libreria).
Per maggiori informazioni riguardo alla libreria vorbisspi consigliamo di visitare:  
				http://www.javazoom.net/vorbisspi/vorbisspi.html

Rispetto alle specifiche il gioco permette il salvataggio/caricamento di strategie.
In più il gioco permette l'impostazione di alcuni parametri di gioco generali (vedi Impostazioni).
Inoltre il programma utilizza un LookAndFeel particolare definito dagli autori del progetto attraverso un file .xml
questo stile si chiama synth ed è stato creato partendo dallo stile base synthLookAndFeel di java, 
ma cambiando rispetto a quest'ultimo molte cose.
Lo stile synth è definito nel file synth.xml
------------------------------------------------------------------------------------------------------------
DESCRIZIONE GENERALE DELLE CLASSI DEL PROGETTO:
MyGeneralJPanel: 		Da questa classe ereditano tutti i pannelli utilizzati dal programma.
MyPanelIniziale:		Estende MyGeneralJPanel, e serve per accedere ai vari pannelli del gioco.
MyPanelAnimazioni: 		Estende MyGeneralJPanel, contiene le animazioni e i disegni del gioco.
MyPanelOptions:	   		Estende MyGeneralJPanel, gestisce l'interfaccia con l'utente.
OggettoInMovimento: 	Classe astratta che rappresenta un generico oggetto in movimento (aereo, proiettile).
Proiettile:				Estende OggettoInMovimento e rappresenta un proiettile in moto.
Velivolo:				Estende OggettoInMovimento e rappresenta il velivolo nell'aerea grafica.
TraiettoriaAbstract: 	Classe astratta che rappresenta una generica traiettoria (di proeittile o aereo).
TraiettoriaVelivolo: 	Estende TraiettoriaAbstract e rappresenta la traiettoria di un velivolo.
						Gestisce sia la traiettoria per il bouce che quella orizzontale uniforme del velivolo.
TraiettoriaProiettile: 	Estende TraiettoriaAbstract e rappresenta la traiettoria di un proiettile.
						Traiettoria calcolata con eulero in avanti.
						
		NB Riguardo i calcoli delle traiettorie si è scelto di non calcolare a priori tutti i punti
		della traiettoria, ma di calcolarne uno alla volta su richiesta tramite un metodo (getSucc), per una
		maggiore flessibilità della classe.
		
Cannone:				Gestisce la rappresentazione e la rotazione del cannone.
Punteggio:				Rappresenta il punteggio di un giocatore.
Strategia:				Rappresenta una generica strategia di gioco.
Settings:				Rappresenta un insieme di valori che definiscono le impostazioni generali del gioco.
ToFile:					Classe astratta che definisce i metodi comuni a tutte le classi che devono 
						essere serializzate/deserializzate. Si noti che come path per il salvataggio è usata 
						una directory nella home dell'utente (sotto linux ~/.airbum )
GestioneStrategia:		Estende ToFile e gestisce le strategie del giocatore e il loro caricamento/salvataggio.
GestionePunteggi:		Estende ToFile e gestisce il caricamento/salvataggio/aggiornamento dei punteggi. 
GestioneSettaggiGenerali:Estende ToFile e gestisce il caricamento/salvataggio delle impostazioni generali.
Impact:					Gestisce il check delle collisioni.
GestioneErrori:			Classe statica per la gestione degli errori/eccezioni.
MyAudioPlayer:			Implementa l'interfaccia Runnable, e gestisce i suoni del gioco.
MyDialogAbout:			Estende JDialog e gestisce l'about del programma.
MyDialogInputPlayer:	Estende JDialog e gestisce l'input del nome e del cognome del giocatore.
MyDialogPunteggi:		Estende JDialog e gestisce la visualizzazione dei 10 migliori punteggi realizzati.
MyDialogStrategie:		Estende JDialog e gestisce la creazione/caricamento/salvataggio delle strategie dell'utente.
WindowGame:				Estende JFrame. Imposta il lookandfeel generale del programma.
Main:					L'entry point del programma
----------------------------------------------------------------------------------------------------------

GUIDA ALLA COMPILAZIONE/ESECUZIONE DEL PROGETTO:

- Per compilare il progetto dare il comando:

		make
		
	se si dispone delle make utils;
	altrimenti usare:
	
		javac -sourcepath src src/Main.java -d bin -source 5 -encoding UTF-8
		
		(da notare che è stato usato utf-8)
		
- AIRBUM va' lanciato fuori dalla cartella bin/ con il comando:

		./airbum.sh 

 (ricordarsi di eseguire un chmod +x airbum.sh nel caso lo script non avesse i permessi di esecuzione)		
 
			oppure con
		java -cp bin/:resources/:lib/vorbis/* Main
		
	in modo che le resources vengano viste correttamente.

- È anche possibile creare un file jar con il comando:
		
		make jarfile
	
Il quale fa uso di bash e di uno script (createjar.sh)
 per scompattare le librerie vorbisspi e creare poi il file jar
		
_N.B.:_
	In ambiente windows usare il comando: java -cp .\bin;.\resources;.\resources\vorbis\* Main
	
_N.B.:_ 
	La propria home deve poter essere scrivibile nel path ~/.airbum/ per i settaggi generali di gioco
	e per i punteggi.
------------------------------------------------------------------------------------------------
BUG NOTI:
- Riguardo l'interfaccia grafica si precisa che java ha un bug riguardo la gestione con il window
	manager, quindi con gestori tipo fluxbox l'effetto visivo potrebbe essere leggermente
	differente che con metacity (gnome) o altri.
	L'interfaccia è stata quindi resa soprattutti compatibile con la gestione, da parte di java, dei
	windows manager metacity e il gestore di finestre di Windows.
- Riguardo alla gestione dei suoni si avvisa che la riproduzione di uno stream audio risulterà bloccante in 
    caso di assenza del mixing-hardware. Ciò è dovuto al fatto che Java/AudioSystem richiede che la linea 
    audio sia totalmente libera al momento della riproduzione di uno stream audio.
  	
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.