Управление: WASD - перемещение, Пробел - огонь
Asteroids, эту игру я «партировал» с Sega Mega Drive...
Для того чтобы лицизреть оригинальную игру необходим эмулятор и рум RedZone, либо сама Sega Mega Drive и сам картридж RedZone ^ ^
Игра входит в состав Red Zone в качестве мини игры, для её активации необходимо ввести ABCACACBCAC в меню Password.
Так выглядит игра в эмуляторе:
[319x224]
[191x247]Далее я приступил к вёрстке программного кода.
Кому интересно, вот некоторые процедуры:
onEnterFrame() {
ShipMove();
controlls();
RocksMove();
BulletMove();
CheckHits();
}
function ShipThrust() {
//функция "скольжения" коробля
if (Math.abs(dx)<maxspeed&&Math.abs(dy)<maxspeed) {
dx += Math.cos(2.0*Math.PI*(ship._rotation-90)/360)/SpeedCorrect;
dy += Math.sin(2.0*Math.PI*(ship._rotation-90)/360)/SpeedCorrect;
}
}
function checkHits() {
//все остероиды
for (i=rocks.length-1; i>=0; i--) {
//все пули
for (j=bullets.length-1; j>=0; j--) {
if (rocks[i].hitTest(bullets[j]._x,bullets[j]._y,true)) {
// Удаляем пулю
bullets[j].removeMovieClip();
bullets.splice(j,1);
//
size= rocks[i].size-1;
x = rocks[i]._x;
y = rocks[i]._y;
//
rocks[i].removeMovieClip();
rocks.splice(i,1);
// Создем остероиды
if (size>0) {
NewRock(Size,x,y);
NewRock(Size,x,y);
}
}
// Столкнулся ли корабль с остероидом
if (Math.distance(ship._x,ship._y,rocks[i]._x,rocks[i]._y)<(ship._width/2.7+rocks[i]._width/2.7)) {
ClearAll();
StartLevel();
break;
}
}
if (rocks.Length == 0) {
ClearAll();
GameLevel++;
StartLevel();
}
}
В одной из версий было два «космических корабля» для двух игроков (как в оригинале), но флеш движок не выдерживал просчётов. Мои попытки оптимизировать код не к чему не привели, от лишней траты процессорного времени пришлось отказаться )
При старте игры пускается на закачку один из тёх файлов MP3 с оригинальной музыкой из игры (для звукового процессора Seg`и это был высший пилотаж)