Player.java

package fr.umontpellier.iut.conquest;

import fr.umontpellier.iut.conquest.strategies.Strategy;

import java.util.Objects;

/**
 * Modélise un joueur de Conquest.
 */
public class Player {
    /**
     * La stratégie du joueur.
     */
    private Strategy strategy;
    /**
     * La partie en cours.
     */
    private Game game;
    /**
     * Le nom du joueur.
     */
    private String name;
    /**
     * La couleur du joueur.
     */
    private int color;

    /**
     * Constructeur.
     */
    public Player(Strategy strategy, Game game, String name, int color) {
        this.strategy = strategy;
        this.game = game;
        this.name = name;
        this.color = color;
    }

    /**
     * Getters.
     */
    public Game getGame() {
        return game;
    }

    public String getName() {
        return name;
    }

    public int getColor() {
        return color;
    }

    /**
     * Utilise la stratégie du joueur pour retourner un coup valide.
     */
    public Move play() { // Flag
        System.out.println("Au tour de " + name + " :");
        return strategy.getMove(game.getBoard(), this);
    }

    /**
     * equals et hashCode.
     * Un joueur est identifié par sa couleur.
     */

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof Player)) return false;
        Player player = (Player) o;
        return getColor() == player.getColor();
    }

    @Override
    public int hashCode() {
        return Objects.hash(getColor());
    }

}