[PATCH] Handle case where an AI sends an invalid message and then crashes
[progcomp2012.git] / judge / manager / controller.cpp
index d268792..e31c1ee 100644 (file)
@@ -62,6 +62,14 @@ MovementResult Controller::Setup(const char * opponentName)
        {
                return MovementResult::BAD_RESPONSE; //You need to include a flag!
        }
+       
+       //Added 9/04/12 - Check all pieces that can be placed are placed
+       for (int ii = 0; ii <= (int)(Piece::BOMB); ++ii)
+       {
+               if (usedUnits[ii] != Piece::maxUnits[ii])
+                       return MovementResult::BAD_RESPONSE; //You must place ALL possible pieces
+       }
+       
 
        return MovementResult::OK;
 
@@ -87,13 +95,16 @@ MovementResult Controller::MakeMove(string & buffer)
                buffer += " OK";
                return MovementResult::OK;
        }
+       */
+       //Restored SURRENDER 9/04/12, because... it kind of seems necessary?    
        if (buffer == "SURRENDER")
        {
                buffer += " OK";
                return MovementResult::SURRENDER;
        }
-       */
-       
+
+
+
        int x; int y; string direction="";
        stringstream s(buffer);
        s >> x;
@@ -101,6 +112,9 @@ MovementResult Controller::MakeMove(string & buffer)
        
 
        s >> direction;
+
+
+
        Board::Direction dir;
        if (direction == "UP")
        {
@@ -120,6 +134,7 @@ MovementResult Controller::MakeMove(string & buffer)
        }       
        else
        {
+
                if (Game::theGame->allowIllegalMoves)
                        return MovementResult::OK;
                else

UCC git Repository :: git.ucc.asn.au