struct Intersection{
__gnu_cxx::hash_map<std::string,StreetType> connections;
- std::string type;
+ IntersectionType type;
int x;
int y;
};
template<class T>
T value(std::string input);
+struct SPInfo{
+ std::string name;
+ bool settled;
+ SPInfo* parent;
+ int cost;
+};
+
+
+struct SPGoal{
+ virtual ~SPGoal(){}
+ virtual int operator()(const SPInfo* node) const = 0;
+};
+
+struct SimpleSPGoal : public SPGoal{
+ std::string _to;
+ SimpleSPGoal(std::string to):_to(to){};
+ ~SimpleSPGoal(){}
+ int operator()(const SPInfo* node) const{
+ if (node->name == _to)
+ return 1;
+ return 0;
+ }
+};
+
class Bot {
public:
Bot(const std::string& name, PlayerType type);
- virtual ~Bot();
+ virtual ~Bot(){};
virtual void play();
protected:
void buildGraph();
void updateWorld();
- virtual std::string turn();
+ virtual std::string turn() = 0;
void move(std::string location);
- std::list<std::string> shortestPath(const std::string& from, const std::string& to, PlayerType type);
+ std::list<std::string> shortestPath(const std::string& from, PlayerType type, const SPGoal& goal);
__gnu_cxx::hash_map<std::string, Intersection> _intersections;
__gnu_cxx::hash_map<std::string, Player> _players;
int _smell;
};
-
#endif