#ifndef __HEURISTIC_HPP__
#define __HEURISTIC_HPP__

namespace mcts
{
  template <typename Game>
  class heuristic
  {
  public:
    virtual float get_value(const Game& game, uint8_t move) const = 0;
    virtual int get_count(const Game& game, uint8_t move) const = 0;
    virtual ~heuristic(){};

  };

  template <typename Game>
  class zero_knowledge : public heuristic<Game>
  {
  public:
    float get_value(const Game& game, uint8_t move) const
    {
      return 0.f;
    }
    int get_count(const Game& game, uint8_t move) const
    {
      return 1;
    }
  };
}

#endif