Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Adobe Flash. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π°Ρ€ΠΊΠ°Π΄, Π³ΠΎΠ»ΠΎΠ²ΠΎΠ»ΠΎΠΌΠΎΠΊ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΈΠ³Ρ€ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ActionScriptΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 74

Автор Гэри Π ΠΎΠ·Π΅Π½Ρ†Π²Π΅ΠΉΠ³

destx = Math.random()*1100-275;

desty = Math.random()*800-200;

// ДобавляСм астСроид.

level++;

attachMovie("rock","rock"+level,level++);

rocks.push({startx: startx, starty: starty, destx: destx, desty: desty, dist: .01, clip: "rock"+level});

}

Подобно Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ moveBullets функция moveRocks ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ свойство dist ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ астСроида, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠ½ΡƒΡ‚ΡŒ Π΅Π³ΠΎ. Однако со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΠΎΠ½ приблиТаСтся ΠΊ экрану ΠΈ Π΅Π³ΠΎ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0,01 Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠ°Π΄Ρ€Π΅ увСличиваСтся Π½Π° 10 %. Помимо полоТСния астСроида Π΅Π³ΠΎ свойства _xscale ΠΈ _yscale Ρ‚Π°ΠΊΠΆΠ΅ зависят ΠΎΡ‚ dist, это Π΄Π΅Π»Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ астСроид ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ иллюзию Π΅Π³ΠΎ приблиТСния ΠΊ ΠΊΠΎΡ€Π°Π±Π»ΡŽ. Если Π·Π°Π½Ρ‡Π΅Π½ΠΈΠ΅ dist становится большС 1,0 ΠΈ астСроид всС СшС находится Π² Π²ΠΈΠ΄ΠΈΠΌΠΎΠΉ области экрана, считаСтся, Ρ‡Ρ‚ΠΎ астСроид ΠΏΠΎΠΏΠ°Π» Π² ΠΊΠΎΡ€Π°Π±Π»ΡŒ. АстСроид взрываСтся, ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ damage увСличиваСтся. Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ damage большС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ 20, Ρ‚ΠΎ ΠΈΠ³Ρ€Π° заканчиваСтся.

function moveRocks() {

// ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅ΠΌ всС астСроиды.

for(i=rocks.length-1;i>=0;iβ€”) {

// УмСньшаСм расстояниС Π΄ΠΎ корабля Π½Π° 10 %.

rocks[i].dist *= 1.1;

// ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ, ΠΌΠΎΠΆΠ΅Ρ‚ Π»ΠΈ астСроид Π·Π°Π΄Π΅Ρ‚ΡŒ ΠΊΠΎΡ€Π°Π±Π»ΡŒ.

if (rocks[i].dist > 1.0) {

// ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ, ΡƒΠ΄Π°Ρ€ΠΈΠ» Π»ΠΈ астСроид ΠΊΠΎΡ€Π°Π±Π»ΡŒ.

if (rocks[i].destx > 0 and rocks[i].destx < 550 and rocks[i].desty > 0 and rocks[i].desty < 400) {

// Π’Π·Ρ€Ρ‹Π²Π°Π΅ΠΌ астСроид ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ количСство ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ.

_root[rocks[i].clip].gotoAndPlay("explode blue");

damage++;

foreground.displayDamage = damage;

// Π‘ΠΌΠΎΡ‚Ρ€ΠΈΠΌ, прСвысило Π»ΠΈ количСство ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΠΌΡ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ.

if (damage >= 20) {

removeAllRocks();

Mouse.show();

gotoAndStop("game over");

}

// Если астСроид Π½Π΅ ΠΏΠΎΠΏΠ°Π» ΠΏΠΎ ΠΊΠΎΡ€Π°Π±Π»ΡŽ, Ρ‚ΠΎ ΡƒΠ±ΠΈΡ€Π°Π΅ΠΌ Π΅Π³ΠΎ.

} else {

_root[rocks[i].clip].removeMovieClip();

}

// Π£Π±ΠΈΡ€Π°Π΅ΠΌ элСмСнт ΠΈΠ· массива.

rocks.splice(i,1);

// ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅ΠΌ астСроид.

} else {

rocks[i].x = (1.0-rocks[i].dist)*rocks[i].startx + rocks[i].dist*rocks[i].destx;

rocks[i].y = (1.0-rocks[i].dist)*rocks[i].starty + rocks[i].dist*rocks[i].desty;

_root[rocks[i].clip]._x = rocks[i].x;

_root[rocks[i].clip]._y = rocks[i].y;

// Π£Π²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ астСроид.

_root[rocks[i].clip]._xscale = 100*rocks[i].dist;

_root[rocks[i].clip]._yscale = 100*rocks[i].dist;

}

}

}

