LINGUAGGIO PER LA DESCRIZIONE DI ESERCITI E LA CREAZIONE DI LISTE PER IL GIOCO DI BATTAGLIE TRIDIMENSIONALI WARHAMMER FANTASY WarArmy Linguaggi e Modelli.

Slides:



Advertisements
Presentazioni simili
XmlBlackBox La presentazione Alexander Crea 11 Aprile 2010 La presentazione Alexander Crea 11 Aprile 2010.
Advertisements

INFORMATICA Altre Istruzioni di I/O
Introduzione al DTD Mario Arrigoni Neri.
Introduzione ad XML Mario Arrigoni Neri.
Unità D2 Database nel web. Obiettivi Comprendere il concetto di interfaccia utente Comprendere la struttura e i livelli che compongono unapplicazione.
Analizzatori Lessicali con JLex
Sintassi (prima parte)
Analizzatori Sintattici con Cup Giuseppe Morelli.
Traduttore diretto dalla sintassi (seconda parte)
LR Parser Giuseppe Morelli. La maggior parte dei parser Bottom-Up è costituita dai cosiddetti parser LR(k) dove: L indica il verso dellanalisi della stringa.
XmlBlackBox La presentazione Alexander Crea 7 Giugno 2010 La presentazione Alexander Crea 7 Giugno 2010.
RB-alberi (Red-Black trees)
Modulo o Form in Html.
Macchine non completamente specificate
Algoritmi e Strutture Dati (Mod. B)
Corso di Laurea in Ingegneria per lAmbiente e il Territorio Informatica per lAmbiente e il Territorio Docente: Giandomenico Spezzano Tutor: Alfredo Cuzzocrea.
INSIEMI NUMERABILI L’analisi matematica introduce il concetto di insieme numerabile come insieme i cui elementi possono essere “contati” ossia che possiede.
EasyDLX Università degli Studi di Bologna Facoltà di Ingegneria Un linguaggio che realizza un sottoinsieme dellInstruction Set Architecture del DLX Realizzato.
INTRODUZIONE l sistema operativo è il primo software che lutente utilizza quando accende il computer; 1)Viene caricato nella memoria RAM con loperazione.
Progetto per lesame di Linguaggi e Modelli Computazionali LS Chiara Chiara Gualtieri.
A D IET – P ROGETTO PER L ESAME DI L INGUAGGI E M ODELLI C OMPUTAZIONALI LS Prof. Enrico Denti Sviluppato da Fabio Bracci – AA 2009/2010.
BUILDING A USER INTERFACE Using CRYSTAL REPORTS. COME UNAPPLICAZIONE COMUNICA CON LUTENTE? Problema comune a tutte le applicazioni informatiche Forse.
{ CrashLang Un linguaggio per raccogliere i risultati di un crash test Attività progettuale di Linguaggi e Modelli Computazionali M Anno Accademico: 2010/2011.
ANTLR V.3 Renzi Alberto.
Linguaggi e Modelli Computazionali M Prof. Enrico Denti
Progetto desame di Gianluca Gallo Linguaggi e modelli computazionali LM Prof. Enrico Denti.
Linguaggi e Modelli Computazionali LS - Prof E.Denti
CineMan Linguaggio per la descrizione della programmazione di cinema
Facoltà di Ingegneria – Università di Bologna
Corso di Laurea Specialistica in Ingegneria Informatica Itinerari aerei Progetto per lesame di Linguaggi e Modelli Computazionali LS realizzato da Stefano.
CODIFICA Da flow-chart a C++.
S ::= Formazione Formazione ::= NomeSquadra Team NomeSquadra ::= Team ::= Schema Tabellino | Tabellino Schema ::= Difesa Tabellino ::= ElencoTitolari.
Linguaggio per la generazione di biglietti da visita
Linguaggi e Modelli Computazionali a.a. 2009/2010
Gianfranco Zampolini Progetto per il corso di: Linguaggi e Modelli Computazionali LS EM Linguaggio per la Descrizione di un Evento Musicale.
Corso di Laurea Specialistica in Ingegneria Informatica Model Drive Applicazione per il pilotaggio di veicoli Esame di Linguaggi e Modelli computazionali.
Elenchi in Excel E’ possibile inserire le voci del nuovo elenco oppure
Linguaggi e modelli computazionali LS
Progetto di un linguaggio e interprete per giocare a MemoryPlus Progetto di:Docente: Vito La PortaEnrico Denti.
runhome Progetto di Linguaggi e Modelli Computazionali LS Luca Bueti
Corso di Laurea Specialistica in Ingegneria Informatica Previsione dei Consumi Elettrici = Progetto per lesame di Linguaggi e Modelli Computazionali LS.
Un linguaggio ed un interprete per il gioco Citadels
Progetto don’t you forget
Progetto Fireworks Simulatore di spettacoli pirotecnici
Tablabla Progetto di Valent Cristina
SQL File Manager un nuovo modo di gestire il filesystem….
Università degli Studi di Bologna Facoltà di Ingegneria Anno Accademico 2007/2008 Laurea Specialistica in Ingegneria Informatica Linguaggi e Modelli Computazionali.
Chess Game Visualizer Un interprete per Short Algebraic Notation Progetto per lesame di Linguaggi e modelli computazionali LS prof. Denti – A.A. 2007/08.
File e Funzioni Si possono distinguere tre tipi di file che vengono utilizzati in MATLAB: M-file: hanno estensione .m e in essi vengono memorizzati i.
Linguaggi e modelli computazionali LS Manni Tiziano
ATTIVITÀ PROGETTUALE LINGUAGGI E MODELLI COMPUTAZIONALI L-M Un linguaggio per la descrizione di coreografie giocabili STUDENTE: BACCHILEGA SIMONE A.A 2013/2014.
LABVIEW Sommario Che cosa è uno strumento virtuale (VI) creato con LABVIEW Parti di un VI: pannello frontale diagramma a blocchi Confronto tra il principio.
Microsoft Word Interfaccia grafica
Introduzione a Javascript
DRAUGHTS Linguaggi e Modelli Computazionali LS Linguaggio e interprete per effettuare una partita di dama inglese contro un’intelligenza artificiale Progetto.
Giannicola Spezzigu Accordo: sovrapposizione di 3 o più suoni Ogni sigla denota un accordo, ossia i suoni da cui esso è formato Accordi e.
Trading EToro Un linguaggio per descrivere e gestire operazioni di borsa Progetto di Linguaggi e Modelli Computazionali LS Prof. Enrico Denti Mancini Laura.
Calendar Generator Progetto Linguaggi e Modelli Computazionali LS Docente: Enrico Dentidi: Alberto Renzi.
Progetto di Linguaggi e modelli computazionali M Prof. Enrico Denti Progetto di: Francesco Paci.
DerIntCalculator La calcolatrice per integrali e derivate Progetto di Linguaggi e Modelli Computazionali M Prof. Enrico Denti Realizzato da: Gabriella.
Linguaggi e Modelli Computazionali LS Anno Accademico 2007/2008 Alessio Della Motta Un linguaggio per descrivere partite di Maraffone: il gioco più popolare.
Programmazione Attività di progettazione ed implementazione di programmi I programmi permettono di realizzare funzioni complesse su un hardware in grado.
CAKE Ambiente per la scrittura e la riproduzione audio di ricette per torte Linguaggi e Modelli Computazionali LSElisabetta Visciotti.
Eye Computer Sistema per l'interazione con un computer dotato di controllo oculare Linguaggi e modelli computazionali LS Realizzato da: Ciavarella Primiano.
Le basi di dati.
Access Breve introduzione. Componenti E’ possibile utilizzare Access per gestire tutte le informazioni in un unico file. In un file di database di Access.
Linguaggi e Grammatiche Alfabeto : insieme non vuoto di elementi detti simboli A = { a, b, c } Stringa : sequenza di simboli di un alfabeto ab abc abcab.
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
TeNG Linguaggio per la generazione di English Test Donato Cataldo Università di Bologna, facoltà di ingegneria Linguaggi e Modelli Computazionali '09/'10.
Transcript della presentazione:

LINGUAGGIO PER LA DESCRIZIONE DI ESERCITI E LA CREAZIONE DI LISTE PER IL GIOCO DI BATTAGLIE TRIDIMENSIONALI WARHAMMER FANTASY WarArmy Linguaggi e Modelli Computazionali L-S A.A Alessandro Pernafini

Introduzione Warhammer Fantasy è un gioco di battaglie fantasy Il gioco si svolge su un plastico raffigurante un campo di battaglia, sul quale due o più giocatori si sfidano l'uno con l'altro con le rispettive armate di miniature in plastica o in metallo Ogni armata appartiene ad un esercito ed è formata da diverse unità, ognuna con caratteristiche diverse Prima dell'inizio della partita i giocatori scelgono il punteggio massimo entro il quale deve essere scelta la composizione dell'armata Ogni pezzo schierato ha un proprio valore in punti dipendente dalla sua potenza e indicato nei manuali relativi a ciascun esercito Ogni armata deve essere costruita con dei criteri fondamentali relativi alla funzione di ciascuna unità che la compone Per mostrare la composizione dellarmata viene creata una lista che contiene le varie unità schierate e leventuale equipaggiamento aggiuntivo che viene dato loro

Caratteristiche del linguaggio Il linguaggio dovrà permettere di specificare: Informazioni sullesercito Nome Descrizioni delle unità Elenco degli oggetti magici Elenco degli stendardi Elenco dei poteri extra(se lesercito li prevede) Struttura della lista dellarmata che si vuole schierare Nome dellarmata Esercito a cui fa riferimento Limite di punti spendibili Elenco delle unità selezionate

Obiettivi Progettare un sistema che permetta di definire la struttura di un esercito con la descrizione di ogni singola unità per la successiva creazione di una lista delle unità da schierare nel corso di una partita Sviluppare un linguaggio semplice e di facile utilizzo per un giocatore che può essere suddiviso in due parti: Definizione di un esercito Creazione di una lista Realizzare un interprete che, data una stringa di caratteri in ingresso, ne valuti la correttezza sintattica e semantica e produca una struttura dati per mantenere le informazioni in memoria Realizzare una interfaccia grafica a supporto dellinserimento di informazioni Possibilità di stampare in PDF la lista dellarmata

Grammatica(1) WarArmy ::= ( ArmyDef | ArmyList )ArmyDefArmyList WarArmy ::= ( ArmyDef | ArmyList )ArmyDefArmyList Scope ArmyDef ::= "army" Text ( UnitDesc )+ MagicItemList MagicStandardList ( ExtraPowerList )? TextUnitDescMagicItemList MagicStandardListExtraPowerList ArmyDef ::= "army" Text ( UnitDesc )+ MagicItemList MagicStandardList ( ExtraPowerList )? TextUnitDescMagicItemList MagicStandardListExtraPowerList Struttura esercito UnitDesc ::= "unit" Text UnitSize Cost ( SpecialRules )? ( OptionDef )* ( MagicPoints )? ( StandardsPoints )? ( ExtraPoints )? TextUnitSizeCost SpecialRulesOptionDefMagicPointsStandardsPoints ExtraPoints UnitDesc ::= "unit" Text UnitSize Cost ( SpecialRules )? ( OptionDef )* ( MagicPoints )? ( StandardsPoints )? ( ExtraPoints )? TextUnitSizeCost SpecialRulesOptionDefMagicPointsStandardsPoints ExtraPoints Struttura unità MagicItemList ::= "magic" "items" ( Text Cost )+ TextCost MagicItemList ::= "magic" "items" ( Text Cost )+ TextCost Lista di oggetti magici MagicStandardList ::= "standards" ( Text Cost )+ TextCost MagicStandardList ::= "standards" ( Text Cost )+ TextCost Lista di stendardi

Grammatica(2) ExtraPowerList ::= "extra" "powers" ( Text Cost )+ TextCost ExtraPowerList ::= "extra" "powers" ( Text Cost )+ TextCost Lista di poteri extra UnitSize ::= "size" ( ( | ) )? Cost ::= "points" ( )? SpecialRules ::= "special" StringSequenceStringSequence OptionDef ::= "option" Text Cost TextCost MagicPoints ::= "magic" "items" "points" StandardsPoints ::= "standards" "points" ExtraPoints ::= "extra" "points" UnitSize ::= "size" ( ( | ) )? Cost ::= "points" ( )? SpecialRules ::= "special" StringSequenceStringSequence OptionDef ::= "option" Text Cost TextCost MagicPoints ::= "magic" "items" "points" StandardsPoints ::= "standards" "points" ExtraPoints ::= "extra" "points" Descrizione unità Text ::= ( )+ StringSequence ::= Text ( Text )*Text Text ::= ( )+ StringSequence ::= Text ( Text )*Text Stringhe di input

Grammatica(3) ArmyList ::= "armylist" Text "army" Text "points" ( Unit )+ Text Unit ArmyList ::= "armylist" Text "army" Text "points" ( Unit )+ Text Unit Struttura lista dellarmata Unit ::= "unit" Text Models ( Options )? ( MagicItems )? ( Standards )? ( ExtraPowers )? TextModelsOptionsMagicItemsStandardsExtraPowers Unit ::= "unit" Text Models ( Options )? ( MagicItems )? ( Standards )? ( ExtraPowers )? TextModelsOptionsMagicItemsStandardsExtraPowers Struttura di ununità inserita nella lista Models ::= "models" Options ::= "options" StringSequenceStringSequence MagicItems ::= "magic" "items" StringSequenceStringSequence Standards ::= "standards" StringSequenceStringSequence ExtraPowers ::= "extra" "powers" StringSequenceStringSequence Models ::= "models" Options ::= "options" StringSequenceStringSequence MagicItems ::= "magic" "items" StringSequenceStringSequence Standards ::= "standards" StringSequenceStringSequence ExtraPowers ::= "extra" "powers" StringSequenceStringSequence Descrizione di ununità inserita nella lista

Grammatica (4) } } Token Tipo dellunità: lord, hero, core unit, special unit, rare unit Riferito al costo: se presente andrà moltiplicato per il numero di modelli presenti nellunità

