anchor.diff:  part of DartyDiceWars;
   
  +/* Controllerpart of the MVC structure of DiceWars
  + * 
  + * Here, the Playerinput and the general flow of the game are handled. Also,
  + * the given file containing levelinformation is loaded via the DiceController.
  + * 
  + * This class creates all subsequent classes needed to run the Game
  + */
   class DiceController {
  +  /*
  +   * Controller variables:
  +   * final view - View module of the game
  +   * DiceGame game - Model module of the game
  +   * XmlNode level - the imported levelfile
  +   * int maxlevels - maximum number of levels in the current session
  +   * String last - ID of the last clicked tile. Only way to prevent mutiple clicks
  +   *               on a tile to be registered.
  +   */
     final view = new DiceView();
     DiceGame game;
     XmlNode level;
     int maxlevels;
     String last = "";
  -
  +  
  +  /*
  +   * Constructor for the DiceController. 
  +   * Here, all the Listeners for Playerinput are handled. Detailed explanations 
  +   * for the exact usage are above each Listener.
  +   */
     DiceController() {
  +    /*
  +     * Starts a new game with the first level of the levelsfile. The displayed
  +     * Button also gets disabled to prevent the creation of multiple games at 
  +     * the same time.
  +     */
       view.startButton.onClick.listen((_) {
         if (level == null) {
           view.startButton.style.display = "none";
           startGame(1);
         }
       });
  -
  -    view.arena.onMouseLeave.listen((ev) {
  -      view.showHover("");
  -    });
  -
  +    
  +    /*
  +     * Listener for the Hoverfunction of the territories. Only one territory can
  +     * be hovered at one time and a territory cannot be selected and hovered at 
  +     * once.
  +     */
       view.arena.onMouseEnter.listen((ev) {
         if (game.currentPlayer.id == "human") {
           querySelectorAll('.hex').onMouseOver.listen((_) {
  
positive.code:                   if (temp > startRoutes[j-1]) startRoutes[j-1] = temp;
                  }
      }
      
      
      
      view.initializeViewField(game, maxlevels, startRoutes);
      view.updateFieldWithTerritories(game);
      print("First Player: " + game.currentPlayer.id.toString());
  
negative.code:             view.showHover("");
            } else {
              view.showHover(_.currentTarget.getAttribute("parent"));
            }
          });
        }
      });
      
      /*
       * Additional Listener to turn of hovereffect if the mouse moves out of the 
       * arena.
       */
      view.arena.onMouseLeave.listen((ev) {
        view.showHover("");
      });
  
      /*
       * Listener to handle all clicking actions of the player inside of the arena.
       * To prevent multiple events from triggering with one click, it is impossible
       * to click the same hexagon twice in a row.
       * First click on a valid territory (at least 2 dice, owned by the player) selects
       * the first territory.
       * Second click on a valid territoy (enemy-owned territory adjacent to the first one)
       * Clicking twice on the same territory deselects it.
       * If two territories are selected, an attack gets computed and shown on the view.
       * 
       */
      view.arena.onMouseEnter.listen((ev) {                 
        querySelectorAll('.hex').onClick.listen((_) {     
          if (last != _.currentTarget.id) {                   
            if (!_.currentTarget.classes.contains('.corner-1') && !_.currentTarget.classes.contains('.corner-2')) {
              if (game != null && game.currentPlayer.id == "human") { 
                String parent = _.currentTarget.getAttribute("parent");
                String owner = _.currentTarget.getAttribute("owner");
                last = _.currentTarget.id;
  