Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
In questa tesina di maturità ho voluto presentare Conquest of Paradise, un gioco a piattaforme single-player scritto in linguaggio JAVA. Nel corso dei 9 diversi livelli, pensati secondo la simbologia dantesca del numero 3,
propone al giocatore di “aiutare” Dante nella sua riconquista del Paradiso tenuto in scacco dal Diavolo aiutato da tutti i “cattivi” che, in un modo o nell’altro, hanno fatto parlare di loro durante la Storia. Da Erode a Hitler passando per Dracula e Stalin l’utente dovrà avvicinarsi sempre di più a Satana cercando di sconfiggerlo nell’ultimo livello.
Ogni Boss di livello è aiutato dagli stessi loschi personaggi che, durante la permanenza sulla Terra, lo hanno coadiuvato nelle sue malefatte.
I livelli in un crescendo di difficoltà sono organizzati in ordine cronologico sulla linea del tempo seguendo passo passo l’avvicendarsi dei cattivi rappresentati: Erode prima di Nerone, Jack lo Squartatore prima di Stalin e a seguire tutti gli altri. Il gioco, pur essendo single-player in senso stretto, permette l’utilizzo, sulla stessa copia, di giocatori diversi, ognuno con la sua percentuale di completamento e con i comandi da lui scelti, modificabili dal menu.
Il menu, sempre scritto in Java, è un progetto “autonomo” del componente del gruppo Guido Magrin che ha creduto fortemente nella sua idea di un menu animato, sebbene non fosse di facile realizzazione. E’ giusto precisare che ogni singolo elemento grafico presente nel gioco è originale essendo stato realizzato da un duo di disegnatori esterni che hanno lavorato sulle precise richieste dei membri del gruppo. E’ stata così seguita l’impostazione del lavoro che avviene nella realtà dove, le software house, che producono videogiochi, non si prendono in carico anche la parte grafica degli stessi ma la assegnano ad aziende specializzate del settore lavorando quindi “solo” sul codice che la anima oltre a tutta l’effettiva struttura del gioco stesso. E’ quindi motivo di orgoglio dire che, in via teorica, il prodotto è assolutamente commercializzabile non avendo violato alcun vincolo in materia di copyright o diritto d’autore. Partendo quindi dall'analisi di questo videogioco, ho anche effettuato nella tesina anche dei collegamenti interdisciplinari con le varie materie scolastiche.
Informatica - Java (gioco), SQL (Pagina web con database).
Sistemi - Programmazione JSP (Pagina web, www.conquestofparadise.tk).
Italiano - Dante (Inferno e Paradiso).
Storia - Russia (Stalin - comunismo), Germania (Hitler - nazismo), Francia (Napoleone).
-Menu
Il menu essendo stato fin da subito sviluppato come progetto completamente indipendente
dal gioco e, solo verso la fine, unito ad esso, merita un ampio paragrafo a sé stante
scollegato, ma non troppo, da quanto detto fin qui.
Allo scopo di renderlo visivamente gradevole, non offrendo Swing alcun componente che
si potesse avvicinare a risultati degni di nota, è stato deciso di implementare delle apposite
librerie appartenenti al progetto Vlcj che potessero offrire funzionalità adatte a raggiungere
lo scopo ambito. Vlcj (acronimo di VLC Java) è un progetto open source completamente
gratuito che permette di integrare alla perfezione un componente MediaPlayer in una
qualsiasi interfaccia Swing per consentire la riproduzione di video tramite il noto lettore
multimediale VLC; al fine di utilizzare Vlcj si è reso necessario importare nel progetto le
seguenti librerie:
- Vlcj (versione 2.2.0);
Jna, acronimo di Java Native Access (versione 3.5.0);
- Platform (versione 3.5.1).
-
Inoltre, per la corretta visualizzazione dei video, è stato indispensabile includere all’interno
della cartella delle risorse le librerie libvlc.dll e libvlccore.dll proprie dell’installazione di
VLC; entrambe necessitano a loro volta di altri file, i plugin di VLC, che permettono la
decodifica e riproduzione di tutti i contenuti multimediali più conosciuti.
Dal momento che Vlcj richiede librerie differenti a seconda che si stia usando una versione
della JVM (Java Virtual Machine) a 32 o 64 bit è stato necessario implementarle entrambe
insieme ad un sistema che controlla la versione da caricare in maniera runtime.
Oltre a riprodurre video di qualsiasi genere, Vlcj consente anche di integrare un Player
Audio all’interno dell’applicativo in grado di “suonare” ogni genere di file musicale; tale
funzionalità è adoperata per la riproduzione della colonna sonora. I pulsanti sono realizzati
tramite semplici JLabel Swing ad ognuna delle quali è associato un array di immagini
rappresentanti i bottoni. Ciascun array presenta dalle 3 alle 4 immagini differenti:
l’immagine del pulsante standard, l’immagine del pulsante selezionato, l’immagine del
pulsante premuto e, in alcuni casi, l’immagine del pulsante non disponibile (quindi in
bianco e nero). Il caricamento dinamico delle immagini è realizzato tramite appositi
Keyboard Listener; ogni pulsante è dotato di un proprio metodo in grado di renderlo
funzionante. Essendo tutti i bottoni istanziati, creati e posizionati all’avvio del programma è
sufficiente che i metodi cambino il valore dell’attributo di visibilità tramite il metodo
setVisible() con “True” per visualizzarli, “False” per nasconderli. Sono presenti pulsanti per
attivare e disattivare Musica ed Effetti Sonori (sia del gioco che del menu) corredati di
appositi led che, tramite l’assunzione di colore verde o rosso, segnalano lo stato di
attivazione delle rispettive funzioni. Ove necessario (per esempio nell’indicazione in alto a
sinistra di: “Benvenuto, nome_giocatore”) è stato caricato e usato il font adoperato per la
realizzazione di tutti gli altri pulsanti, in maniera da tenere continuità grafica con il resto del
menu (il font utilizzato è denominato 1456Gutenberg). Il menu supporta il caricamento
runtime di utenti salvati nella cartella data/ (della quale si è largamente parlato in
precedenza), del livello da essi sbloccato e dei loro eventuali comandi personalizzati.
L’operazione è portata a compimento svolgendo, in ordine, i seguenti compiti: caricamento
della lista degli utenti precedentemente creati dal file listaUtenti.cqp, accesso a tutte le
cartelle delle quali è stato trovato un riscontro nel file precedentemente letto, caricamento
dei file relativi al massimo livello sbloccato (livello.cqp) e ai comandi personalizzati
(comandi.cqp). E’ importante sottolineare che il menù non si occupa mai del salvataggio
Conquest of Paradise! 11
né degli utenti né delle loro impostazioni personalizzate, tale compito è affidato
esclusivamente al gioco stesso.
Il menu è in grado di gestire il cambio dei comandi assecondando le esigenze e
preferenze dell’utente; sono supportati tutti i tasti dalla lettera ‘a’ alla ‘z’ e i numeri da ‘0’ a
‘9’ nonché la barra spaziatrice (il tasto ‘escape’, unico tasto non modificabile, permette di
mettere in pausa il gioco).
Prima che l’utente apporti modifiche, i tasti sono così mappati:
- d, movimento avanti;
a, movimento indietro;
- w, salto;
- barra spaziatrice, sparo.
-
Così come il resto del gioco, anche il menu risulta essere completamente scalabile in ogni
sua parte con una risoluzione teorica massima di 1920x1080, risoluzione oltre la quale il
video di background inizierebbe a perdere definizione.
Un limite noto è l’incompatibilità con sistemi di tipo Macintosh, non essendo Vlcj in grado
di caricare le proprie librerie su tali architetture. Questa problematica è stata però risolta
effettuando un controllo durante le prime fasi dell’applicativo permettendo, agli utenti Mac,
di fruire di un menu statico in maniera “trasparente”.
-Sito web
A supporto del progetto è stato realizzato un sito web dinamico di presentazione scritto in
linguaggio Php ( http://conquestofparadise.tk ). Esso è composto da una parte statica
scritta in HTML che descrive brevemente le caratteristiche del gioco (oltre a consentirne il
download) e da una parte dinamica che permette all’utente di segnalare eventuali errori
riscontrati nell’utilizzo per sottoporli all’attenzione degli “sviluppatori”. Tutto ciò è stato
possibile utilizzando il noto servizio di web hosting Altervista che offre, in forma
completamente gratuita, uno spazio web, un motore Php e un database MySQL;
successivamente tramite il sito http://dot.tk si è ottenuto un dominio di tipo .tk
(gratuitamente, sfruttando la curiosa politica dell’isola di Tokelau) reindirizzando poi ad
esso il domain name di Altervista.
Conquest of Paradise! 12
Suddivisione dei compiti
•
A differenza del lavoro riguardante il menu che, come già detto precedentemente, è stato
svolto totalmente da Guido Magrin, è difficile, per quanto concerne il gioco, assegnare la
paternità di una o dell’altra parte a ciascuno dei restanti componenti.
Si procede quindi a macro aree di più facile assegnazione:
Massimo Belloni ha ideato e scritto l’algoritmo di ridimensionamento alla base della
gestione grafica dell’applicazione ponendolo come punto di partenza alla realizzazione
della stessa. Oltre a questo ha ovviamente contribuito alla scrittura e all’ideazione di tutto il
codice che gestisce l’applicazione; ha infine realizzato, autonomamente, il sito web di
presentazione scritto sopra.
Stefano Bartoli ha, insieme a Belloni, scritto il maggior numero di “linee di codice”
dell’applicativo contribuendo con idee e spunti risolvendo anche alcune problematiche
difficili e complesse. Ha infine realizzato in autonomia l’intero livello 9, a partire dall’idea
alla base dello stesso.
Ivan Capra si è occupato principalmente della fase di “aerea” di Dante e della sua
gestione scrivendo la classe Salto e la classe Ostacoli, che sono, probabilmente, le più
complesse a livello di algoritmo di tutto il progetto. Si è infine occupato della risoluzione di
tutti i bug introdotti dalle sue classi e non.
Ogni componente del gruppo ha portato a termine i compiti assegnatigli con tempismo
ragguardevole secondo lo schema temporale riportato nel prossimo paragrafo.
Calendario avanzamento attività
•
Il progetto ha preso forma durante la prima settimana di novembre 2012; nel primo
incontro, come è ovvio che sia, si è decisa la linea che il gioco avrebbe dovuto prendere
sotto tutti i punti di vista. Guardando a posteriori quel primo incontro è interessante vedere
come tutte le idee che si erano pensate, anche le più difficili o fantasiose, sono state
effettivamente realizzate.
Nelle settimane immediatamente successive si è valutata la fattibilità di quanto pensato
iniziando a scrivere le prime linee di codice. L’inizio ufficiale del progetto è quindi databile
intorno al 15 novembre. Successivamente il progetto è avanzato in maniera costante
senza incappare in battute d’arresto importanti o in problemi degni di nota; da sottolineare
come, proprio in questo periodo, Guido Magrin si “staccava” dal progetto principale per
cominciare la stesura del suo menu. Data fondamentale e “storica” per Conquest of
Paradise è quella del 21 dicembre in quanto, proprio in quella data, si è conclusa la
realizzazione del primo livello quindi si è conclusa tutta la struttura portante e reggente
dell’applicazione che da lì in poi è stata “semplicemente” ampliata.
Mantenendo quindi il ritmo di un livello a settimana salvo qualche eccezione data dal
carico di studio scolastico o da impegni vari si è arrivati alla conclusione dei primi 8 livelli in
data 2 aprile 2013. Il livello 9, più impegnativo dei precedenti, è stato realizzato in un paio
di settimane. Il progetto, pur continuando a risolvere bug e problemi continuamente
riscontrati, è stato terminato durante la seconda settimana del mese di maggio
integrandolo con il menu di Magrin, anch’esso concluso negli stessi momenti.
L’organizzazione del lavoro è stata ben bilanciata e armoniosa, ognuno ha svolto senza
ritardi o procrastinamenti i compiti a lui assegnati; la “tabella di marcia” è stata rispettata a
pieno riuscendo a sviluppare un gioco completo, funzionante e assolutamente utilizzabile
e fruibile.
Conquest of Paradise! 13
Consegna e distribuzione progetto
•
Conquest of Paradise è, all’atto pratico, costituito da un file eseguibile .jar e dalle directory
citate lungo questa relazione. Il download dello stesso è disponibile sul sito
http://conquestofparadise.tk o richiedibile su chiavetta USB.
Non è necessaria alcuna configurazione aggiuntiva rispetto all’installazione della JVM.
Sullo stesso sito verranno rilasciati anche tutti gli aggiornamenti a seguito di modifiche o
migliorie.
Conquest of Paradise! 14
Conquest of
Paradise
Area di Progetto 5
Informatica
A.S. 2012-2013
Scelta del linguaggio java
Applicativo Java (Java bytecode)
Java Virtual Machine (JVM)
Sistema operativo (Microsoft Windows, Apple Mac, Linux, …)
Hardware
Computer
26/09/2022 Magrin Guido - 5 Inf A - AS 2012-2013
Evoluzione del protagonista- Dante
26/09/2022 Magrin Guido - 5 Inf A - AS 2012-2013
Scenari di gioco
livelli 1-2-3 livelli 4-5-6 livelli 7-8-9
26/09/2022 Magrin Guido - 5 Inf A - AS 2012-2013
Primo set di scenari
1° livello
2° livello
3° livello
26/09/2022 Magrin Guido - 5 Inf A - AS 2012-2013
Secondo set di scenari
4° livello
5° livello
6° livello
26/09/2022 Magrin Guido - 5 Inf A - AS 2012-2013
Terzo set di scenari
7° livello
8° livello
9° livello
26/09/2022 Magrin Guido - 5 Inf A - AS 2012-2013
Struttura gerarchica delle risorse
img
root backgrounds
media font characters
sound menu
video ostacoli
vlc panelGameOver
data panelPausa
utenti nomeUtente1
nomeUtenteN
26/09/2022 Magrin Guido - 5 Inf A - AS 2012-2013
Realizzazione del Menu- 1
Librerie del progetto Vlcj:
• Vlcj - 2.3.1
• JNA (Java Native Access) - 3.5.2
• Platform - 3.5.2
• libvlc.dll e libvlccore.dll - 2.0.7
Altre librerie:
• Prompt - 0.99.8
26/09/2022 Magrin Guido - 5 Inf A - AS 2012-2013
Realizzazione del Menu- 2
26/09/2022 Magrin Guido - 5 Inf A - AS 2012-2013
Realizzazione del Menu- 3
Creazione nuovo utente o caricamento esistente
26/09/2022 Magrin Guido - 5 Inf A - AS 2012-2013
Realizzazione del Menu- 4
Creazione nuovo utente
26/09/2022 Magrin Guido - 5 Inf A - AS 2012-2013
Realizzazione del Menu- 5
Verifica della presenza di un
utente con lo stesso nome già
salvato
Controlli presenza e
lunghezza minima e massima
nome nuovo utente
26/09/2022 Magrin Guido - 5 Inf A - AS 2012-2013
Realizzazione del Menu- 6
Caricamento utente già esistente
26/09/2022 Magrin Guido - 5 Inf A - AS 2012-2013
Realizzazione del Menu- 7
dall’utente
Caricamento dei livelli sbloccato
e dei suoi comandi personalizzati.
26/09/2022 Magrin Guido - 5 Inf A - AS 2012-2013
Realizzazione del Menu- 8