ДействиеСценарий / Говнокод #11937 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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 kyzi007, (Updated )

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

  • А чем плохо? 😐 То что cx / cy есть и у this.cell и так же переменные назвали в цикле? Ну так а что в этом плохого, наоборот даже хорошо, что имена не с потолка. Даже можно понять из контекста, что имелись в виду cell-x / cell-y скорее всего.
    Можно было, конечно, сделать эту функцию более общей, т.как операция перечисления всех элементов на доске практически наверняка случается в игре не один раз, но это как бы мелочи...
    Ответить
    • Плохо что есть this.cell и cell.
      А дальше простор для фантазии и ошибок.
      Ответить
      • В смысле это два разных 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); 
        }
        😛
        Ответить

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

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8