Когда пуля достигаСт своСй Ρ†Π΅Π»ΠΈ, вызываСтся функция checkForHit. Она провСряСт всС астСроиды: находится Π»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ… Ρ‚Π°ΠΌ ΠΆΠ΅, Π³Π΄Π΅ ΠΈ пуля. Если Π΄Π°, астСроид взрываСтся ΠΈ удаляСтся ΠΈΠ· массива, увСличиваСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ hits.

function checkForHit(x,y) {

// ΠŸΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π΅ΠΌ всС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹-астСроиды

// Π½Π° ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ попадания ΠΏΠΎ Π½ΠΈΠΌ.

for(j=rocks.length-1; j>=0; j–) {

// ВыясняСм, ΠΏΠΎΠΏΠ°Π΄Π΅Ρ‚ Π»ΠΈ пуля Π² этот астСроид.

if (_root[rocks[j].clip].hitTest(x,y)) {

// Если Π΄Π°, Π²Π·Ρ€Ρ‹Π²Π°Π΅ΠΌ астСроид ΠΈ удаляСм ΠΈΠ· массива.

hits++;

foreground.displayHits = hits;

_root[rock[j].clip].gotoAndPlay("explode red");

rocks.splice(j,1);

}

}

}

Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ Π²Π·Ρ€Ρ‹Π²Π° (рис. 16.2) нСбольшой сцСнарий Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ killRock, которая удаляСт любой Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡˆΠΈΠΉ Π΅Π΅ ΠΊΠ»ΠΈΠΏ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ астСроид сразу ΠΆΠ΅, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ½ взорвался.

function killRock(clip) {

// Когда астСроид взорвался, Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ,

// Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΅Π³ΠΎ.

clip.removeMovieClip();

}

Когда ΠΈΠ³Ρ€Π° заканчиваСтся, вызываСтся функция removeAllRocks, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² ΠΊΠ°Π΄Ρ€Π΅ game over Π½Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π»ΠΈΡΡŒ ΠΎΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ ΠΏΡƒΠ»ΠΈ ΠΈ астСроиды.

