DRAUGHTS Linguaggi e Modelli Computazionali LS Linguaggio e interprete per effettuare una partita di dama inglese contro un’intelligenza artificiale Progetto.

Slides:



Advertisements
Presentazioni simili
Il gioco del 15 Il gioco del quindici fu inventato da Sam Loyd piu' di un secolo fa. Lo scopo del gioco e' quello di ordinare le caselle dal numero 1 al.
Advertisements

© 2007 SEI-Società Editrice Internazionale, Apogeo Unità E1 Dallanalisi del problema alla definizione dellalgoritmo.
Sintassi (prima parte)
Analizzatori Sintattici con Cup Giuseppe Morelli.
Ogni PC, per iniziare a lavorare, ha bisogno di un sistema operativo. Infatti questo è il primo programma che viene eseguito e che permette all'utente.
Fondamenti di Informatica I a.a Il linguaggio C Il preprocessore La sostituzione di macro Le compilazioni condizionali Linclusione di file C.
Breath-first search Visita in ampiezza di un grafo Algoritmo Esempio
Othello Strutture dati ed implementazione in prolog
Maria Teresa PAZIENZA a.a
Applet Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dellInformazione Università di Siena Via Roma 56 – – SIENA Uff
Analisi e Sintesi di circuiti sequenziali
Introduzione allinformatica. Cosè linformatica ? Scienza della rappresentazione e dellelaborazione dellinformazione ovvero Studio degli algoritmi che.
Testing e Debugging.
Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 13 1 La Manipolazione Diretta Sensazione di interagire con un mondo di oggetti piuttosto.
Modelli simulativi per le Scienze Cognitive
Unità Didattica 2 I Linguaggi di Programmazione
Ministero della Salute DGSAN-Ufficio IX
INSIEMI NUMERABILI L’analisi matematica introduce il concetto di insieme numerabile come insieme i cui elementi possono essere “contati” ossia che possiede.
LINGUAGGI DI PROGRAMMAZIONE
AN FI Concetti. Linguaggi di alto livello u Hanno capacita' espressive superiori a quelle del linguaggio macchina u Suggeriscono concetti e modi.
PROGETTO SCACCHI Programma, sviluppato in Java che permette di effettuare partite a scacchi tra due giocatori sulla stessa macchina e anche tra computer.
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.
ANTLR V.3 Renzi Alberto.
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
Corso di Laurea Specialistica in Ingegneria Informatica Itinerari aerei Progetto per lesame di Linguaggi e Modelli Computazionali LS realizzato da Stefano.
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.
Introduzione ai linguaggi formali e alle stringhe
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.
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.
Gli Algoritmi L’algoritmo è un insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce un risultato e si.
Tecnica SCAP.
1 Interpretazione astratta: un approccio sistematico all’analisi statica.
Microsoft Access Chiavi, struttura delle tabelle.
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.
Grammatiche Grammatiche libere da contesto Grammatiche regolari
Algoritmi.
Reti di calcolatori LS1 Service Middleware Reti di calcolatori LS progetto di Andrea Belardi Infrastruttura dedicata alla gestione di servizi disponibili.
CAKE Ambiente per la scrittura e la riproduzione audio di ricette per torte Linguaggi e Modelli Computazionali LSElisabetta Visciotti.
1 Macchine astratte, linguaggi, interpretazione, compilazione.
Reti di Calcolatori LS - Fabio Poli 15 Giugno 2006 Sviluppo di un player di Campo Minato multigiocatore con supporto di Chat MultiCast.
Eye Computer Sistema per l'interazione con un computer dotato di controllo oculare Linguaggi e modelli computazionali LS Realizzato da: Ciavarella Primiano.
Fasi di sviluppo di un software
Università degli studi di Modena e Reggio Emilia Facoltà di Scienze Fisiche, Informatiche e Matematiche Corso di Laurea in Informatica Progettazione e.
Cloud Tecno V. Percorso didattico per l’apprendimento di Microsoft Access 4 - Le maschere.
Divisione tra un polinomio ed un binomio Regola di Ruffini
Programmazione orientata agli Oggetti Introduzione a Java.
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
Transcript della presentazione:

DRAUGHTS Linguaggi e Modelli Computazionali LS Linguaggio e interprete per effettuare una partita di dama inglese contro un’intelligenza artificiale Progetto di:Docente: Michele DinardoEnrico Denti

Scopo del lavoro Progettare un sistema che permetta di effettuare una partita di dama inglese, draughts, contro un’intelligenza artificiale. Occorre, quindi: Progettare un linguaggio che sia in grado di esprimere le azioni topiche di una tale partita. Realizzare un’interprete per tale linguaggio che:  accetti in ingresso una stringa di caratteri;  esegua un’analisi sintattica al fine di riconoscere se la stringa è una frase lecita del linguaggio;  esegua le azioni corrispondenti alla semantica della frase immessa. Realizzare uno strumento grafico che:  visualizzi l’andamento della partita;  riporti lo storico delle azioni richieste. 1 febbraio 20092Michele Dinardo

Draughts: regole del gioco È giocata su una damiera standard di 64 caselle. Il cantone, ossia la casella nera d’angolo, è in basso a sinistra. Ciascun giocatore dispone di 12 pedine. Prima mossa al nero. Le pedine si muovono solo in avanti ma possono prendere anche le dame. Se dopo una presa è possibile eseguirne un’altra, allora essa deve essere effettuata. In caso di più possibilità di presa c’è libera scelta. Se una pedina raggiunge l'ultima riga viene promossa a Re e viene abilitata a muoversi anche indietro. Anche in caso di eventuali prese, la mossa è sempre finita. Curiosità Curiosità:nel 2007 è stata risolta da un gruppo di lavoro che, sviluppando il programma Chinook, ha dimostrato che una partita senza errori finisce necessariamente in parità. 1 febbraio 2009Michele Dinardo3

