import java.util.Random;

/**
 * Classe para castelo Japonês
 */
public class Japones extends Castelo
{
	protected int numSamurais;

	/**
	 * Construtor para o Objeto
	 *
	 * @param      defesas_      O valor das defesas
	 * @param      localizacao_  A localizacao
	 * @param      pontosVida    Os pontos de vida
	 * @param      nome          O nome do castelo
	 * @param      samurais      A quantidade de samurais
	 */
	public Japones ( double defesas_, double localizacao_, 
		double pontosVida, String nome, int samurais )
	{
		super ( defesas_, localizacao_, pontosVida, nome );
		numSamurais = samurais;
	}

	/**
	 * Pega o número de Samurais
	 *
	 * @return     O número de samurais.
	 */
	public int getNumSamurais ()
	{ return numSamurais; }

	/**
	 * Atrinui o número de Samurais 
	 *
	 * @param      samurais  O número de samurais
	 */
	public void setNumSamurais ( int samurais )
	{ numSamurais = samurais; }

	/**
	 * Mostra a situação do atual do Castelo Japonês
	 * se os pontos de vida forem 0, então uma
	 * mensagem informando que o castelo foi 
	 * destruído é exibida, aproveita o método da 
	 * classe Castelo.
	 */
	public void mostrarSituacao ()
	{
		String numS = String.valueOf(numSamurais);

		super.mostrarSituacao();
		System.out.println("Samurais: " + numS );
	}

	/**
	 * Realiza um ataque ao Castelo Japonês, se
	 * o número de samurais for maior que zero,
	 * um número entre 2 e 5 de samurais são 
	 * eliminados, caso contrário o método ataque
	 * da classe Castelo é chamado. Caso o valor de
	 * um dano negativo seja recebido, nada acontece
	 * e uma mensagem é exibida.
	 *
	 * @param      dano  O dano sofrido.
	 */
	public void ataque ( double dano )
	{
		if ( dano <= 0.0 )
		{
			System.out.println("Nenhum dano foi sofrido");
		}
		else if ( numSamurais > 0 )
		{
			Random random = new Random();
			int samuraisDestruidos = 2 + random.nextInt(5);
			
			numSamurais -= samuraisDestruidos;

			//<! Evita número de paladinos negativo
			if ( numSamurais < 0 )
				numSamurais = 0;
		}
		else
		{
			super.ataque(dano);
		}
	}
}