La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Studente: Luca Del Bolgia Prof.: Enrico Denti. Descrizione Del Problema Editor di giochi: Architettura predefinita; Regole Personalizzabili; Utilizzo.

Presentazioni simili


Presentazione sul tema: "Studente: Luca Del Bolgia Prof.: Enrico Denti. Descrizione Del Problema Editor di giochi: Architettura predefinita; Regole Personalizzabili; Utilizzo."— Transcript della presentazione:

1 Studente: Luca Del Bolgia Prof.: Enrico Denti

2 Descrizione Del Problema Editor di giochi: Architettura predefinita; Regole Personalizzabili; Utilizzo di BOT: Random (Stupidi); Guidati da euristiche (Intelligenti);

3 Definizione delle regole Creazione dello stato iniziale File XML di configurazione Inizializzazione del gioco Esecuzione del gioco Scrittura Lettura RulesGame Language JAXBJAXB tuProlog PercorsoParser

4 Architettura Predefinita Due schieramenti: Attaccanti: devono raggiungere un TOT di obiettivi; Difensori: devono ostacolare ed eliminare gli attaccanti; Tipologie di caselle: Causano effetti sia positivi che negativi ai giocatori che le attraversano; Entità Passive: Interagiscono con i giocatori che si fermano su di esse; Numero di Mosse: Il numero di mosse viene deciso in modo random a run-time

5 Architettura Predefinita Si utilizza il linguaggio Prolog per creare larchitettura di base; Sono quattro le regole principali del sistema: Lo spostamento del giocatore; La gestione dei turni; I BOT random; I BOT guidati da euristiche;

6 Lo stato corrente

7 RulesGame Language Nasce il bisogno di un linguaggio semplice e facilmente comprensibile sia da utenti principianti che utenti esperti di programmazione, per creare regole personalizzate di (quasi) qualsiasi tipo per un gioco. Il gioco non sarà completamente implementabile: una parte del sistema è pre-implementato, e definisce larchitettura di base. Alcune regole di base potranno essere superate da utenti esperti del linguaggio Prolog, che potranno scrivere le regole in modo che il sistema si comporti in modo completamente personalizzato.

8 RulesGame Language Token della grammatica:

9 RulesGame Language Token della grammatica: ","=","+","*","/","^","\\","%"])+("}") >

10 RulesGame Language Produzioni della grammatica: Scopo::=Regole Inizializzazione Regole::=Caselle Giocatori EntitaPassive Caselle::= (RegolaCasella)+ Giocatori::=Attaccanti Difensori Attaccanti::= Info Euristica Obiettivi Difensori::= Info Euristica EntitaPassive::= (RegolaEntitaPassiva)*

11 RulesGame Language Produzioni della grammatica: RegolaCasella::= Nome ( | Codice) Info::= | | Codice Euristica::= |Codice Obiettivi::= RegolaEntitaPassiva::= Nome ( | | | | | Codice) ( | | | | | Codice) Codice::= Nome::=

12 RulesGame Language Produzioni della grammatica: Inizializzazione::= Griglia Mosse Griglia::= (Casella)+ Casella::= Nome ( |Nome) (Attaccante|Difensore| ) Attaccante::= ( Bot )? Difensore::= ( Bot )? Mosse::= Bot::=

13 RulesGame Language-esempio 1/5 caselle [ libero:windefender bloccato:block ] Per prima cosa si creano le tipologie di caselle, definendo il nome del tipo e quali sono gli effetti dellattraversamento su una di esse. NomeEffetto Può essere sostituito da codice Prolog, racchiuso tra graffe, per maggiori info vedere il manuale.

14 RulesGame Language-esempio 2/5 attaccanti [ nothing scorenemies 1 ] Si definiscono informazioni aggiuntive, euristica e obiettivi dello schieramento attaccanti. Può essere sostituito da codice Prolog, racchiuso tra graffe, per maggiori info vedere il manuale. Informazioni Euristica Obiettivi

