anchor.diff:       * sondern ein Bogenmass, also den Umfang des Kreisabschnittes.
        * Um also aus dem Winkel das Bogenmass zu erhalten,
        * rechnen wir: Winkel / 180 * PI
  -     * Y-Achse = row / Height
  -     * X-Achse = col / width
  +     * Y-Achse | row | height
  +     * X-Achse | col | width
        **/
       void rotate(angle){
  -      //TODO: Drehungen von I und O Tetromino fehlerhaft
  -      var _rotate = [
  -        { 'row' : (_stone.elementAt(0)['row'] + (_stone.elementAt(0)['col'] - _stone.elementAt(0)['col']) * sin(angle / 180 * PI) + (_stone.elementAt(0)['row'] - _stone.elementAt(0)['row']) * cos(angle / 180 * PI)).round(),  'col' : (_stone.elementAt(0)['col'] + (_stone.elementAt(0)['col'] - _stone.elementAt(0)['col']) * cos(angle / 180 * PI) - (_stone.elementAt(0)['row'] - _stone.elementAt(0)['row']) * sin(angle / 180 * PI)).round() },
  -        { 'row' : (_stone.elementAt(0)['row'] + (_stone.elementAt(1)['col'] - _stone.elementAt(0)['col']) * sin(angle / 180 * PI) + (_stone.elementAt(1)['row'] - _stone.elementAt(0)['row']) * cos(angle / 180 * PI)).round(),  'col' : (_stone.elementAt(0)['col'] + (_stone.elementAt(1)['col'] - _stone.elementAt(0)['col']) * cos(angle / 180 * PI) - (_stone.elementAt(1)['row'] - _stone.elementAt(0)['row']) * sin(angle / 180 * PI)).round() },
  -        { 'row' : (_stone.elementAt(0)['row'] + (_stone.elementAt(2)['col'] - _stone.elementAt(0)['col']) * sin(angle / 180 * PI) + (_stone.elementAt(2)['row'] - _stone.elementAt(0)['row']) * cos(angle / 180 * PI)).round(),  'col' : (_stone.elementAt(0)['col'] + (_stone.elementAt(2)['col'] - _stone.elementAt(0)['col']) * cos(angle / 180 * PI) - (_stone.elementAt(2)['row'] - _stone.elementAt(0)['row']) * sin(angle / 180 * PI)).round() },
  -        { 'row' : (_stone.elementAt(0)['row'] + (_stone.elementAt(3)['col'] - _stone.elementAt(0)['col']) * sin(angle / 180 * PI) + (_stone.elementAt(3)['row'] - _stone.elementAt(0)['row']) * cos(angle / 180 * PI)).round(),  'col' : (_stone.elementAt(0)['col'] + (_stone.elementAt(3)['col'] - _stone.elementAt(0)['col']) * cos(angle / 180 * PI) - (_stone.elementAt(3)['row'] - _stone.elementAt(0)['row']) * sin(angle / 180 * PI)).round() }
  -      ];
  -
  -      // Methode aufrufen um Kollisionen zu prüfen,
  -      // wenn Ja neuer Tetromino fallen lassen
  -      // ansonsten Stein Setzen
  -      checkCollisions(_rotate);
  +      // Liste der Tetromino für die Rotation
  +      var _rotate;
  +
  +      // Prüfen ob der Tetromino, nicht das O Tetromino ist
  +      // 1. Sonderfall keine Rotation nötig!
  +      if(!(_stone.elementAt(0)['row'] == _stone.elementAt(2)['row'] && _stone.elementAt(1)['row'] == _stone.elementAt(3)['row'] &&  _stone.elementAt(0)['col'] == _stone.elementAt(1)['col'] && _stone.elementAt(2)['col'] == _stone.elementAt(3)['col'])){
  +
  +
  +        // 2. Sonderfall extra Rotation nötig!
  +        // Prüfen ob es das I Tetromino in horizontaler Form ist
  +        if(_stone.elementAt(0)['row'] == stone.elementAt(1)['row'] && stone.elementAt(0)['row'] == _stone.elementAt(2)['row'] && _stone.elementAt(0)['row'] == stone.elementAt(3)['row']) {
  +          // Rotation in die vertikale Form
  +          // Tetromino von oben nach unten erzeugen
  +          _rotate = [
  +               { 'row' : _stone.elementAt(0)['row'],      'col' : _stone.elementAt(0)['col'] },
  +               { 'row' : _stone.elementAt(0)['row'] + 1,  'col' : _stone.elementAt(0)['col'] },
  +               { 'row' : _stone.elementAt(0)['row'] + 2,  'col' : _stone.elementAt(0)['col'] },
  +               { 'row' : _stone.elementAt(0)['row'] + 3,  'col' : _stone.elementAt(0)['col'] }
  +           ];
  +
  +          // Prüfen ob der Tetromino über den Grund erzeugt wird bei der Rotation
  +          if(!notOnGround(_rotate)){
  +            // Wenn Ja den Tetromino von unten nach oben erzeugen
  +            _rotate = [
  +              { 'row' : this._game.sizeHeight - 4,  'col' : _stone.elementAt(0)['col'] },
  +              { 'row' : this._game.sizeHeight - 3,  'col' : _stone.elementAt(0)['col'] },
  +              { 'row' : this._game.sizeHeight - 2,  'col' : _stone.elementAt(0)['col'] },
  +              { 'row' : this._game.sizeHeight - 1,  'col' : _stone.elementAt(0)['col'] }
  +            ];
  +          }
  +
  +
  +          // Prüfen ob es das I Tetromino in vertikaler Form ist
  +        } else if(_stone.elementAt(0)['col'] == stone.elementAt(1)['col'] && stone.elementAt(0)['col'] == _stone.elementAt(2)['col'] && _stone.elementAt(0)['col'] == stone.elementAt(3)['col']){
  +          // Rotation in die horizontale Form
  +          // Tetromino von links nach rechts erzeugen
  +          _rotate = [
  +              { 'row' : _stone.elementAt(0)['row'],  'col' : _stone.elementAt(0)['col']     },
  +              { 'row' : _stone.elementAt(0)['row'],  'col' : _stone.elementAt(0)['col'] + 1 },
  +              { 'row' : _stone.elementAt(0)['row'],  'col' : _stone.elementAt(0)['col'] + 2 },
  +              { 'row' : _stone.elementAt(0)['row'],  'col' : _stone.elementAt(0)['col'] + 3 }
  +            ];
  +
  +          // Prüfen ob der Tetromino über den rechten Rand erzeugt wird bei der Rotation
  +          if(!notOnSide(_rotate)){
  +            // Wenn Ja den Tetromino von rechts nach links erzeugen
  +            _rotate = [
  +              { 'row' : _stone.elementAt(0)['row'],  'col' : this._game.sizeWidth - 4 },
  +              { 'row' : _stone.elementAt(0)['row'],  'col' : this._game.sizeWidth - 3 },
  +              { 'row' : _stone.elementAt(0)['row'],  'col' : this._game.sizeWidth - 2 },
  +              { 'row' : _stone.elementAt(0)['row'],  'col' : this._game.sizeWidth - 1 }
  +            ];
  +          }
  +
  +        } else {
  +
  +        // Alle anderen Tetromino nach der Rotationsformel
  +         _rotate = [
  +              { 'row' : (_stone.elementAt(0)['row'] + (_stone.elementAt(0)['col'] - _stone.elementAt(0)['col']) * sin(angle / 180 * PI) + (_stone.elementAt(0)['row'] - _stone.elementAt(0)['row']) * cos(angle / 180 * PI)).round(),  'col' : (_stone.elementAt(0)['col'] + (_stone.elementAt(0)['col'] - _stone.elementAt(0)['col']) * cos(angle / 180 * PI) - (_stone.elementAt(0)['row'] - _stone.elementAt(0)['row']) * sin(angle / 180 * PI)).round() },
  +              { 'row' : (_stone.elementAt(0)['row'] + (_stone.elementAt(1)['col'] - _stone.elementAt(0)['col']) * sin(angle / 180 * PI) + (_stone.elementAt(1)['row'] - _stone.elementAt(0)['row']) * cos(angle / 180 * PI)).round(),  'col' : (_stone.elementAt(0)['col'] + (_stone.elementAt(1)['col'] - _stone.elementAt(0)['col']) * cos(angle / 180 * PI) - (_stone.elementAt(1)['row'] - _stone.elementAt(0)['row']) * sin(angle / 180 * PI)).round() },
  +              { 'row' : (_stone.elementAt(0)['row'] + (_stone.elementAt(2)['col'] - _stone.elementAt(0)['col']) * sin(angle / 180 * PI) + (_stone.elementAt(2)['row'] - _stone.elementAt(0)['row']) * cos(angle / 180 * PI)).round(),  'col' : (_stone.elementAt(0)['col'] + (_stone.elementAt(2)['col'] - _stone.elementAt(0)['col']) * cos(angle / 180 * PI) - (_stone.elementAt(2)['row'] - _stone.elementAt(0)['row']) * sin(angle / 180 * PI)).round() },
  +              { 'row' : (_stone.elementAt(0)['row'] + (_stone.elementAt(3)['col'] - _stone.elementAt(0)['col']) * sin(angle / 180 * PI) + (_stone.elementAt(3)['row'] - _stone.elementAt(0)['row']) * cos(angle / 180 * PI)).round(),  'col' : (_stone.elementAt(0)['col'] + (_stone.elementAt(3)['col'] - _stone.elementAt(0)['col']) * cos(angle / 180 * PI) - (_stone.elementAt(3)['row'] - _stone.elementAt(0)['row']) * sin(angle / 180 * PI)).round() }
  +             ];
  +
  +        }
  +
  +        querySelector("#level").innerHtml = _rotate.elementAt(2)['col'].toString();
  +        querySelector("#points").innerHtml = _rotate.elementAt(2)['row'].toString();
  +
  +        // Methode aufrufen um Kollisionen zu prüfen,
  +        // wenn Ja neuer Tetromino fallen lassen
  +        // ansonsten Stein Setzen
  +        checkCollisions(_rotate);
  +
  +      }
   
       }
   
  
positive.code: 
        // Vorschau auf den nächsten Tetromino
        _tempStone = r.nextInt(7);
        _nextstone = randomTetromino(_tempStone, this._game._nextStoneFieldHeight - 1, this._game._nextStoneFieldWidth);
        // Farbe setzen
        _nextstoneColor = _tempColor;
      }
  
      // sonst alle anderen Tetromino
      // Den normalen Tetromino erzeugen
      _stone = randomTetromino(_tempStone, 0, this._game._sizeWidth);
  
      //Die Zellen, welche von dem aktuellen Tetromino belegt sind als aktiv
      //makieren
  
negative.code:     _stoneColor = _nextstoneColor;
      // Vorschau auf den nächsten Tetromino
      _tempStone = r.nextInt(7);
      _nextstone = randomTetromino(_tempStone, this._game.nextStoneFieldHeight - 1, this._game.nextStoneFieldWidth);
      // Farbe setzen
      _nextstoneColor = _tempColor;
    }
  