Цитата:
Сообщение от 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;
ход игры идет не так =(