-#ifndef __BOT_H__
-#define __BOT_H__
-
-#include <ext/hash_map>
-#include <vector>
-#include <string>
-#include <locale>
-// These are needed to be able to use std::string as key in a hash_map.
-namespace __gnu_cxx {
- template< typename CharT, typename Traits, typename Alloc >
- struct hash< std::basic_string<CharT, Traits, Alloc> > {
- size_t operator()(const std::basic_string<CharT, Traits, Alloc>& s) const {
-
- const std::collate<CharT>& c = std::use_facet< std::collate<CharT> >(std::locale());
-
- return c.hash(s.c_str(), s.c_str() + s.size());
-
- }
-
- };
-
- template< typename CharT, typename Traits, typename Alloc >
- struct hash< const std::basic_string<CharT, Traits, Alloc> > { //yes you need this version aswell!
-
- size_t operator()(const std::basic_string<CharT, Traits, Alloc>& s) const {
-
- const std::collate<CharT>& c = std::use_facet< std::collate<CharT> >(std::locale());
-
- return c.hash(s.c_str(), s.c_str() + s.size());
- }
-
- };
-};
-
-struct AdjInfo{
- std::string intersection;
-};
-
-struct Intersection{
- std::vector<AdjInfo> adjs;
-};
-
-struct Player{
- std::string type;
- std::string location;
-};
-
-struct Bank{
- std::string location;
- int value;
-};
-
-std::vector<std::string> tokenizeString(std::string input);
-
-class Bot {
- public:
- Bot(std::string name, std::string type);
-
- void play();
- void buildGraph();
- void updateWorld();
- virtual void turn() = 0;
-
- private:
- __gnu_cxx::hash_map<std::string, Intersection> _intersections;
- __gnu_cxx::hash_map<std::string, Player> _players;
- std::string _name;
- std::string _type;
- std::string _position;
-};
-
-
-#endif