Esempio di esercito army Orcs and Goblins{ unit Ozag Greenskin{ size 1 points 375 L special Immune to Psychology, Hates Everybody, Da Immortulz option great axe points 6 weapons magic items points 100 standards points 50 extra points 50 } unit Orc Shaman { size 1 points 65 H option boar points 16 mounts option 2nd level wizard points 35 upgrades magic items points 50 } unit Goblins{ size 2-20 points 20 xmodel CU special Immune to Psychology, Stubborn } unit Orc Chariot { size 1 points 80 SU special Tusker Charge option additional orc crew points 5 extras } unit Titan { size 1 points 205 RU special Large Target, Terror, Stubborn, Longshanks, Fall Over, Giant Special Attacks } magic items { Sword of Striking points 15 Sword of Battle points 15 } standards { Spirit Totem points 50 Big Red Banner points 50 } extra powers{ High Strength 20 High Constitution 20 } UnitDesc UnitSize Cost Type SpecialRules OptionDef MagicPoints StandardsPoints ExtraPoints MagicItemList MagicStandardList ExtraPowerList

Esempio di lista dellarmata armylist mylist{ army Orcs and Goblins 1000 points unit Night Goblin Shaman{ models 1 options 2nd level wizard magic items Tricksy Trinket } unit Night Goblins{ models 50 options musician, standard bearer, goblin boss } unit Night Goblins{ models 20 options nets } unit Night Goblin Squig Herd{ models 3 } ArmyList ::= "armylist" Text "army" Text "points" ( Unit )+ Text Unit ArmyList ::= "armylist" Text "army" Text "points" ( Unit )+ Text Unit Unit ::= "unit" Text ModelsTextModels ( Options )? ( MagicItems )?OptionsMagicItems ( Standards )? ( ExtraPowers )? StandardsExtraPowers Unit ::= "unit" Text ModelsTextModels ( Options )? ( MagicItems )?OptionsMagicItems ( Standards )? ( ExtraPowers )? StandardsExtraPowers

Grammatica e linguaggio Grammatica: la grammatica è di tipo 2 (context free) secondo la classificazione di Chomsky. Infatti ci sono produzioni vincolate alla forma: A α con α є (VT U VN)* ed A є VN Linguaggio : il linguaggio generato risulta essere di tipo 3 perché la grammatica non contiene self- embedding

Grammatica e linguaggio(2) La grammatica è priva di ε-rules e la stringa vuota non può essere generata nemmeno a livello di scope in quanto sarebbe stato inutile definire o un esercito o una lista vuoti. Inoltre gli insiemi degli starter symbols corrispondenti alle parti destre delle produzioni alternative di uno stesso metasimbolo sono fra loro disgiunti, quindi il linguaggio risulta essere LL(1)

Schema di funzionamento(1) Sequenza di caratteri WarArmyParserTokenManager Lexer Sequenza di Token WarArmyParser Parser AST

Schema di funzionamento(2) AST Data Structure Visitor Tree Visitor

Strumenti utilizzati Linguaggio di programmazione Java jdk Ambiente di sviluppo Eclipse Indigo Generazione del parser e dello scanner JavaCC Eclipse plugin Generazione delle classi necessarie a creare lAST e del pattern visitor JTB Creazione di file PDF Libreria itext 5.1.3

Architettura: Packages parser: contiene le classi relative allo scanner ed al parser generate da JavaCC syntaxtree: contiene le classi utilizzate per la creazione dellAST generate da JTB visitor: contiene le classi generate da JTB e le implementazioni dellinterfaccia IVoidVisitor exceptions: contiene le classi che rappresentano le varie eccezioni semantiche wararmy: contiene le classi per lelaborazione e per rappresentare la struttura in memoria gui: contiene le classi relative alle interfacce grafiche

Architettura: parser Il package parser contiene le classi relative al Lexer, al Parser ed alle eccezioni sintattiche Parser: Realizzato da JavaCC; Rapporto Client/Server col Lexer; Restituisce lalbero generato, in modo che i vari visitor possano visitarlo ed interpretarlo. Il package syntaxtreecontiene le classi che rappresentano i nodi dellalbero, in particolare una per ogni metasimbolo della grammatica

Architettura: visitor Nel package visitor si trovano due classi che implementano linterfaccia IVoidVisitor generata da JTB. Entrambi i visitor effettuano unanalisi depth-first dellAST generato dal parser avvalendosi del meccanismo di double dispatch. Le classi presentano un metodo visit() per ogni classe dellAST le quali, a loro volta, prevedono un metodo accept() che rimpalla lazione sul visitor passando se stesso come oggetto da visitare DataStructureVisitor effettua unanalisi semantica e, se non ci sono stati errori semantici, produce una rappresentazione dellesercito o della lista creati, altrimenti lancia una SemanticException TreeVisitor solo se lanalisi semantica è andata a buon fine, produce una rappresentazione dei dati inseriti sotto forma di albero

Controlli semantici: esercito Il DataVisitor effettua i seguenti controlli semantici: il nome di ununità deve essere unico la dimensione minima di ununità deve essere minore della dimensione massima non ci possono essere regole speciali duplicate per una singola unità non ci possono essere nomi di opzioni duplicati per una singola unità non ci possono essere oggetti magici, stendardi o poteri extra duplicati

Controlli semantici: lista(1) Il DataVisitor effettua i seguenti controlli semantici: lesercito a cui la lista fa riferimento deve essere stato definito ununità inserita deve: essere stata definita nellesercito a cui la lista fa riferimento il numero di modelli che compongono lunità deve rispettare le dimensioni indicate nella descrizione dellunità il costo degli oggetti magici, stendardi o poteri extra assegnati allunità non deve superare il rispettivo limite definito nella descrizione dellunità unopzione, oggetto magico, stendardo o potere extra assegnato ad ununità deve essere stato definito nellesercito a cui la lista fa riferimento

Controlli semantici: lista(2) Il DataVisitor effettua i seguenti controlli semantici: nella lista deve essere presente almeno ununità di tipo H o L nella lista devono essere presenti almeno tre unità di tipo CU, SU o RU il costo totale della lista non deve superare il limite di punti imposto la somma dei costi delle unità di tipo H, L, RU non deve essere superiore al 25% del limite di punti imposto la somma dei costi delle unità di tipo SU non deve essere superiore al 50% del limite di punti imposto la somma dei costi delle unità di tipo CU non deve essere inferiore al 25% del limite di punti imposto non si possono inserire più di 3 unità uguali di tipo SU non si possono inserire più di 2 unità uguali di tipo RU

Linterfaccia grafica(1) Area di input Albero Area di output Errore semantico Errore sintattico

Interfaccia grafica(2) Form per la creazione di un nuovo esercito Alla pressione effettua dei controlli sulla validità dei dati inseriti Form per la creazione di ununità da aggiungere allesercito

Interfaccia grafica(3) Form per la creazione di una lista Alla pressione effettua dei controlli sulla validità dei dati inseriti

Collaudo Il sistema è stato collaudato attraverso limmissione di opportune frasi di input per: verificare la corretta segnalazione di errori sintattici verificare la corretta segnalazione di errori semantici verificare la corretta visualizzazione dellalbero verificare la corretta generazione del documento PDF Il sistema è stato testato anche da esperti del settore, ma privi di una qualsiasi competenza in ambito di programmazione, ei quali hanno giudicato positivamente lapplicazione Grazie ai loro test, sono riuscito a trovare alcuni bug che, altrimenti, non sarebbero venuti alla luce.

Sviluppi futuri Introduzione di sotto-opzioni da assegnare ad unopzione relativa ad ununità dellesercito Aggiungere la possibilità di definire costi di tipo frazionario così come previsto per alcuni eserciti dalla nuova edizione del regolamento Possibilità di caricare al momento dellapertura gli eserciti già inseriti così da non dover ripetere ogni volta la procedura Estendere il supporto al gioco Warhammer 4K

DEMO