Class BoardModel


  • public class BoardModel
    extends Observable
    Responsabilità: gestire le informazioni relative ad una plancia di gioco. Rientra nei pattern MVC e Observer.
    Author:
    Francesco Pio Stelluti, Francesco Coppola
    • Constructor Detail

      • BoardModel

        public BoardModel​(int sequenceLength,
                          int maxAttempts)
        Costruttore di una plancia. L'impiego di una LinkedHashMap quale particolare struttura dati per tenere traccia delle sequenze inserite permette di tenere conto anche dell'ordine di inserimento.
        Parameters:
        sequenceLength - massima delle sequenze presenti in questa plancia
        maxAttempts - numero massimo di tentativi possibili per indovinare la sequenceToGuess
    • Method Detail

      • getSequenceLength

        public int getSequenceLength()
        Returns:
        int lunghezza massima delle sequenze presenti in questa plancia
      • getSequenceToGuess

        public java.util.List<ColorPegs> getSequenceToGuess()
        Returns:
        List di ColorPegs da indovinare.
      • setSequenceToGuess

        public boolean setSequenceToGuess​(java.util.List<ColorPegs> toGuess)
                                   throws java.lang.IllegalArgumentException
        Imposta la sequenza di pioli da indovinare.
        Parameters:
        toGuess - lista di ColorPegs della sequenza da indovinare
        Returns:
        un booleano a seconda della riuscita o meno dell'inserimento nella plancia di gioco
        Throws:
        java.lang.IllegalArgumentException - se la lunghezza della sequenza inserita non è valida
      • leftAttempts

        public int leftAttempts()
        Returns:
        int numero di tentativi rimasti
      • attemptsInserted

        public int attemptsInserted()
        Returns:
        int numero di tentativi inseriti fino ad ora
      • isBoardEmpty

        public boolean isBoardEmpty()
        Returns:
        boolean che indica se sono stati inseriti o meno tentativi nella plancia
      • addAttempt

        public boolean addAttempt​(java.util.List<ColorPegs> attempt)
                           throws java.lang.IllegalArgumentException
        Aggiunge alla plancia una nuova sequenza di pioli tentativo e la relativa sequenza di pioli indizio, calcolata all'interno del metodo
        Parameters:
        attempt - la sequenza da inserire
        Returns:
        boolean relativo alla riuscita dell'inserimento
        Throws:
        java.lang.IllegalArgumentException - in caso di inserimento illegale
      • removeLastAttemptAndClue

        public boolean removeLastAttemptAndClue()
        Rimozione dell'ultima coppia sequenza tentativo - sequenza indizio inserita nella plancia.
        Returns:
        boolean relativo alla riuscita della rimozione.
      • getLastAttempt

        public java.util.List<ColorPegs> getLastAttempt()
      • getLastClue

        public java.util.List<ColorPegs> getLastClue()
      • getAttemptAndClueList

        public java.util.List<java.util.Map.Entry<java.util.List<ColorPegs>,​java.util.List<ColorPegs>>> getAttemptAndClueList()
        Ottenimento di una List contenente tutta le coppie sequenza tentativo - sequenza indizio inserite nella plancia.
        Returns:
        List contenenti Map.Entry con le sequenze di ColorPegs inserite come tentativo e le relative sequenze indizio
      • hasBreakerGuessed

        public boolean hasBreakerGuessed()
        Returns:
        boolean che indica se il giocatore Breaker ha indovinato o meno la sequenza del Maker in base alle informazioni contenute nella plancia