]> ruin.nu Git - icfp05.git/commitdiff
banks with guarding cops is BAD.. and public inheritance is more useful than private
authorMichael Andreen <harv@ruin.nu>
Mon, 27 Jun 2005 00:53:12 +0000 (00:53 +0000)
committerMichael Andreen <harv@ruin.nu>
Mon, 27 Jun 2005 00:53:12 +0000 (00:53 +0000)
botsrc/bot.h
robbersrc/robber.cpp

index ee236ee1e0519056ad9d70cb0aef978d0538775b..a5f469b580becc9b390b20b7dbbd9ca11ce92e03 100644 (file)
@@ -67,8 +67,8 @@ struct SPInfo{
 
 class SPGoal{
        public:
-       virtual ~SPGoal(){}
-       virtual int operator()(const SPInfo* node) const = 0;
+               virtual ~SPGoal(){}
+               virtual int operator()(const SPInfo* node) const = 0;
 };
 
 class Bot {
@@ -102,12 +102,12 @@ class Bot {
 
 class SimpleSPGoal : public SPGoal{
        std::string _to;
-       SimpleSPGoal(std::string to);
        public:
+       SimpleSPGoal(std::string to);
        int operator()(const SPInfo* node) const;
 };
 
-class FindPlayer : SPGoal{
+class FindPlayer : public SPGoal{
        int _limit;
        const __gnu_cxx::hash_map<std::string, Player>& _players;
        PlayerType _type;
index dbb287a4d760b5bb2dd231497778866318fb24a4..8baf84e23edca71a830f183f36631682dc5394cf 100644 (file)
@@ -41,6 +41,14 @@ string Robber::turn(){
                                bank != _banks.end(); ++bank){
                        //cerr << "Handling bank at: " << bank->first << endl;
                        if (bank->second > 0){
+                               list<string> cop = shortestPath(bank->first, cop_car, FindPlayer(_players, cop_car, 3), true);
+                               if (cop.size() > 0)
+                                       continue;
+                               else{
+                                       cop = shortestPath(bank->first, cop_foot, FindPlayer(_players, cop_foot, 3), true);
+                                       if (cop.size() > 0)
+                                               continue;
+                               }
                                list<string> l = shortestPath(street->first, _type, SimpleSPGoal(bank->first));
                                if (l.size() < 1)
                                        continue;