15 RulesGame Language-esempio 3/5 difensori [ nothing scorenemies ] Può essere sostituito da codice Prolog, racchiuso tra graffe, per maggiori info vedere il manuale. Informazioni Euristica Si definiscono informazioni aggiuntive, euristica dello schieramento difensori.

16 RulesGame Language-esempio 4/5 entitapassive [ fine: attaccante score difensore nothing ] Si definiscono le entità passive: nome, effetto sullattaccante ed effetto sul difensore per ognuna. Può essere sostituito da codice Prolog, racchiuso tra graffe, per maggiori info vedere il manuale. Effetto Attaccante Effetto Difensore Nome

17 RulesGame Language-esempio 5/5 inizializzazione [ 1,1:libero,nothing,attaccante1 1,2:libero,nothing,nothing... 2,3:libero,nothing,difensore1(bot,true) 3,1:bloccato,nothing,nothing 3,2:libero,nothing,nothing 3,3:libero,fine,nothing mosse:2 ] Infine si crea lo stato iniziale. Colonna Riga Tipo casella Entità passiva Nome giocatore Definizione BOT Max Mosse

18 RulesGame Language Poiché il linguaggio non presenta self-embedding esso è una linguaggio di tipo 3. La grammatica appena presentata è di tipo 2, poiché non è lineare ne a destra ne a sinistra, però è facile trasformarla in una grammatica lineare a destra, semplicemente eliminando un sacco di simboli non terminali, che sono stati utilizzati per avere maggiore chiarezza. Scopo::=Regole Inizializzazione Regole::=Caselle Giocatori EntitaPassive Caselle::= …………… La soluzione è pessima in quanto a leggibilità e chiarezza.

19 RulesGame Language Altra soluzione, cambiando un poco la grammatica: Scopo::= Caselle::= …………… Prima produzione più pulita e chiara… Caselle Giocatori EntitaPassiveRegoleInizializzazione

20 RulesGame Language File di configurazione XMLRegole ed inizializzazione

21 JAXB:Java Architecture for XML Binding JAXB permette agli sviluppatori java di accedere e processare I dati XML senza conoscere XML; per esempio non cè bisogno di creare o usare un parser SAX oppure scrivere metodi di callback.

22 File XSD di esempio-RulesGame.xsd

23 JAXB:creare le classi java da file XSD (Binding a schema) Fare il binding di uno schema significa generare un set di classi java che lo rappresentano. Ogni classe avrà dei metodi get e set per gli attributi ed elementi interni allelemento XML corrispondente.

24 JAXB:scrivere un file XML Per scrivere un file XML bisogna creare unistanza del XmlRootElement ed inizializzarla a dovere (utilizzando le set). Infine utilizzare un istanza della classe Marshaller (si ottiene dal JABXContext) per creare il file XML corrispondente.

25 JAXB:scrivere un file XML-esempio 1/3 try { // la stringa jaxb.parser rappresenta il package delle classi create con JAXB JAXBContext jc = JAXBContext.newInstance("jaxb.parser"); jaxb.parser.ObjectFactory factory=new jaxb.parser.ObjectFactory(); Marshaller marshaller = jc.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,new Boolean(true)); jaxb.parser.Gioco gioco=factory.createGioco(); //creazione del XmlRootElement

26 JAXB:scrivere un file XML-esempio 2/3 jaxb.parser.Regole regole=factory.createRegole(); jaxb.parser.Bots bots=factory.createBots(); regole.setStatoIniziale("["+statoCaselle+","+statoAttaccanti+","+statoDifensori +","+statoTurno+"]"); regole.setMosse(mosse);//mosse è un intero regole.setBOTS(bots); gioco.setMotore(motore);//motore è una stringa gioco.setRegole(regole);

27 JAXB:scrivere un file XML-esempio 3/3 marshaller.marshal(gioco, new FileOutputStream(fileName)); } catch (JAXBException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); }

