Показать сообщение отдельно
Старый 25.11.2012, 22:46
PasserBy вне форума Посмотреть профиль Найти все сообщения от PasserBy
  № 18  
Ответить с цитированием
PasserBy
Banned

Регистрация: Nov 2012
Сообщений: 43
Цитата:
Сообщение от Wolsh Посмотреть сообщение
Последнее условие уберите. Мало того что оно бессмысленно, поскольку выполнится всегда (само условие дублирует условия циклов), так еще и при крайних значениях итераторов Вы выходите за границы массива. Попросту говоря, у Вас нет в массиве врагов никаких экземпляров врага по индексам mama[19+1=20][n] или mama[n][26+1=27]. 27 ячеек имеют индексы 0-26, например, а не 1-27. В ячейке 27 нет врага, там undefined или null, а у них нет свойства "живой".
Убрать это?
Код AS3:
if(j < 20 && j2 < 27){
	if(mama[j + 1][j2 + 1].alive == true){ liver_a ++; }
}
Так внутренний массив состоит из 27 элементов, то есть если элемент 27 условие 27+ 1 не выполняется...к тому же обратите внимание на следующее ..
рабочий пример
Код AS3:
// North
					if ( y > 0 )
						if ( _cells[x][y-1].ok ) bros++;
 
					// North East
					if ( x < _max && y > 0 )
						if ( _cells[x+1][y-1].ok ) bros++;
 
					// North West
					if ( x > 0 && y > 0 )
						if ( _cells[x-1][y-1].ok ) bros++;
 
					// South
					if ( y < _max )
						if ( _cells[x][y+1].ok ) bros++;
 
					// South East
					if ( x < _max && y < _max )
						if ( _cells[x+1][y+1].ok ) bros++;
 
					// South West
					if ( x > 0 && y < _max )
						if ( _cells[x-1][y+1].ok ) bros++;
 
					// East
					if ( x < _max )
						if ( _cells[x+1][y].ok ) bros++;
 
					// West
					if ( x > 0 )
						if ( _cells[x-1][y].ok ) bros++;
полный код рабочего примера в приложенных файлах..=\


Последний раз редактировалось Котяра; 29.12.2012 в 21:12.