Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoLetizia Garofalo Modificato 10 anni fa
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
24
Creazione codice classe oggetti
25
Creazione codice classe di gioco
26
Istanziazione oggetti e stanze
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
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.