Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 09.05.2017, 13:39
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

рони,
Похоже, я телепат: я чувствовал, что что-то подобное появится
Ответить с цитированием
  #22 (permalink)  
Старый 09.05.2017, 13:49
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Dilettante_Pro,
Ответить с цитированием
  #23 (permalink)  
Старый 10.05.2017, 14:10
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

изменил алгоритм движения кроликов пост №23

Последний раз редактировалось рони, 10.05.2017 в 14:14.
Ответить с цитированием
  #24 (permalink)  
Старый 10.05.2017, 17:11
Кандидат Javascript-наук
Отправить личное сообщение для yaparoff Посмотреть профиль Найти все сообщения от yaparoff
 
Регистрация: 26.04.2016
Сообщений: 106

Прикрутил к коду Dilettante_Pro кое-что еще:
добавил некоторые элементы ООП;
добавил новый юнит - траву.

Теперь думаю над следующим:
1) Нужно реализовать эффект зарастания травы по всему полю. Т.е если на клетке трава, то через некоторое время(допустим через 4 сек) на соседней клетке (выбирается рандомно) тоже должна появиться трава.
(смотреть строку № 100) http://plnkr.co/edit/yFvDmjtbARSTLjoKK0rW?p=preview

2) Животное (красный квадратик) должно кушать эту траву и получать энергию (баллы). Если оно не ест (количество баллов = 0) - через какое-то время оно умирает.

Сейчас же животное не может даже зайти на траву, т.к. никакой юнит не может заходить на другого юнита
Ответить с цитированием
  #25 (permalink)  
Старый 10.05.2017, 17:48
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

yaparoff,
У вас при движении животных получается двойной forEach - при вызове функции moveAnimal() и внутри этой функции. Из-за этого животные прыгают как сумасшедшие
Ответить с цитированием
  #26 (permalink)  
Старый 10.05.2017, 18:34
Кандидат Javascript-наук
Отправить личное сообщение для yaparoff Посмотреть профиль Найти все сообщения от yaparoff
 
Регистрация: 26.04.2016
Сообщений: 106

Сообщение от Dilettante_Pro Посмотреть сообщение
получается двойной forEach
Предлагаете убрать forEach у SetInterval (строка 129) ?

Написал вот так:
setInterval(function() {
	moveAnimal();
}, 1000);

Но интерпретатор не может понять что это за moveAnimal();
К нему надо подобраться по другому. Как?
Ответить с цитированием
  #27 (permalink)  
Старый 11.05.2017, 15:27
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Сообщение от yaparoff
К нему надо подобраться по другому. Как?
Например, так
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);
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать родительский элемент? alex_han Events/DOM/Window 6 06.12.2013 23:01
Скрыть элемент, который идет по известной ссылке PlayHard Общие вопросы Javascript 5 25.08.2013 23:27
Скрытный элемент. RAPOS Элементы интерфейса 4 20.07.2013 21:34
Взять элемент рандомно HETmozgov jQuery 12 16.01.2011 13:52
Кодировка при использовании Ajax Nichloas AJAX и COMET 9 17.09.2009 16:06