## Class Giocatore

    java.lang.Object
      Giocatore

    public class Giocatore

extends java.lang.Object

Modella un giocatore umano. Possiede come caratteristiche una stringa contenente il nome del colore delle armate del giocatore, una collezione di carte e un elenco dei territori occupati dal giocatore. Inoltre tiene in memoria un riferimento ad un oggetto Display, usato per la visualizzazione dei messaggi del gioco.

Version:
  1.0.0
Author:
  Alessio Treglia

Field Summary
`Parser` `parser` Interpete dei comandi
`Display` `schermo` Schermo del giocatore

Constructor Summary
`Giocatore(java.lang.String colore)` All'inizio del gioco ogni giocatore sceglie un colore, dunque gli vengono assegnati n territori a caso.

Method Summary
`static void` `aggiornaTurni()` Aggiorna i numeri di turni giocati dal `Giocatore` return `void`
`void` `aggiungiCarta(java.lang.String valore)` Aggiunge una carta fra quelle possedute dal giocatore.
`void` `aggiungiCarte(java.util.List carte)` Aggiunge una serie di carte a quelle già possedute.
`void` `aggiungiTerritorio(Territorio t)` In caso di vittoria, il territorio vinto viene aggiunto fra quelli posseduti.
`boolean` `eliminato()` Controlla se il giocatore è ancora in gioco.
`java.util.List` `getCarte()` Restituisce una collezione di tipo `Set` contenente tutte le carte possedute dal giocatore.
`java.lang.String` `getColore()` Restitusice il colore delle armate del giocatore
`boolean` `getPuoPescare()` Verifica se il giocatore può pescare una carta Territori
`java.util.Set` `getTerritori()` Restituisce una collezione di tipo Set contenente tutti i territori posseduti dal giocatore.
`Territorio` `getTerritorio(java.lang.String nomeTerritorio)` Verifica la presenza di un territorio nella collezione dei territori posseduti dal giocatore, e lo restituisce.
`static int` `getTurnoCorrente()` Restituisce il turno corrente del giocatore
`boolean` `haVinto()` Verifica la condizione di vittoria.
`int` `numeroCarte()` Restituisce il numero di carte possedute dal giocatore
`java.lang.String` `rimuoviCarta(java.lang.String valore)` Rimuove una carta di un dato valore dalla collezione di carte possedute dal giocatore
`java.util.List` `rimuoviCarteStessoValore(java.lang.String valore, int n)` Rimuove n carte uguali dalla collezione di carte possedute dal giocatore e le restituisce in una collezione.
`Territorio` `rimuoviTerritorio(java.lang.String nomeTerritorio)` Quando viene perso un territorio in battaglia, questo viene eliminato dalla collezione di territori posseduti.
`java.util.List` `rimuoviTutteLeCarte()` Rimuove tutte le carte dalla collezione di carte possedute dal giocatore.
`void` `setDisplay(Display schermo)` Assegna una periferica di visualizzazione al Giocatore.
`void` `setPuoPescare(boolean haVintoUnTerritorio)` Comunica al giocatore se ha la possibilità di pescare una carta Territori al prossimo giro.
`java.lang.String` `toString()` Restituisce una descrizione stringa dell'oggetto.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Field Detail

### schermo

    public Display schermo

  Schermo del giocatore

### parser

    public Parser parser

  Interpete dei comandi

Constructor Detail

### Giocatore

    public Giocatore(java.lang.String colore)

  All'inizio del gioco ogni giocatore sceglie un colore, dunque gli vengono assegnati n territori a caso.

  Parameters:
    `colore` - Colore delle truppe del giocatore

Method Detail

### setDisplay

    public void setDisplay(Display schermo)

  Assegna una periferica di visualizzazione al Giocatore.

  Parameters:
    `schermo` - periferica di visualizzazione usata dal gioco per comunicare con il giocatore.

### getColore

    public java.lang.String getColore()

  Restitusice il colore delle armate del giocatore

  Returns:
    il colore delle armate del giocatore

### getCarte

    public java.util.List getCarte()

  Restituisce una collezione di tipo `Set` contenente tutte le carte possedute dal giocatore.

  Returns:
    le carte possedute dal giocatore

