рони,
Похоже, я телепат: я чувствовал, что что-то подобное появится |
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, время: 23:34. |