La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

ATTIVITÀ PROGETTUALE LINGUAGGI E MODELLI COMPUTAZIONALI L-M Un linguaggio per la descrizione di coreografie giocabili STUDENTE: BACCHILEGA SIMONE A.A 2013/2014.

Presentazioni simili


Presentazione sul tema: "ATTIVITÀ PROGETTUALE LINGUAGGI E MODELLI COMPUTAZIONALI L-M Un linguaggio per la descrizione di coreografie giocabili STUDENTE: BACCHILEGA SIMONE A.A 2013/2014."— Transcript della presentazione:

1 ATTIVITÀ PROGETTUALE LINGUAGGI E MODELLI COMPUTAZIONALI L-M Un linguaggio per la descrizione di coreografie giocabili STUDENTE: BACCHILEGA SIMONE A.A 2013/2014

2 INTRODUZIONE Ispirazione presa dal gioco multipiattaforma Just Dance Definizione di una semplice grammatica per la descrizione di una coreografia Realizzazione di un parser che prenda in input un testo e ne esegua l’analisi lessicale, sintattica e semantica Generazione di diversi outputs Implementazione di un sistema per la generazione di coreografie ed effettive partite

3 COSA CI SERVE… ESPRESSIONI BASE something : : COSTRUTTO PER SHORTCUTS ; …

4 COSA CI SERVE… COSTRUTTO PER CICLO { … } COSTRUTTO SIMILE ALLO SWITCH { 1: Alla prima iterazione del ciclo una certa mossa.. 2: Alla seconda un’altra… }

5 ALTRE OSSERVAZIONI Servono altre informazioni accessorie (titolo, path canzone, video…) Sì è cercato di anticipare già a livello sintattico il controllo della «legittimità» di alcune mosse e costrutti Esempi  Un movimento libero non avrà mai un punteggio associato  Una mossa istantanea (fist, shake..) non avrà mai una durata ≠ 1  Switch solo dentro a un ciclo  Si sarebbe potuta ottenere una grammatica ancora più semplice, demandando il tutto a livello semantico (un po’ brigoso…)

6 LA GRAMMATICA - TOKENS SKIP : { " | "\r" | "\t" | "\n"} } TOKEN : { | | | | <DIR: "left" | "right" | "up" | "down"| "forward"> | | ( | )*> | <CHARSEQ: "\"" ( | " " | | )+ "\""> | | | }| "-"> }

7 LA GRAMMATICA (versione 1) – PRODUZIONI 1 ::= ::= ( )* ::= ( | ) ::= Move ::= ( | ) ::= ( ( | ) ) ::= ( | ) Ammetto coreografia vuota

8 LA GRAMMATICA (versione 1) – PRODUZIONI 2 ::= ( ( | ) ) ( SpanExp )? ::= ( ( | ) ) ::= ( )? ::= ( ( | ) )+ ::= ( )+ ::= ( ( | ) ) ::= Un Cycle può contenere altre Instruction, quindi altri SingleStep o Cycle → SELF EMBEDDING Mossa libera non ha punteggio associato Mossa istantanea non ha span associato

9 OSSERVAZIONI SU GRAMMATICA E LINGUAGGIO La grammatica è di tipo 2 secondo la classificazione di Chomsky Le regole di produzione sono tutte del tipo A → α con α є (VT U VN)* ed A є VN Il linguaggio generato è di tipo 2 A causa della produzione associata al simbolo non terminale Cycle tale per cui A ⇒ * α₁ A α₂ con α₁, α₂ є V+ ed A є VN La grammatica è LL(1) Per ogni produzione con più alternative nella parte destra, gli insiemi di Starter Symbols risultano disgiunti (condizione necessaria) Nessuna produzione genera la stringa vuota Ɛ

