1. ActionScript / Говнокод #11937

    −121

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    for (var cx : int = this.cell.cx - distance; cx <= this.cell.cx + distance; cx++) {
                    for (var cy : int = this.cell.cy - distance; cy <= this.cell.cy + distance; cy++) {
                        var cell : Cell = Cell.getCell(cx, cy);
                        if (cell) {
                            for each (var object : GameObject in cell.objects) {
                                if (object.buildable &&
                                    object.buildable.tags.find(Buildable.TAG_DEBRIS) &&
                                    deletedDebris.indexOf(object.id) == -1) {
                                    deletedDebris.push(object.id);
                                }
                            }
                        }
                    }
                }

    Игра с пространством имен просто добила....
    Любителям this посвящается.

    Запостил: kyzi007, 16 Октября 2012

    Комментарии (6) RSS

    • строительный мусор - поиграй
      Ответить
    • А чем плохо? :| То что cx / cy есть и у this.cell и так же переменные назвали в цикле? Ну так а что в этом плохого, наоборот даже хорошо, что имена не с потолка. Даже можно понять из контекста, что имелись в виду cell-x / cell-y скорее всего.
      Можно было, конечно, сделать эту функцию более общей, т.как операция перечисления всех элементов на доске практически наверняка случается в игре не один раз, но это как бы мелочи...
      Ответить
      • Плохо что есть this.cell и cell.
        А дальше простор для фантазии и ошибок.
        Ответить
        • {"id" :this.id, "behavior" : id}
          Вот блять свеженайденное.
          Ответить
        • В смысле это два разных cell? Ну, хотя, опять же, правила хорошего тона предписывают, что если нужно назвать переменную по смыслу так, то и не нужно обращать внимание на то, что в более общей области видимости есть уже переменная с таким именем. Чтобы не создавать уродцев типа cell_ $cell и т.п. Хотя, конечно, если можно было как-то избежать, то было бы лучше.
          Ответить
        • public static function withCellsInArea(
              action:Function, filter:Function, area:Rectangle):void
          {
              for (var i:int = area.top + area.left;
                  i < area.bottom + area.right; i++)
                  filter(Cell.getCell(i % area.width, i / area.width), action);
          }
          
          private function filterDebris(cell:Cell, action:Function):void
          {
              if (cell)
                  for each (var object : GameObject in cell.objects)
                      if (object.buildable &&
                          object.buildable.tags.find(Buildable.TAG_DEBRIS))
                          action(object.id);
          }
          
          private function sweepDerbis(debrisId:int):void
          {
              if (this.deletedDebris.indexOf(debrisId) == -1)
                  this.deletedDebris.push(debrisId);
          }
          
          private function gameLoop():void
          {
              var area:Rectangle = new Rectangle();
              area.width = area.height = distance * 2;
              area.topLeft.offset(this.cell.cx - distance, this.cell.cy - distance);  
              this.withCellsInArea(this.sweepDerbis, this.filterDebris, area); 
          }
          :P
          Ответить

    Добавить комментарий