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

Регистрация: Nov 2012
Сообщений: 43
Цитата:
Сообщение от Wolsh Посмотреть сообщение
Вам вроде объяснили. У Вас нет элемента [n][27] и элемента [20][n]. Их нет. 27-й элемент имеет индекс 26. Соответственно все написанные условия приводят к ошибке — Вы обращаетесь к элементу, которого нет. Какими еще словами это объяснять, я не знаю. Предлагаю поспать и перечитать топик.

Я вообще не понял зачем Вам этот огород. Все эти вопросы только для того, чтобы выяснить, есть ли там элемент с индексом, который хочется проверить на живучесть. Вуаля.
Код AS3:
			var arr:Array = new Array(9);
			trace(arr[9] == null); // true
Так что вместо того, чтобы пытать значения итераторов, достаточно просто спросить, есть там кто? А уже потом — живой ли он?
Другими словами:
Код AS3:
if(mama[j - 1][j2 - 1]	is enemy && mama[j - 1][j2 - 1].alive)	liver_a ++;
if(mama[j - 1][j2]		is enemy && mama[j - 1][j2].alive)		liver_a ++;
if(mama[j - 1][j2 + 1]	is enemy && mama[j - 1][j2 + 1].alive)	liver_a ++;
if(mama[j + 1][j2 - 1]	is enemy && mama[j + 1][j2 - 1].alive)	liver_a ++;
if(mama[j + 1][j2]		is enemy && mama[j + 1][j2].alive)		liver_a ++;
if(mama[j + 1][j2 + 1]	is enemy && mama[j + 1][j2 + 1].alive)	liver_a ++;
if(mama[j][j2 + 1]		is enemy && mama[j][j2 + 1].alive)		liver_a ++;
if(mama[j][j2 - 1]		is enemy && mama[j][j2 - 1].alive)		liver_a ++;
Кроме того, можно просмотр этого квадрата 3х3 запихать в свой двойной циклик, дабы не строчить ритмичным стихом. Сможете?

Понять бы еще, чего считает этот счетчик печенок по всему полю)))
Достойное объяснение, выгодная альтернатива, спасибо!
Мне таки было непонятно с массивами..(п)
так в начале программы я создавал массивы с границами -
Код AS3:
private var mama:Array = new Array(20);  //То есть тут будут 20 элементов с индексами от 0 до 19
 
		public function LiveGame() {
			//Build Massive
			for(var j:int = 0; j < 21; j++){
				mama[j] = new Array(29);//То есть тут будут 29 элементов с индексами от 0 до 28
			} etc.
Но ведь в цикле с проверкой я не выходил за эти рамки =\
Код AS3:
for(var j:int = 0; j < 20; j++){
				for(var j2:int = 0; j2 < 27; j2++){ etc.
Делаю проверку я вот для чего .. Математическая игра жизнь
Из за погрешности в коде массивов и проверки
Код AS3:
if(mama[u][u2].alive == true){
						if(liver_a > 3 || liver_a < 2){
							mama[u][u2].alive = false;
						} else if(liver_a == 2 || liver_a == 3){
							mama[u][u2].alive = true;
						}
					} else if(mama[u][u2].alive == false){
						if(liver_a == 3){
							mama[u][u2].alive = true;
						}
					}
					liver_a = 0;
ход игры идет не так =(


Последний раз редактировалось PasserBy; 26.11.2012 в 10:36.