10 GRAMMATICA (versione 2) Nella grammatica presentata prima, nessun ciclo è «inutile» ::= ( ( | ) )+ Limite: è possibile definire variabili solo al livello esteriore Apportando una modifica (minima!) posso giocare su questo trade-off ::= ( ( | ) )+ Ora è possibile definire variabili anche all’interno dei cicli, ma posso creare cicli che di fatto non generano mosse… Si può vedere facilmente che ogni frase del linguaggio generato dalla grammatica versione 1 è una frase lecita anche qui (ma non è detto ovviamente il viceversa)

11 SIGNIFICATO DELLE VARIABILI IN UN CICLO Esempio define x0 shake right points: 50; repeat 2 times { do x0; define x0 free; do x0; } do x0; Output desiderato: shake right points: 50 free shake right points: 50 free shake right points: 50 Al primo ciclo sarà shake right… Sarebbe desiderabile anche al secondo! Eventuali ridenominazioni non devono essere percepite all’esterno

12 CONTROLLI SEMANTICI Coreografia vuota Durata totale della coreografia sopra una certa soglia Uso di variabili non definite Swing: direzione di partenza ≠ direzione di arrivo Numero di ripetizioni di un ciclo (0 non ha senso, 1 è inutile) OnIterationElement: ha senso solo se il numero dell’iterazione è minore delle ripetizioni del ciclo (la prima iterazione è la numero 1) Punteggi e durate delle mosse

13 ARCHITETTURA SISTEMA - PACKAGES cc: classi relative allo scanner e parser  cc.syntaxtree: classi per la costruzione dell’albero sintattico generate da JTB  cc.visitor: classi generate da JTB e relative implementazioni dei visitors.  gui: classi riguardanti l’interfaccia grafica  media: classi wrapper per lo stream audio e video  moveset: gerarchia di classi accessorie per contenere le info relative a ciascuna mossa (direzione, span, punteggio, riferimento al pittogramma…) e la loro valutazione  pictograms: immagini utilizzate nella gui

14 VISITORS Visitor ottenuti dall’estensione di alcune implementazioni già fornite da JTB Estensioni da DepthFirstVoidVisitor: SemanticsVisitor: visitor in cui è concentrato il controllo semantico SequenceVisitor: visitor per la generazione dell’effettiva coreografia giocabile Estensioni da DepthFirstVoidArguVisitor : TreeVisitor: visitor per la generazione grafica dell’albero Estensioni da DepthFirstRetVisitor : PrinterVisitor: visitor per la generazione del file testuale

15 INTERFACCIA GRAFICA 1 AREA TESTUALE INPUT UTENTE AREA PER VISUALIZZARE ALBERO SINTATTICO MESSAGGI ALL’UTENTE (WARNINGS, ERRORI…) MENU BAR PER CONTROLLO INPUT E GENERAZIONE OUTPUT (ITEMS ABILITATI E DISABILITATI CON UN CERTO CRITERIO…)

16 INTERFACCIA GRAFICA 2

17 WII(RE)MOTE Telecomando con tasti + accelerometro integrato che permette di percepire inclinazioni e rotazioni (non c’è giroscopio!) + sensore infrarosso (non utilizzato ai fini del progetto…) Libreria WiiUseJ: API Java per utilizzare e ricevere info dei telecomandi Dongle bluetooth (+ stack compatibile) Banalmente, basta fare l’overriding di WiimoteListener, ottenere un riferimento ai Wiimote connessi e agganciarvi il listener!

18 STRUMENTI UTILIZZATI Linguaggio di programmazione: Java jdk 1.7.0 Ambiente di sviluppo: Eclipse Kepler / NetBeans 7.4 Generazione grammatica e parser: JavaCC (plugin per eclipse) Librerie di supporto: Jlayer 1.0.1 per riproduzione audio VlcJ 3.0.1 per riproduzione video WiiUseJ 0.12b per interfacciamento e ricezione eventi del WiiRemote


Scaricare ppt "ATTIVITÀ PROGETTUALE LINGUAGGI E MODELLI COMPUTAZIONALI L-M Un linguaggio per la descrizione di coreografie giocabili STUDENTE: BACCHILEGA SIMONE A.A 2013/2014."

Presentazioni simili


Annunci Google