28 JAXB:leggere un file XML Per leggere un file XML bisogna creare unistanza dellUnmarshaller (si ottiene dal JABXContext), dal quale ricaveremo lXmlRootElement. Quindi tramite le get sarà possibile accedere a tutti i campi del file XML.

29 JAXB:leggere un file XML-esempio 1/2 JAXBContext jc = JAXBContext.newInstance("jaxb.parser"); //creazione dellUnmarshaller Unmarshaller unmarshaller = jc.createUnmarshaller(); //creazione del RootElement dal file XML Gioco gioco=(Gioco)unmarshaller.unmarshal(new File(nomeFile)); //getMotore restituirà una stringa writer.println(gioco.getMotore());

31 JAXB-conclusioni JAXB risulta molto utile e facile da utilizzare; in questo modo si riesce a disaccoppiare totalmente il programma java dalla sintassi XML dei file utilizzati. Inoltre un vantaggio non da poco è dato dalla creazione e lettura di file tramite tecniche che utilizzano un XSD Schema: difatti lXML verrà scritto seguendo le regole dettate nello schema, e, in automatico, verrà validato allatto della lettura, dando una eccezione nel caso di validazione errata. XSD inoltre permette maggiori vincoli nei confronti di DTD, quindi maggiori vincoli sintattici. Sito di approfondimento: html#introjb JAXB scaricabile da: Per utilizzare al meglio JAXB consiglio il plugin eclipse XJC:

32 Inizializzazione ed esecuzione del gioco Nel file XML di configurazione sono presenti alcune informazioni utili per: Creare il motore del gioco Informazioni allinterno del file XML; Architettura di base già implementata; Inizializzare il gioco Stato iniziale (in formato Prolog); Mosse massime per giocatore; Lista dei bot;

33 tuProlog-il motore del sistema La comunicazione tra motore ed applicazione è gestita da tuProlog, e le query fatte al motore Prolog possono essere di 4 tipologie: Richiesta di spostamento Prossimo turno Spostamento Bot Random Spostamento Bot con Euristica

34 tuProlog-query Richiesta di spostamento spostamento(Percorso, Giocatore, Siniziale, Sfinale, SUCCESS) Prossimo turno prossimoTurno(Scorrente, Sfinale)

35 tuProlog-query Spostamento Bot Random movimentoCasualeBot(MaxMovimento, Siniziale, Sfinale, SUCCESS) Spostamento Bot con Euristica movimentoEuristicoBot(Mosse, Siniziale, Sfinale, Profondita, SUCCESS)

36 PercorsoParser Il compito di questo compilatore è di trasformare una stringa rappresentante lo spostamento richiesto da parte dellutente attraverso la griglia di gioco, in una corretta rappresentazione del tragitto in Prolog, e quindi utilizzabile correttamente nella query al motore del gioco tramite tuProlog. up,right,downUtente nella casella 3,4: Prolog:[transito(on(2,4)),transito(on(2,5)),fine(on(3,5))]

37 PercorsoParser SF S F | F, S Grammatica Tipo 3: Linguaggio Tipo 3 Automa Riconoscitore top down Espressione regolare: (,)* -top down

38 PercorsoParser IS I | S S, I Grammatica Tipo 3: Linguaggio Tipo 3 Automa Riconoscitore bottom up Espressione regolare: (, )* -bottom up

39 Possibili sviluppi futuri Aggiungere nuove funzionalità di base tramite la costruzione di regole personalizzate. Modificare larchitettura Prolog di modo che possa sostenere anche altre tipologie di gioco (con un relativo aumento del delay per Bot Euristici). Creazione di una interfacca utente personalizzata, correlata alle regole implementate, utilizzando la buona modularità del sistema.


Scaricare ppt "Studente: Luca Del Bolgia Prof.: Enrico Denti. Descrizione Del Problema Editor di giochi: Architettura predefinita; Regole Personalizzabili; Utilizzo."

Presentazioni simili


Annunci Google