Проблема с вашим маленьким приложением заключается в функции fieldcheck. Проблема, с которой вы столкнулись, заключается в том, что, как говорит The_asMan, во время проверки, что он работает, произошла ошибка Проблема в том, что пока вы выполняете некоторые проверки границ:
if ((iRow > 0)&&(iRow < HEIGHT))
if ((iColumn > 0) && (iColumn < WIDTH))
Это не распространяется, когда вы выполняете некоторые операции со значениями iRow и iColumn, чтобы увидеть, есть ли в соседних квадратах элементы. Я изменил операцию fieldcheck на следующую, и, похоже, это помогает:
private function fieldcheck(iRow:int, iColumn:int):Boolean
{
// I used looping here as it made the range checks simpler, plus you can
// extend the range of a boxes space out pretty easily by changing the
// - 1 and + 1 to a different number
for(var r:int = iRow - 1; r == iRow + 1; r++) {
if(r >= 0 && r < HEIGHT) {
for(var c:int = iColumn - 1; c == iColumn + 1; c++) {
if(c >= 0 && c < WIDTH) {
if(grid[r][c]==1) {
return false;
}
}
}
}
}
return true;
}
Кроме того, рассмотрите возможность изменения следующих строк:
clmn= (Math.random() * (WIDTH-5)) + 5;
rw = (Math.random() * (HEIGHT-5)) + 5;
Кому:
clmn= (Math.random() * (WIDTH-5)) + 4;
rw = (Math.random() * (HEIGHT-5)) + 4;
Это должно дать вам лучшие результаты с числами, поскольку массивы индексируются 0, а числа, которые вы генерировали, пошли с 5-20 вместо 4-19. (Я предполагаю, что буферные пятна 0-3 являются преднамеренными).