Chess Game Visualizer Un interprete per Short Algebraic Notation Progetto per lesame di Linguaggi e modelli computazionali LS prof. Denti – A.A. 2007/08.

Slides:



Advertisements
Presentazioni simili
GRAFIA METACOGNIZIONE e MOTIVAZIONE
Advertisements

Evoluzione dei linguaggi di programmazione
Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede.
Analizzatori Lessicali con JLex
Sintassi (prima parte)
A.s. 2008/2009 Scuola dell’Infanzia “VAIARINI” sezione 4 anni SFIDE MATEMATICHE Quando le conoscenze acquisite si trasformano in giochi “matematici”
(Creazione di subroutine) SOTTOPROGRAMMI. Cose un sottoprogramma? Una subroutine è una parte di programma scritta separatamente in un Foglio a parte.
Othello Strutture dati ed implementazione in prolog
Intelligenza Artificiale 2 Metodologie di ragionamento Prof. M.T. PAZIENZA a.a
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
IL GIOCO DEGLI SCACCHI Cosa sono gli scacchi?
1 FASI DELLA PRESENTAZIONE PROGETTAZIONE REALIZZAZIONE E COLLAUDO PRESENTAZIONE IN PUBBLICO.
Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 13 1 La Manipolazione Diretta Sensazione di interagire con un mondo di oggetti piuttosto.
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Adriana Pietramala Laurea.
Unità Didattica 2 I Linguaggi di Programmazione
PROGETTO SCACCHI Programma, sviluppato in Java che permette di effettuare partite a scacchi tra due giocatori sulla stessa macchina e anche tra computer.
DBMS ( Database Management System)
L’arte che esprime la scienza della logica
Progetto per lesame di Linguaggi e Modelli Computazionali LS Chiara Chiara Gualtieri.
ANTLR V.3 Renzi Alberto.
Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli Programmare in Matlab Funzioni di Libreria Funzioni definite.
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
Gruppo 11: Ausili Andrea Giovanni Belellixxxxxxxx Polenta Marcoxxxxxxxx Giuseppe Prencipexxxxxxxx Marco Trinastichxxxxxxxx Università Politecnica.
Corso di Laurea Specialistica in Ingegneria Informatica Itinerari aerei Progetto per lesame di Linguaggi e Modelli Computazionali LS realizzato da Stefano.
Linguaggio per la generazione di biglietti da visita
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.
Linguaggi e modelli computazionali LS
Creare pagine web Xhtlm. Struttura di una pagina.
Progetto di un linguaggio e interprete per giocare a MemoryPlus Progetto di:Docente: Vito La PortaEnrico Denti.
Foglio elettronico Excel Livello avanzato
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.
Linguaggi e modelli computazionali LS Manni Tiziano
Traduzione e computer (3) Cristina Bosco Informatica applicata alla comunicazione multimediale 2013.
ATTIVITÀ PROGETTUALE LINGUAGGI E MODELLI COMPUTAZIONALI L-M Un linguaggio per la descrizione di coreografie giocabili STUDENTE: BACCHILEGA SIMONE A.A 2013/2014.
Regole degli scacchi -1 luglio2014
1 Sistemi Informativi e Servizi in Rete Università degli Studi di Brescia Facoltà di Ingegneria Parsing di documenti XML Esercizi.
Lezione 3 Struttura lessicale del linguaggio
Tecnica SCAP.
Automatismi Scacchistici
Apertura Cos’è ed a cosa serve.
Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode.
PROGETTO… Internet Providers, registrazione del dominio Costruire una home page … e renderla visibile sul Web.
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
Microsoft Access Chiavi, struttura delle tabelle.
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.
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.
Ancora sulla shell. Shell e comandi La shell e' un programma che interpreta i comandi dell'utente. I comandi possono essere dati da terminale, oppure.
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.
Giochiamo a tris. Un campo di esperienza per il problem-solving: i giochi di interazione strategica.
Ideare un Piano di Gioco Parte Terza: Il Centro Aperto.
Ideare un Piano di Gioco Parte Prima. Perché ideare un Piano di gioco?
1 Metodo I metodi sono uno strumento che i programmatori usano per strutturare i programmi, sia per renderli più facili da capire che per permettere il.
Vortice Schemi di Gioco 3.
Fermo in Presa!! Schemi di Gioco 4. Quando un pezzo viene minacciato da un Pedone deve ritirarsi o verrà catturato … ?
Basi elementari negli scacchi
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
Eccezioni in Java. Le eccezioni in Java Exception handling: insieme di costrutti e regole sintattiche e semantiche presenti nel linguaggio allo scopo.
Transcript della presentazione:

