[AVVISO] Homework 2 - gioco dell'Othello/Reversi - scadenza 29 aprile [DEFINITIVO]

andrea.sterbini (172780 points)
514 935 1789
asked Apr 10, 2018 in Homework 2 by andrea.sterbini (172,780 points)
closed May 2, 2018 by andrea.sterbini

Il gioco del Reversi/Othello si gioca in 2 giocatori su una scacchiera 8x8 in cui ciascun giocatore a turno una pedina bicolore (un lato è bianco e l'altro è nero), con il proprio colore in alto, in modo da catturare almeno una pedina dell'avversario.

Una o più pedine consecutive dello stesso colore vengono catturate quando restano intrappolate, in orizzontale, verticale o diagonale e senza spazi vuoti tra la pedina avversaria che viene posata ed un'altra pedina avversaria già presente sulla scacchiera.

Tutte le pedine catturate vengono rovesciate e diventano proprietà del giocatore che ha appena giocato.

Se un giocatore non può catturare nessuna pedina avversaria la partita termina e vince il giocatore che ha il maggior numero di pedine del proprio colore. (NOTA: questa regola è una semplificazione rispetto alle regole normali)

Se entrambi hanno lo stesso numero di pedine la partita è patta.

La configurazione iniziale della partita ha 4 pedine poste sul quadrato 2x2 al centro della scacchiera con due pedine bianche sulla diagonale maggiore e due nere sulla diagonale secondaria.

Il primo giocatore è sempre il nero.

Programma da sviluppare

Vogliamo simulare l'andamento del gioco, mano a mano che vengono giocate le pedine, rappresentando la scacchiera con una matrice 8x8 di byte che possono contenere i caratteri: 'B' (bianco), 'N' (nero) oppure ' ' (spazio).

Il programma legge da input una successione di coppie di caratteri, il primo in "abcdefgh" ed il secondo in "12345678", che indicano le coordinate X,Y di ciascuna mossa. ciascuna coppia è seguita da accapo per poter essere letta come stringa dalla opportuna syscall.

La sequenza è terminata dal valore "STOP" (seguito da accapo) che indica che il programma deve uscire.

All'inizio il programma stampa la configurazione della scacchiera, come 8 righe di 8 caratteri ciascuna, racchiuse tra due caratteri '|' e seguite da accapo.

Configurazione iniziale:

|        |
|        |
|        |
|   BN   |
|   NB   |
|        |
|        |
|        |

Per ciascuna stringa letta da input il programma:

  1. controlla che sia una mossa valida, se non lo è stampa il messaggio "MOSSA ERRATA" seguito da accapo
    ATTENZIONE: potete assumere che l'input sia sempre corretto (STOP oppure una mossa valida o errata che non cattura)
    ATTENZIONE: non è necessario che controlliate se il giocatore si trova in posizione di non poter muovere, in quel caso io metto STOP nell'input.
  2. se la mossa è valida aggiorna la scacchiera posizionando la nuova pedina (del colore corretto per il giocatore di turno) e rovesciando le pedine catturate
  3. stampa la configurazione corrente della scacchiera come indicato, seguita da un accapo in più per separare le diverse scacchiere nell'output

Se invece legge il valore "STOP" esce dal programma dopo aver stampato uno dei tre messaggi seguenti (seguito da accapo):

  • STA VINCENDO IL BIANCO
  • STA VINCENDO IL NERO
  • PATTA

Esempio e file di test

Esempio di input:

c4
c3
e1
e6
STOP

Output corrispondente:

|        |
|        |
|        |
|   BN   |
|   NB   |
|        |
|        |
|        |

|        |
|        |
|        |
|  NNN   |
|   NB   |
|        |
|        |
|        |

|        |
|        |
|  B     |
|  NBN   |
|   NB   |
|        |
|        |
|        |

MOSSA ERRATA
|        |
|        |
|  B     |
|  NBN   |
|   NN   |
|    N   |
|        |
|        |

STA VINCENDO IL NERO

File di test e risultati

Trovate su http://twiki.di.uniroma1.it/twiki/view/Architetture2/MZ/AA17_18/HomeWork2 sia i file di input/output dei test che i risultati (che vengono aggiornati circa una volta al dì).

Consegna - scadenza domenica 29 aprile

Consegnate il programma realizzato usando la solita pagina di consegna entro le ore 24 di domenica 29 aprile.

Come al solito, i programmi non originali (copiati dai colleghi o da internet) verranno annullati.

1,357 views
closed with note: deadline expired