рони,
Похоже, я телепат: я чувствовал, что что-то подобное появится |
Dilettante_Pro,
:) |
:write: изменил алгоритм движения кроликов пост №23
|
Прикрутил к коду Dilettante_Pro кое-что еще:
добавил некоторые элементы ООП; добавил новый юнит - траву. Теперь думаю над следующим: 1) Нужно реализовать эффект зарастания травы по всему полю. Т.е если на клетке трава, то через некоторое время(допустим через 4 сек) на соседней клетке (выбирается рандомно) тоже должна появиться трава. (смотреть строку № 100) http://plnkr.co/edit/yFvDmjtbARSTLjoKK0rW?p=preview 2) Животное (красный квадратик) должно кушать эту траву и получать энергию (баллы). Если оно не ест (количество баллов = 0) - через какое-то время оно умирает. Сейчас же животное не может даже зайти на траву, т.к. никакой юнит не может заходить на другого юнита |
yaparoff,
У вас при движении животных получается двойной forEach - при вызове функции moveAnimal() и внутри этой функции. Из-за этого животные прыгают как сумасшедшие |
Цитата:
Написал вот так: setInterval(function() { moveAnimal(); }, 1000); Но интерпретатор не может понять что это за moveAnimal(); К нему надо подобраться по другому. Как? |
Цитата:
Animal.prototype.moveAnimal = function(i) { var stepTop, stepLeft, unitTop, unitLeft, noFree, unitPos = {}; // for (var i = 0; i < animals.length; i++) { noFree = true; do { stepTop = Math.round(Math.random() * 2 - 1) * 20; stepLeft = Math.round(Math.random() * 2 - 1) * 20; unitTop = +animals[i].top.replace(/\D/g,"") + stepTop; unitLeft = +animals[i].left.replace(/\D/g,"") + stepLeft; if (unitTop < 0 || unitLeft < 0 || unitTop > 380 || unitLeft > 380) { noFree = true; } else { unitTop = unitTop + 'px'; unitLeft = unitLeft + 'px'; noFree = false; for(var j = 0; j< units.length; j++) { if(units[j].top == unitTop && units[j].left == unitLeft) { noFree = true; } } } } while (noFree); units[i].top = unitTop; units[i].left = unitLeft; animals[i].top = unitTop; animals[i].left = unitLeft; var elem = document.querySelector('#a' + i); elem.style.top = unitTop; elem.style.left = unitLeft; // } } setInterval(function() { newAnimals.forEach(function(animal, index) { console.log(animal); animal.moveAnimal(index); }); }, 1000); |
Часовой пояс GMT +3, время: 06:30. |