char.old_x_cell;
3 var z =world.char.old_z_cell;
4 var ob =world.tiles [x ][z ];
5 fall(ob);
6 checkTile(x-1,z);
7 checkTile(x,z+1);
8 checkTile(x+1,z);
9 checkTile(x,z-1);
10 }
В строках 2 и 3 мы устанавливаем переменные, которые хранят координаты последней плитки, над которой был персонаж. В строке 4 мы создаем ссылку на объект, который представляет эту плитку. Затем выполняется вызываемая функция fall(), а в нее передается ссылка на объект плитки. Эта функция обрабатывает процедуру реализации падения плитки. Мы будем говорить о ней позднее. Затем мы вызываем функцию checkTile() для каждой из четырех соседей только что упавшей плитки. Функция checkTile() проверяет, наступил ли момент для падения плитки.
fall()
Эта функция вызывается, когда определено, что плитка должна упасть.
В нее передается ссылка на объект, который представляет плитку. Мы проверяем, находится ли на этой плитке какой-нибудь из монстров. Если один или оба персонажа находятся на плитке, то мы приказываем персонажу упасть и игра на этом заканчивается.
Ниже приведен код этой функции:
1 function fall(ob){
2 if (ob.x ==me.x_cell &&ob.z ==me.z_cell){
3 var clip =me.clip;
4 clip.ymov =0;
5 clip.gravity =1;
6 clip.char =true;
7 clip.onEnterFrame =fallFunction;
8 playSound("scream");
9 iFell =true;
10 end =true;
11 }
12 if (ob.x ==you.x_cell &&ob.z ==you.z_cell){
13 var clip =you.clip;
14 clip.ymov =0;
15 clip.gravity =1;
16 clip.char =true;
17 clip.onEnterFrame =fallFunction;
18 playSound("scream");
19 youFell =true;
20 end =true;
21 }
22 playSound("drop");
23 ob.exists =false;
24 ob.clip.ymov =0;
25 ob.clip.gravity =1;
26 ob.clip.onEnterFrame =fallFunction;
27 }
В строках 2-11 мы проверяем, находится ли персонаж, чьим экземпляром игры запускается этот код, на данной плитке