Chess Game Visualizer Un interprete per Short Algebraic Notation Progetto per lesame di Linguaggi e modelli computazionali LS prof. Denti – A.A. 2007/08 by Niko Mennucci

Motivazioni, Obiettivi e Strumenti Motivazioni: Per migliorare il proprio stile di gioco negli scacchi è fondamentale studiare le partite dei grandi campioni. Esiste una notazione internazionale standard per registrare partite di scacchi in forma testuale che però risulta piuttosto noiosa da leggere. Obiettivo: Creare unapplicazione che visualizzi in formato grafico la sequenza di mosse di una partita di scacchi registrata secondo lo standard noto in letteratura come Short Algebraic Notation. Strumenti usati: Java 1.6 ed Eclipse come IDE, JavaCC 4.1d1 + JTB (plug-in per Eclipse 3.3).

Short Algebraic Notation (1/4) Ogni casa è identificata da ununica coppia Lettera- Numero cui corrisponde la coppia File-Rank (Colonna- Traversa). I pezzi vengono indicati con una lettera maiuscola: K,Q,R,B,N (King, Queen, Rook, Bishop, Knight). I pedoni non sono indicati con lettere ma, come vedremo, dalla loro assenza.

Short Algebraic Notation (2/4) Le mosse sono indicate con la lettera del pezzo che muove seguita dalla casa destinazione. Es: Nf5 significa cavallo muove in f5, e5 pedone muove in e5. Se due (o più) pezzi identici possono muovere nella stessa casa, liniziale del pezzo è seguita dalla traversa o colonna di partenza per cui si differenziano o entrambi, se da soli non sufficienti (puo accadere con 3 o più pezzi). Es: N4f5 cavallo dalla traversa 4 muove in f5, Ndf5 cavallo dalla colonna d muove in f5. Se un pezzo effettua una cattura viene messa una x tra casa di partenza e casa destinazione. Es: Nxf5 cavallo muove e cattura in f5, N4xf5 cavallo dalla traversa d muove cattura in f5.

Short Algebraic Notation (3/4) Quando un pedone muove in ultima traversa (promozione) il pezzo scelto è indicato dopo la mossa, eventualmente preceduto da = (Es: e8=Q oppure e8Q promozione a regina). Arrocco corto e arroco lungo sono indicati rispettivamente con O-O e O-O-O. Ogni mossa che porta a mettere sotto scacco è seguita da un +. Ogni mossa che porta ad uno scaccomatto è seguita da un # (o anche ++). Es: Ngf3+ cavallo da colonna g muove in f3, scacco.

Short Algebraic Notation (4/4) Ad ogni mossa può seguire un commento espresso con dei simboli (!! mossa eccellente, ! interessante etc…). Alla fine della lista mosse si può indicare il risultato (1-0 vince il bianco, 0-1 vince il nero, ½-½ patta). La lista mosse prevede il formato Numero progressivo.- semimossa bianco-semimossa nero, con uno (ed uno solo) spazio come separatore fra mosse e semimosse. Es: 1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 … Lo spazio tra. e semimossa bianco è opzionale.

La grammatica Scope ::= ListOfMove [EndGame] StartMove ::= [ ] ListOfMove ::= (StartMove HalfMove HalfMove)* [StartMove HalfMove ] HalfMove ::= (NormalHalfMove | PawnHalfMove | Castlings) [ | ] [ ] NormalHalfMove ::= NormalPiece [ | | ] [ ] PawnHalfMove ::= ( | [ ] ) [Promotion] Castlings ::= O-O | O-O-O Promotion ::=[=] NormalPiece NormalPiece ::= | | | | EndGame ::= | | Casa partenza (opzionale) Casa Destinazione (obbligatorio) Differenzia mosse di pedoni da mosse di altri pezzi Spinta di pedone Cattura con pedone