Analisi del problema Il linguaggio dovrà quindi offrire i costrutti per: o iniziare una nuova partita:  settare, se richiesto, la difficoltà dell’intelligenza artificiale;  scegliere il colore dei propri pezzi; o eseguire una mossa sulla partita in corso:  definire la nozione di posizione di partenza e di arrivo di una pedina;  offrire la possibilità di compiere eventuali prese;  esprimere il concetto di promozione a Re; 1 febbraio 2009Michele Dinardo4

Caratteristiche del linguaggio Il linguaggio che si intende progettare deve essere: semplice: sono sufficienti poche frasi per soddisfare le richieste di un’utente che usufruisce del sistema; descrittivo: le frasi lecite del linguaggio devono riflettere il pensiero del giocatore che in quel momento sta richiedendo una particolare azione; comprensibili a chiunque: non legate quindi a notazioni chiare solo a professionisti. 1 febbraio 2009Michele Dinardo5

Grammatica EBNF (1/2) 1 febbraio 2009Michele Dinardo6 ::= | ::=start [ ] ::=set ::=choose ::=beginner | intemediate | expert ::=white | black Scopo Inizia nuova partita Esempi di frasi lecite, alla scopo di iniziare una nuova partita, sono: – start choose white – start set expert choose black

1 febbraio 2009Michele Dinardo7 Grammatica EBNF (2/2) 1 febbraio 2009Michele Dinardo7 ::=move to { } [ ] ::= ::= take ::= ::=A | B | C | D | E | F | G | H ::=1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 ::=king Prosegui partita in corso Esempi di frasi lecite, allo scopo di proseguire la partita in corso, sono: – move b6 to a5 – move b6 to d4 take c5 – move c5 to g1 take d4 take f2 king

Osservazioni sulla grammatica Secondo la classificazione di Chomsky, la grammatica è di tipo 2, ovvero libera dal contesto, poiché le produzioni non sono regolari. L’assenza di self-embedding assicura però che il linguaggio generato è di tipo 3, ovvero regolare. Non sono presenti ε-rules: il linguaggio non comprende, quindi, la stringa vuota in quanto essa non avrebbe alcun significato rilevante. Gli starter symbols corrispondenti alle parti destre delle produzioni alternative sono disgiunti: la grammatica è, quindi, LL(1). Non è necessario ricorrere ai director symbols giacché nessun metasimbolo genera la stringa vuota. È possibile, allora, utilizzare l’analisi ricorsiva discendente. 1 febbraio 2009Michele Dinardo8

Architettura del sistema 1 febbraio 2009Michele Dinardo9 Linguaggio di programmazione: o Java 1.6.0_11 Generazione parser e scanner: o JavaCC 4.2 Generazione APT e visitor: o JTB Ambiente di sviluppo: o Eclipse Ambiente di test: o JUnit 4.0

Il sottosistema game 1 febbraio 2009Michele Dinardo10 Le viste e il controller Partita implementano assieme il pattern Observer. Il controller Partita sincronizza, ad ogni turno, gli attori Umano e Computer all’uso della damiera. La classe Umano verifica la correttezza della mossa richiesta e, in caso positivo, la esegue. La classe Motore implementa la ricerca alpha/beta, calcola il risultato della funzione di valutazione ed esegue la mossa ritenuta ottimale. L’entità Damiera memorizza lo stato delle celle ed offre i metodi di gestione delle stesse.

L’integrazione al package visitor 1 febbraio 2009Michele Dinardo11 Sono stati implementati due visitor: DraughtsGameVisitor: visita l’APT e inoltra al controller Partita le azioni rilevate al fine di verificarne la correttezza e, in caso positivo, l’esecuzione. DraughtsTreeVisitor: visita l’APT e ne fornisce una rappresentazione grafica sotto forma di albero. L’unione degli alberi relativi ad una stessa partita determina lo storico della stessa. Ciascun visitor realizza una visita di tipo depth first avvalendosi del meccanismo del double dispatch.

Il package gui in esecuzione 1 febbraio 2009Michele Dinardo12 Area inserimento frasi Unione APT della partita in corso Messaggi generati dall’I.A. Evoluzione partita

Collaudo 1 febbraio 2009Michele Dinardo13 Sono state implementati due suite di test JUnit: ControllerTest: verifica la correttezza dei metodi dei singoli attori, il corretto andamento della partita e la capacità di riscontrare e notificare azioni illecite. LanguageTest: verifica le stesse funzionalità del test precedente avvalendosi del linguaggio e dell’interprete progettato.

Limiti e sviluppi futuri La gestione delle condizioni di fine partita è la caratteristica non sviluppata più rilevante. Possibili sviluppi futuri possono essere: Introduzione di costrutti circa l’esito della partita. Introduzione della possibilità di effettuare partite tra due giocatori: in tal caso si rivela utile la scomposizione del linguaggio in due sottolinguaggi, uno relativo all’eventuale programmazione dell’intelligenza artificiale, l’altro relativo all’inizio di una partita ed alla sua conduzione. Realizzazione di un sistema client/server che permetta a due utenti remoti di condurre una partita. 1 febbraio 2009Michele Dinardo14