Università di Torino
A.A. 2023/2024
Marchetti Luca, Orione Andrea, Pusterla Paolo
Questo progetto ha lo scopo di creare un programma che permetta di giocare a scacchi. In particolare, si vuole progettare un programma che, dati due giocatori, dia la possibilità di:
- visualizzare nel terminale lo stato attuale della scacchiera;
- effettuare una mossa;
- valutare lo stato del gioco, per verificare se la partita è finita;
- cambiare il modo di visualizzazione tra le seguenti possibilità
- normale: utilizzando caratteri ASCII
- semplificata: utilizzando solo lettere e caratteri della tastiera
- colorata: utilizzando stringhe ANSI per cambiare il colore di sfondo dei caratteri in modo da avere una scacchiera colorata
- invertita: con lo stesso settaggio della normale ma con i colori invertiti (adatta a terminali con sfondo chiaro)
L'esecuzione della mossa consiste nei seguenti passi:
- prendere in input una mossa in notazione UCI (Universal Chess Interface);
- controllare che la notazione della mossa indicata sia valida;
- controllare che la mossa indicata sia realizzabile;
- eseguire la mossa;
- valutare il nuovo stato della partita, controllando se è: scacco matto, stallo, patta per ripetizione o patta per mancanza di pezzi.
La notazione UCI è costruita nel modo seguente:
- Indicare la casella di partenza con lettera e numero (da a1 a h8) e la casella di arrivo nello stesso modo, in una stringa senza spazi. L'arrocco e la cattura seguono la stessa formattazione
- Per la promozione apporre alla stringa indicata sopra il carattere corrispondente al tipo di pezzo in cui si vuole promuovere (i caratteri validi sono /r/, /n/, /b/, /q/ in maiuscolo o minuscolo)
Esempi di notazione valida sono i seguenti:
- e2e4
- e1g1 (per l'arrocco di re del bianco)
- b7b8Q (per la promozione del pedone bianco in regina)
Innanzitutto è necessario assicurarsi di avere una versione di CMake superiore a 3.26 installata e funzionante sul proprio computer. Si noti che è possibile abbassare la versione minima di CMake richiesta modificando il file CMakeLists.txt.
Seguire i passaggi elencati.
- Clonare la repository sul proprio computer.
- Navigare da terminale fino alla directory dove è stato clonato il progetto.
- Creare una nuova directory build, scrivendo:
mkdir build
- Navigare dentro la directory appena creata e generare i build files:
cmake ..
- Compilare e linkare il progetto:
dove N va sostituito con il numero di threads che si vogliono utilizzare (scrivere solamente
make -j N
make
per usare un solo thread). - Eseguire l'eseguibile generato da CMake:
./scacchi
Per vedere lo Use Case Diagram, il Class Diagram ed i diagrammi di flusso in versione originale, scaricare UMLet ed aprire i file .uxf con tale applicazione. In alternativa, una versione in formato .pdf è disponibile nella cartella UML.