function removeAllRocks() {

// УдаляСм всС астСроиды.

for (i=rocks.length-1; i>=0; iβ€”) {

_root[rocks[i].clip.removeMovieClip();

}

}

К свСдСнию

Π’ ΠΊΠ»ΠΈΠΏΠ΅ Β«foregroundΒ» находятся тСкстовыС поля, связанныС с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ hits ΠΈ damage. К соТалСнию, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ располоТСны Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ»ΠΈΠΏΠ°, ΠΎΠ½ΠΈ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° измСнСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ hits ΠΈ damage, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°ΡˆΠΈΡ… основной Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ шкалС. Π’ΠΎ Π΅ΡΡ‚ΡŒ для этих тСкстовых ΠΏΠΎΠ»Π΅ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Ρ‚ΠΈΠΏΠ° _root.displayDamage = damage. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π½Π΅Π΄ΠΎΡ€Π°Π·ΡƒΠΌΠ΅Π½ΠΈΠΉ, эти области Π±Ρ‹Π»ΠΈ Π½Π°Π·Π²Π°Π½Ρ‹ displayDamage ΠΈ displayHits.

Π”Ρ€ΡƒΠ³ΠΈΠ΅ возмоТности

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ свои собствСнныС Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΈ этого Ρ€ΠΎΠ»ΠΈΠΊΠ°. Допустим, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ идСю: ΠΏΡƒΠ»ΠΈ всСгда Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠΏΠ°Π΄Π°Ρ‚ΡŒ Π² ΠΎΠ΄Π½Ρƒ Ρ‚ΠΎΡ‡ΠΊΡƒ экрана. Π˜Π³Ρ€ΠΎΠΊ смоТСт ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠΎΡ€Π°Π±Π»Π΅ΠΌ с помошью клавиш со стрСлками. НапримСр, Ссли ΠΈΠ³Ρ€ΠΎΠΊ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ со стрСлкой Β«Π²Π»Π΅Π²ΠΎΒ», Ρ‚ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ иллюзию ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡˆΠ΅Π½ΠΈΡ, всС астСроиды Π΄Π²ΠΈΠ³Π°ΡŽΡ‚ΡΡ Π²ΠΏΡ€Π°Π²ΠΎ.

Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρƒ, прСдусмотрСв ΡƒΡ€ΠΎΠ²Π½ΠΈ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ числа столкновСний с астСроидом. НапримСр, Ρƒ вас Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΈΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ подсчСта этого числа: ΠΊΠΎΠ³Π΄Π° Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ приблизится ΠΊ максимальной ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠ΅, Π½Π°Ρ‡Π½Π΅Ρ‚ ΠΌΠΈΠ³Π°Ρ‚ΡŒ красная Π»Π°ΠΌΠΏΠΎΡ‡ΠΊΠ°.

АстСроиды

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ»: Spacerocks.fla

Π’Π΅ΠΏΠ΅Ρ€ΡŒ создадим ΠΈΠ³Ρ€Ρƒ, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΡƒΡŽ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡˆΠ΅ΠΉ, Π½ΠΎ Π½Π° этот Ρ€Π°Π· ΠΊΠΎΡ€Π°Π±Π»Π΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ нСбольшой графичСский ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² Ρ†Π΅Π½Ρ‚Ρ€Π΅ экрана. АстСроиды двиТутся Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… направлСниях. Π­Ρ‚Π° ΠΈΠ³Ρ€Π° ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° ΠΌΠ½ΠΎΠ³ΠΈΠ΅ классичСскиС Π°Ρ€ΠΊΠ°Π΄Ρ‹ 70-Ρ… ΠΈ 80-Ρ… Π³ΠΎΠ΄ΠΎΠ², Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π·Π½Π°ΠΊΠΎΠΌΡ‹Π΅ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Ρƒ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»Π΅ΠΉ. На рис. 16.3 ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΊΠ°Π΄Ρ€ Ρ€ΠΎΠ»ΠΈΠΊΠ° Spacerocks.fla.

Рисунок 16.3. Π’ ΠΈΠ³Ρ€Π΅ «АстСроиды» Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹I – нСбольшой ΠΊΠΎΡ€Π°Π±Π»ΡŒ ΠΈ астСроиды Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ²

Π—Π°Π΄Π°Ρ‡Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

Π’ этой ΠΈΠ³Ρ€Π΅ прСдусмотрСны ΡƒΡ€ΠΎΠ²Π½ΠΈ ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ число ΠΆΠΈΠ·Π½Π΅ΠΉ. ΠšΠΎΡ€Π°Π±Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒΡΡ с астСроидом Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π°. Если ΠΈΠ³Ρ€ΠΎΠΊ Π²Π·Ρ€Ρ‹Π²Π°Π΅Ρ‚ всС астСроиды, Ρ‚ΠΎ ΠΎΠ½ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ, Π³Π΄Π΅ астСроидов большС ΠΈ Π³Π΄Π΅ ΠΎΠ½ΠΈ двиТутся быстрСС.

Π˜Π³Ρ€ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΊΠΎΡ€Π°Π±Π»ΡŒ Π²ΠΏΡ€Π°Π²ΠΎ ΠΈΠ»ΠΈ Π²Π»Π΅Π²ΠΎ, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ускоритСли ΠΈ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΡ€Π°Π±Π»ΡŒ Π²ΠΏΠ΅Ρ€Π΅Π΄, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Ρ€Π΅Π»ΡΡ‚ΡŒ ΠΏΠΎ астСроидам. ПослС использования ускоритСля ΠΊΠΎΡ€Π°Π±Π»ΡŒ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ ΠΏΠΎ ΠΈΠ½Π΅Ρ€Ρ†ΠΈΠΈ. Если ΠΈΠ³Ρ€ΠΎΠΊ ΠΏΠΎΠ²Π΅Ρ€Π½Π΅Ρ‚ ΠΊΠΎΡ€Π°Π±Π»ΡŒ ΠΈ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ ускоритСли, Π΅Π³ΠΎ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ измСнится ΠΈΠ·-Π·Π° сообшСнного Π΅ΠΌΡƒ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ°. НаТав ΠΊΠ»Π°Π²ΠΈΡˆΡƒ со стрСлкой Π²Π½ΠΈΠ·, ΠΈΠ³Ρ€ΠΎΠΊ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠΎΡ€Π°Π±Π»ΡŒ.

ΠŸΡƒΠ»ΠΈ – это нСбольшиС ΠΊΠ»ΠΈΠΏΡ‹, исходноС ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… совпадаСт с ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ корабля; ΠΏΡƒΠ»ΠΈ двиТутся Ρ‚ΡƒΠ΄Π°, ΠΊΡƒΠ΄Π° Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ нос корабля Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ выстрСла. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΏΡƒΠ»ΡŒ Π² ΠΈΠ³Ρ€Π΅ Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ, Π½ΠΎ ΠΈΠ³Ρ€ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΡΡ‚Ρ€Π΅Π»ΠΈΡ‚ΡŒ снова Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠΉΠ΄Π΅Ρ‚ врСмя, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π½Π° пСрСзарядку.

Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ астСроида составляСт 100 %, ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΈ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ двиТСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅. Когда ΠΏΠΎ Π½Π΅ΠΌΡƒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π· ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ пуля, ΠΎΠ½ распадаСтся Π½Π° Π΄Π²Π° астСроида, Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… – 50 %, Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΡ… двиТСния Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎ. Π­Ρ‚ΠΈ астСроиды, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°ΡΠΏΠ°ΡΡ‚ΡŒΡΡ Π½Π° Π΄Π²Π° Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΡ…, Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ 25 % ΠΎΡ‚ исходного астСроида. Если послС этого Π² астСроид ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ пуля, ΠΎΠ½ взрываСтся. Когда всС астСроиды Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π·Ρ€ΡƒΡˆΠ΅Π½Ρ‹, ΠΈΠ³Ρ€ΠΎΠΊ смоТСт ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ. Однако Ссли астСроид столкнСтся с ΠΊΠΎΡ€Π°Π±Π»Π΅ΠΌ, ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡΡ количСство ΠΆΠΈΠ·Π½Π΅ΠΉ.

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Ρ€ΠΎΠ»ΠΈΠΊΠ°

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для этого Ρ€ΠΎΠ»ΠΈΠΊΠ° нСслоТная. Π’ Π½Π΅ΠΉ содСрТатся астСроиды Ρ‚Ρ€Π΅Ρ… Ρ‚ΠΈΠΏΠΎΠ²: Β«rock1Β», Β«rock2Β» ΠΈ Β«rock3Β». Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ внСсти Π² ΠΈΠ³Ρ€Ρƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΡ€ΠΈ создании астСроида случайным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ выбираСтся ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ‚Ρ€Π΅Ρ… ΠΊΠ»ΠΈΠΏΠΎΠ².

Π’ ΠΊΠ»ΠΈΠΏΠ΅ "ship" ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΊΠ°Π΄Ρ€ – статичСский, Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΊΠ°Π΄Ρ€Π΅ начинаСтся анимация, которая ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ Π·Π°Π³ΠΎΡ€Π°ΡŽΡ‚ΡΡ ускоритСли. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΊΠ°Π΄Ρ€ этой Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ называСтся "thrust". ВмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ ΠΊΠΎΡ€Π°Π±Π»ΡŒ Π½Π° Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΏΠΎΠ»Π΅ с помошью ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ attachMovie, Π΅Π³ΠΎ ΠΏΠΎΠΌΠ΅ΡˆΠ°ΡŽΡ‚ Π² Ρ†Π΅Π½Ρ‚Ρ€ поля Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, поэтому ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ Π·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ ΠΎ создании ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ этого ΠΊΠ»ΠΈΠΏΠ° с помошью ΠΊΠΎΠ΄Π°.

Для формирования ΠΏΡƒΠ»ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ»ΠΈΠΏ "bullet". Код ΠΈΠ³Ρ€Ρ‹ содСрТится Π² ΠΊΠ»ΠΈΠΏΠ΅ "actions" ΠΈ сцСнарии ΠΊΠ½ΠΎΠΏΠΊΠΈ "button". ЕдинствСнная ΠΊΠ½ΠΎΠΏΠΊΠ° Π½Π° экранС, Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡˆΠ°Ρ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΊΠ½ΠΎΠΏΠΊΠΈ, β€“ это ΠΊΠ½ΠΎΠΏΠΊΠ° Play.

Π’ Ρ€ΠΎΠ»ΠΈΠΊΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΊΠ°Π΄Ρ€Ρ‹ "start", "play", "ship hit", "level over" ΠΈ "game over", Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… создаСтся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡˆΠΈΠΉ тСкст. Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠ°Π΄Ρ€Π΅, ΠΊΡ€ΠΎΠΌΠ΅ "play", находится копия ΠΊΠ½ΠΎΠΏΠΊΠΈ Play, Π½ΠΎ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ экзСмпляру этой ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»Π΅Π½ Ρ€Π°Π·Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ€ΠΎΠ»ΠΈΠΊ Spacerocks.fla, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Π³Π΄Π΅ располоТСны всС эти элСмСнты ΠΈ ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»Π΅Π½ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΈΠ· Π½ΠΈΡ….

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°

Как ΠΈ Π² ΠΈΠ³Ρ€Π΅ Β«ΠšΠΎΡΠΌΠΈΡ‡Π΅ΡΠΊΠΈΠΉ Π±ΠΎΠΉΒ», Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ поля находятся ΠΊΠ»ΠΈΠΏ Β«actionsΒ» ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ° Β«buttonΒ», ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡˆΠΈΠ΅ сцСнарии. Π’ ΠΊΠ»ΠΈΠΏΠ΅ Β«actionsΒ» содСрТится ΠΎΠ΄Π½Π° функция, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡˆΠ°Ρ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ, ΠΈ нСсколько Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΠ±Ρ€Π°ΡˆΠ΅Π½ΠΈΠΈ ΠΊ ΠΊΠ°Π΄Ρ€Ρƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡˆΠ°ΡŽΡ‚ элСмСнты Π½Π° экранС.

onClipEvent(load) {

// УстанавливаСм всС элСмСнты ΠΈΠ³Ρ€Ρ‹.

_root.startLevel();

}

onClipEvent(enterFrame) {

// ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅ΠΌ ΠΊΠΎΡ€Π°Π±Π»ΡŒ Π½Π° ΠΎΠ΄ΠΈΠ½ шаг.

_root.shipMove();

// ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅ΠΌ всС ΠΏΡƒΠ»ΠΈ Π½Π° ΠΎΠ΄ΠΈΠ½ шаг.

_root.bulletsMove();

// ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅ΠΌ астСроиды Π½Π° ΠΎΠ΄ΠΈΠ½ шаг.

_root.rocksMove();

// ВыясняСм, ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ Π»ΠΈ столкновСниС.

_root.checkHits();

}

К ΠΊΠ½ΠΎΠΏΠΊΠ΅ Β«buttonΒ» ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»Π΅Π½ ΠΊΠΎΠ΄, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°ΡˆΠΈΠΉ нСсколько ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² событий on, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΡŽΡ‚ Π½Π° Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… клавиш ΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠ°ΡŽΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡˆΠΈΠ΅ дСйствия.

on (keyPress Β«<Space>Β») {

// ВыстрСл.

shipFire();

}

on (keyPress "<Right>") {

// ΠŸΠΎΠ²ΠΎΡ€ΠΎΡ‚ Π½Π° 30Β° Π²ΠΏΡ€Π°Π²ΠΎ.

shipTirn(30);

}

on (keyPress "<Left>") {

// ΠŸΠΎΠ²ΠΎΡ€ΠΎΡ‚ Π½Π° 30Β° Π²Π»Π΅Π²ΠΎ.

shipTirn(30);

}

on (keyPress "<Up>") {

// ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅ΠΌ ΠΊΠΎΡ€Π°Π±Π»ΡŒ Π²ΠΏΠ΅Ρ€Π΅Π΄.

shipThrust();

}

on (keyPress "<Down>") {

// ΠšΠΎΡ€Π°Π±Π»ΡŒ останавливаСтся.

shipBreak();

}

Когда ΠΈΠ³Ρ€ΠΎΠΊ ΡˆΠ΅Π»ΠΊΠ°Π΅Ρ‚ ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ΅ Play, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρƒ, Π² ΠΊΠ°Π΄Ρ€Π΅ Β«startΒ» ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ нСсколько ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…: ΠΎΠ±Π½ΡƒΠ»ΠΈΡ‚ΡŒ количСство Π½Π°Π±Ρ€Π°Π½Π½Ρ‹Ρ… ΠΎΡ‡ΠΊΠΎΠ², Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΠ³Ρ€ΠΎΠΊ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Ρ€ΠΈ ΠΆΠΈΠ·Π½ΠΈ.

on (press) {

gameLevel = 1;

lives = 3;

score = 0;

gotoAndPlay("play");

}

ВсС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ находятся Π² сцСнарии ΠΊΠ°Π΄Ρ€Π° Β«playΒ» основной Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡˆΠΊΠ°Π»Ρ‹. ΠŸΠ΅Ρ€Π²Π°Ρ функция вызываСтся Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΈΠ³Ρ€Ρ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ сразу послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρƒ ΠΈΠ³Ρ€ΠΎΠΊΠ° ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΠ»ΠΎΡΡŒ количСство ΠΆΠΈΠ·Π½Π΅ΠΉ.

ЭкзСмпляру ΠΊΠ»ΠΈΠΏΠ° "ship" Π½Π° Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΏΠΎΠ»Π΅ присвоСно имя "ship". Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ стандартным свойствам ΠΊΠ»ΠΈΠΏΠ°, Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ _x ΠΈ _y, Π²Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ нСсколько Π½ΠΎΠ²Ρ‹Ρ…. НапримСр, свойства dx ΠΈ dy Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚Ρ€Π°ΠΆΠ°Ρ‚ΡŒ расстояниС, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ΡΡ ΠΊΠΎΡ€Π°Π±Π»ΡŒ ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ ΠΈ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ соотвСтствСнно.