public CircleSingleplayerRule(CollectibleRepresentation objectiveDiamond) : base()
        {
            circleSingleplayer = new CircleSingleplayer(true, true, true);

            this.objectiveDiamond = new CollectibleRepresentation[1];

            this.objectiveDiamond[0] = objectiveDiamond;

            setup = false;
        }
 //implements abstract circle interface: used to setup the initial information so that the agent has basic knowledge about the level
 public override void Setup(CountInformation nI, RectangleRepresentation rI, CircleRepresentation cI, ObstacleRepresentation[] oI, ObstacleRepresentation[] rPI, ObstacleRepresentation[] cPI, CollectibleRepresentation[] colI, Rectangle area, double timeLimit)
 {
     singlePlayer = new CircleSingleplayer(cutplan, testing, timer);
     //check if it is a single or multiplayer level
     if (rI.X < 0 || rI.Y < 0)
     {
         //if the circle has negative position then this is a single player level
         gameMode = 0;
         singlePlayer.Setup(nI, rI, cI, oI, rPI, cPI, colI, area, timeLimit);
     }
     else
     {
         gameMode    = 1;
         multiPlayer = new CircleCoopAgent(area, colI, oI, rPI, cPI);
         multiPlayer.Setup(nI, rI, cI, oI, rPI, cPI, colI, area, timeLimit);
     }
 }