public class Jugador extends Thread {
	private int palos;
	private int pelotas;
	private boolean experto;
	private int num;
	private Club elClub;
	private int id;

	public Jugador(int pelotas, int palos, int id, boolean experto, int numVueltas, Club elClub) throws Exception{
		this.elClub = elClub;
		if (experto) {

			if (palos >= 2 && palos <= 5) { // Compruebo las coniciones del
											// invariante
				this.palos = palos;
				this.pelotas = 1;
				this.experto = true;
				this.num = numVueltas;
				this.id = id;
			} else {
				throw new Exception("Excepcion Jugador Experto");
			}
		} else {

			if (pelotas <= 5) {
				this.pelotas = pelotas;
				this.palos = 2;
				this.num = numVueltas;
				this.experto = false;
				this.id = id;
			} else {
				throw new Exception("Excepcion Jugador Novato");
			}

		}
	
	}
	
	
		@Override
		public String toString() {
			String s = " " + id;
			if (experto) {
				s += "+";
			} else {
				s += "-";
			}
			return s;
		}	
	
	
	@Override
	public void run() {

		try {
			while (0 < num) {// Controlar la cantidad de veces que lo realiza
								// cada jugador
				elClub.reservar(this.palos, this.pelotas);
				System.out.println(this.toString() + "[" + palos + "," + pelotas + "]" + " reserva ");
				System.out.println(this.toString() + " juega");
				Thread.sleep((long) (Math.random() * 1000));

				elClub.devolver(palos, pelotas);
				System.out.println(this.toString() + "[" + palos + "," + pelotas + "]" + " devuelve ");
				System.out.println(this.toString() + " descansa");
				Thread.sleep((long) (Math.random() * 1000));
				num--;
			}
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}
}