Цитата:
Сообщение от PasserBy
Достойное объяснение, выгодная альтернатива, спасибо!
так в начале программы я создавал массивы с границами -
 Код AS3:
private var mama:Array = new Array(20); //То есть тут будут 20 элементов с индексами от 0 до 19
for(var j:int = 0; j < 21; j++){} etc.
|
Это не массив с границами. Был создан массив с двадцатью null'ами. Прочитайте документацию на то, что делает конструктор, и примеры рядом. Затем в массив положили двадцать один элемент (не двадцать!).
Цитата:
Но ведь в цикле с проверкой я не выходил за эти рамки =\
 Код AS3:
for(var j:int = 0; j < 20; j++){
for(var j2:int = 0; j2 < 27; j2++){ etc.
|
За рамки не выходили. Но и не инициализировали ничего на границах. Вы заполнили массив с индексами [0..19]. Затем пошли по тому же циклу и делаете следующее:

Код AS3:
if(j < 20 && j2 > 0){
if(mama[j + 1][j2 - 1].alive == true){ liver_a ++; }
}
При j = 19 вы обращаетесь к mama[20], который содержит в себе массив с null'ами. Соответственно, после доступа по (j2-1) вы получите из него только null, у которого нет свойства alive.
Цитата:
|
Из за погрешности в коде массивов и проверки
|
Нет там погрешностей. Это вы с массивами не разобрались. Нужно аккуратно разобраться с индексами. Заодно разобраться с канонической формой итерации (for (var i = start; i < end; i++)) - вам нужно понять, по каким именно значениям выполняется итерация, что такое start и end в таком цикле.
Добавлено через 2 минуты
Ход игры у вас не так идет еще и из-за того, что у вас новое поколение рождается не одновременно. Сначала проверяется одна клетка, при необходимости - обновляется. Затем с учетом уже нового состояния проверяется соседняя с ней и т.д.