//Execute l'action du robot et le signal à l'environnement public static void executeAction(SimpleActionType action, Position robot) { Thread.Sleep(1000 / SpeedFactor); switch (action) { case SimpleActionType.PICK: pickDiamond(robot.x, robot.y); break; case SimpleActionType.VACUUM: vacuumDust(robot.x, robot.y); break; case SimpleActionType.TOP: MainWindow.environment.addEvent("MOVE:NORTH"); break; case SimpleActionType.BOTTOM: MainWindow.environment.addEvent("MOVE:SOUTH"); break; case SimpleActionType.LEFT: MainWindow.environment.addEvent("MOVE:WEST"); break; case SimpleActionType.RIGHT: MainWindow.environment.addEvent("MOVE:EAST"); break; } }
private void act() { bool needsToStop = false; int countAction = 0; //Permet d'effectuer autant de mouvement que prévu par l'apprentissage while (intention.Count != 0 && !needsToStop) { countAction++; if (countAction == bestFreqExploration) { needsToStop = true; } SimpleActionType a = intention.Dequeue(); Effectors.executeAction(a, belief.robotPos); } }