// hipodromo.cpp - Hipódromo para la carrera de caballos
#include <iostream>
#include <string>
#include "tablon.h"
#include "caballo.h"
#include "marcador.h"
using namespace std;

int main()
{  
  srand(time(0)); // iniciar el generador de números
  char nomCaballo[20];
  const int num_participantes = 5;
  CTablon tablon(num_participantes);        // tablón
  CCaballo participante[num_participantes]; // participantes
  CMarcador marcador(&tablon);              // marcador
  try
  {
    // Crear e iniciar el hilo marcador
    marcador.iniciar();

    for (int i = 0; i < num_participantes; i++)
    {
      // Datos de los participantes
      sprintf(nomCaballo, "caballo %d", i+1);
      participante[i].asignarTablon(&tablon);
      participante[i].asignarDorsal(i);
      participante[i].asignar_nombre(string(nomCaballo));
      // Crear e iniciar los hilos caballos participantes
      participante[i].iniciar();
    }
    // Esperar a que finalicen todos los hilos
    for (int i = 0; i < num_participantes; i++)
      participante[i].esperar_finalizacion();
    marcador.esperar_finalizacion();
  }
  catch(string& str)
  {
    cout << str << endl;
  }
}