La grammatica La grammatica non è nella forma regolare ma non presenta self-embedding e quindi il linguaggio generato sarà sicuramente di tipo 3. Non cè bisogno di riscrivere la grammatica nella forma regolare visto che gli strumenti automatici usati per il parser applicano comunque lanalisi ricorsiva discendente. La grammatica prevede anche ε -rules in quanto una partita (sopratutto nei tornei) può non essere giocata affatto (ad esempio per abbandono o per accordo) e può essere interrotta. Essendo il linguaggio di tipo 3 sicuramente sarà possibile rendere la grammatica LL(1). Scritta così però presenta alcuni conflitti: bisogna manipolare alcune produzioni…

La grammatica LL(1) La produzione ListOfMove ::= (StartMove HalfMove HalfMove)* [StartMove HalfMove ] Presenta un conflitto risolvibile riscrivendola in questo modo (piuttosto illegibile): ListOfMove ::= StartMove HalfMove [ HalfMove [ListOfMove] ] Così facendo viene a mancare la possibilità di lista mosse vuota. Per motivi di leggibilità si è deciso di riscrivere la regola dello Scope per comprenderla: Scope ::= [ListOfMove] [EndGame]

La grammatica LL(1) La produzione NormalHalfMove ::= NormalPiece [ | | ] [ ] Non rende la grammatica LL(1). Infatti, riscrivendola, si notano i conflitti: NormalHalfMove::=NormalPiece ( [ ] | | [ ] | [ ] ) Fattorizzando 2 volte si risolve il problema: NormalHalfMove::=NormalPiece ( ( [ ] | [ [ ] ] ) | | [ ] )

Architettura Definisce loggetto Chessboard ( la scacchiera virtuale) e contiene la tassonomia dei pezzi. Tassonomia delle mosse: ogni mossa mette a disposizione i metodi make() e undo() che lanciano eccezioni se non valide. Definisce loggetto ChessGame che gestisce la scacchiera virtuale e la lista delle mosse. Definisce il visitor ChessGameVisitor che esplora lAPT e restituisce un oggetto ChessGame. Contiene inoltre il main dell applicazione. Gestisce la Visualizzazione di un oggetto ChessGame. Gestisce un piccolo editor di testo. Contiene le classi dellAPT (generato automaticamente). Contiene la grammatica EBNF. Gestisce il lexer (generato automaticamente). Contiene gli scheletri dei visitor (generato automaticamente).

Il Visitor Utilizza lo scheletro GJNoArguDepthFirst creato da JTB che permette di restituire un oggetto (ChessGame nel nostro caso) ed effettuare una visita in profondità dellAPT. Durante la costruzione delloggetto ChessGame gioca lintera partita facendo controlli semantici. Controlla se le mosse siano valide e se le varie indicazioni di scacco, scaccomatto, cattura, fine partita etc.. siano congruenti. Nel caso ci siano errori semantici restituisce anche dei warnings con indicazione della posizione. Gli errori semantici non pregiudicano la costruzione delloggetto ChessGame che viene restituito comunque (costruito fin dove possibile).

Collaudo Si è effettuato un collaudo sulla tassonomia delle mosse per verificare lesattezza dei controlli sulla validità delle mosse per ogni pezzo (in piccolo main di collaudo per ogni pezzo). Sul web vi è una grande quantità di partite registrate, famose e non. Ne sono state scaricate alcune per vedere la bontà dellapplicazione su registrazioni corrette. In un secondo momento sono state apportate leggere modifiche a queste ultime per verificare la correttezza dei controlli semantici da parte del visitor.

Sviluppi Futuri Sviluppo di unapplicazione in grado di leggere file in formato pgn (Portable Game Notation). Tale notazione prevede ulteriori informazioni sulla partita (nome dei giocatori, luogo della sfida, anno etc) e la possibilità di registrare partite già iniziate con la notazione FEN (Forsyth-Edwards Notation). Sviluppo di un applicazione che faccia giocare una partita fra due giocatori e preveda la registrazione della stessa in Short Algebraic Notation. Sviluppo di un intelligenza artificiale che permetta di giocare contro il computer.