### aggiungiCarta

    public void aggiungiCarta(java.lang.String valore)

  Aggiunge una carta fra quelle possedute dal giocatore.

  Parameters:
    `valore` - carta da aggiungere nella collezione di carte possedute dal giocatore

### aggiungiCarte

    public void aggiungiCarte(java.util.List carte)

  Aggiunge una serie di carte a quelle già possedute. Utile in caso di sconfitta di un giocatore, poichè il giocatore sconfitto cede le carte al giocatore che lo ha eliminato.

  Parameters:
    `carte` - `List` di carte da aggiungere

### rimuoviCarta

    public java.lang.String rimuoviCarta(java.lang.String valore)

  Rimuove una carta di un dato valore dalla collezione di carte possedute dal giocatore

  Parameters:
    `valore` - valore della carta da rimuovere dalla collezione di carte
  Returns:
    nome `String` della carta

### rimuoviTutteLeCarte

    public java.util.List rimuoviTutteLeCarte()

  Rimuove tutte le carte dalla collezione di carte possedute dal giocatore. Utile quando un giocatore è stato sconfitto, poichè scarica le carte dalla memoria e le passa a un altro oggetto giocatore.

  Returns:
    tutte le carte del giocatore, dopo averle rimosse

### numeroCarte

    public int numeroCarte()

  Restituisce il numero di carte possedute dal giocatore

  Returns:
    il numero di carte possedute dal giocatore

### rimuoviCarteStessoValore

    public java.util.List rimuoviCarteStessoValore(java.lang.String valore,
                                                   int n)

  Rimuove n carte uguali dalla collezione di carte possedute dal giocatore e le restituisce in una collezione.

  Parameters:
    `valore` - valore `String` delle carte da rimuovere
    `n` - numero di carte uguali da rimuovere
  Returns:
    una `List` contenente le carte rimosse

### getTerritorio

    public Territorio getTerritorio(java.lang.String nomeTerritorio)

  Verifica la presenza di un territorio nella collezione dei territori posseduti dal giocatore, e lo restituisce.

  Parameters:
    `nomeTerritorio` - nome del territorio
  Returns:
    il riferimento al `Territorio`, se effettivamente posseduto, altrimenti `null`

### getTerritori

    public java.util.Set getTerritori()

  Restituisce una collezione di tipo Set contenente tutti i territori posseduti dal giocatore.

  Returns:
    i territori posseduti dal giocatore

### rimuoviTerritorio

    public Territorio rimuoviTerritorio(java.lang.String nomeTerritorio)

  Quando viene perso un territorio in battaglia, questo viene eliminato dalla collezione di territori posseduti.

  Parameters:
    `nomeTerritorio` - nome del territorio perso
  Returns:
    il `Territorio` perso

### aggiungiTerritorio

    public void aggiungiTerritorio(Territorio t)

  In caso di vittoria, il territorio vinto viene aggiunto fra quelli posseduti.

  Parameters:
    `t` - `Territorio` vinto

### setPuoPescare

    public void setPuoPescare(boolean haVintoUnTerritorio)

  Comunica al giocatore se ha la possibilità di pescare una carta Territori al prossimo giro.

  Parameters:
    `haVintoUnTerritorio` - `true` se il giocatore ha conquistato almeno un `Territorio`

### getPuoPescare

    public boolean getPuoPescare()

  Verifica se il giocatore può pescare una carta Territori

  Returns:
    `true` se nel turno scorso ha conquistato almeno un territorio

### getTurnoCorrente

    public static int getTurnoCorrente()

  Restituisce il turno corrente del giocatore

  Returns:
    turni giocati dal giocatore

### aggiornaTurni

    public static void aggiornaTurni()

  Aggiorna i numeri di turni giocati dal `Giocatore` return `void`

### eliminato

    public boolean eliminato()

  Controlla se il giocatore è ancora in gioco.

  Returns:
    `true` se il `Giocatore` occupa almeno un `Territorio`

### haVinto

    public boolean haVinto()

  Verifica la condizione di vittoria.

  Returns:
    `true` se il giocatore ha vinto, cioè se occupa tutti i territori del `Tabellone`

### toString

    public java.lang.String toString()

  Restituisce una descrizione stringa dell'oggetto.

  Overrides:
    `toString` in class `java.lang.Object`
  Returns:
    descrizione `String` dell'oggetto