La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Progetto desame di Gianluca Gallo Linguaggi e modelli computazionali LM Prof. Enrico Denti.

Presentazioni simili


Presentazione sul tema: "Progetto desame di Gianluca Gallo Linguaggi e modelli computazionali LM Prof. Enrico Denti."— Transcript della presentazione:

1 Progetto desame di Gianluca Gallo Linguaggi e modelli computazionali LM Prof. Enrico Denti

2 Sono programmi per computer che simulano un ambiente nel quale i giocatori usano comandi testuali per istruire il personaggio della storia ad interagire con l'ambiente in cui si trova. (Da Wikipedia)Wikipedia Caratterizzate da: Scopo Ambiente di gioco Stanze esplorabili Oggetti Inventario Obiettivo: Il giocatore deve esplorare lambiente di gioco e interagire con esso fino al completamento dello scopo dellavventura.

3 Realizzare un interprete per avventure testuali Riconoscere le frasi di gioco Eseguire le azioni corrispondenti

4 Tipologie di azioni: Movimento Raccolta Vista Utilizzo

5 Tipologie di azioni: Movimento Raccolta Vista Utilizzo Esempi: vai cantina - vai in cantina – vai nella cantina cammina verso cantina spostati verso tetto – spostati sul tetto

6 Tipologie di azioni: Movimento Raccolta Vista Utilizzo Esempi: prendi stivali – prendi gli stivali raccogli martello – raccogli il martello

7 Tipologie di azioni: Movimento Raccolta Vista Utilizzo Esempi: guarda la spada - guarda inventario osserva spada esamina cantina

8 Tipologie di azioni: Movimento Raccolta Vista Utilizzo Esempi: usa spada – usa la spada usa la spada su cattivo – usa spada cattivo utilizza il martello – utilizza il martello con le mura

9 Azione ::= ( Movimento | Raccoglimento | Vista | Utilizzo ) ; Movimento ::= Compl_movimento Compl_movimento ::= ( )? TOKEN : { } Raccolta ::= Compl_oggetto Compl_oggetto ::= ( )? TOKEN : { } Vista ::= Compl_oggetto TOKEN : { } Utilizzo ::= Compl_oggetto ( Compl_uso )? TOKEN : { } Compl_uso ::= ( )? ( )? TOKEN : { } TOKEN : { )+> | }

10 La struttura delle produzioni è vincolata alla forma Aα, conα(VT VN)*,A VN Grammatica di Tipo 2 Nessun simbolo non terminale è self-embedded Linguaggio generato di Tipo 3 (Regolare) Nessun simbolo non terminale genera la stringa vuota; per ogni simbolo non terminale che appare nella parte sinistra di più produzioni, gli starter symbol appartenenti alle parti destre delle produzioni alternative sono disgiunti Grammatica LL(1)

11 Scopo Oggetti Stanze Inventario Stato Stanza corrente Introduzione

12 Un visitor che evolve stato del gioco in base allazione eseguita Azione Movimento

13 Un visitor che evolve stato del gioco in base allazione eseguita Azione Raccolta

14 Un visitor che evolve stato del gioco in base allazione eseguita Azione Vista

15 Un visitor che evolve stato del gioco in base allazione eseguita Azione Utilizzo

16 Utilizzo del PlayVisitor fino alla condizione di terminazione

17 Gioco cablato nel codice

18 Ogni gioco ha la sua intro, le sue stanze e i suoi oggetti FACILE: istanze Ma anche un determinato scopo......e ogni oggetto ha un uso diverso! DIFFICILE: comportamento

19 1.Lettura informazioni di gioco da file esterno 2.Creazione di classi specifiche 3.Istanziamento stanze e oggetti

20 Start ::= DescrizioneGioco StanzaIniziale Oggetti Stanze DescrizioneGioco ::= Introduzione CondizioneTerminazione Introduzione ::= "INTRODUZIONE:" Descrizione CondizioneTerminazione ::= "FINE:" JavaCode StanzaIniziale ::= "STANZAINIZIALE:" Oggetti ::= ( Oggetto )* Oggetto ::= NomeOggetto Descrizione JavaCode NomeOggetto ::= "OGGETTO:" Stanze ::= ( Stanza )+ Stanza ::= NomeStanza Descrizione "[" ( OggettoPresente )* "]" "[" ( StanzaRaggiungibile )* "]" NomeStanza ::= "STANZA:" OggettoPresente ::= StanzaRaggiungibile ::= Descrizione ::= JavaCode ::= TOKEN : { }

21 Parsing file di gioco Controllo sintattico parser Controllo semantico CheckSemanticVisitor Controllo sintattico codice java ToolProvider.getSystemJavaCompiler(); Costruzione classi di gioco CreateGameVisitor Compilazione gioco compiler.getTask() Avvio (reflection) Controllo tramite engine di gioco (chiamata ciclica al PlayVisitor)

22 Acquisite le stanze e gli oggetti dal file di gioco: La stanza iniziale deve essere stata definitiva; Gli oggetti contenuti nelle varie stanze devono essere stati definiti; I vicinati devono essere consistenti Stanze vicine devono essere definite Stanze vicine devono esserlo reciprocamente

23

24 Creazione codice classe oggetti

25 Creazione codice classe di gioco

26 Istanziazione oggetti e stanze

27

28 Grammatica di gioco più elastica Stanze customizzabili Eventi allingresso Eventi alluscita Eventi asincroni Esecuzione azioni entro certi tempi Mostri in movimento Porting in JavaScript

29 Progetto desame di Gianluca Gallo Linguaggi e modelli computazionali LM Prof. Enrico Denti


Scaricare ppt "Progetto desame di Gianluca Gallo Linguaggi e modelli computazionali LM Prof. Enrico Denti."

Presentazioni simili


Annunci Google