×
Traktatov.net » Создание игр для мобильных телефонов » Читать онлайн
Страница 221 из 246 Настройки

// добавить Блоббо

case 0:

for (int i = 0; i < 3; i++) //Найти спрайт пришельца Блоббо, который еще не виден, изменить его положение и сделать видимым

if (!blobboSprite[i].isVisible()) {

placeSprite(blobboSprite[i]);

blobboSprite[i].setVisible(true);

break;

}

break;

// добавить Джелли

case 1:

for (int i = 0; i < 3; i++) //Если три спрайта пришельца Джелли уже видны, новый спрайт не будет добавлен

if (!jellySprite[i].isVisible()) {

placeSprite(jellySprite[i]);

jellySprite[i].setVisible(true);

break;

}

break;

// Добавить Тимми

case 2:

for (int i = 0; i < 3; i++)

if (!timmySprite[i].isVisible()) {

placeSprite(timmySprite[i]);

timmySprite[i].setVisible(true);

break;

}

break;

}

}

...

Совет Разработчику

Метод placeSprite() вызывается addAlien(), его задача – вычислить случайное положение на игровом экране и поместить в него спрайт. Это вычисление помогает убедиться, что спрайт не будет помещен слишком низко, близко к спрайту автомобиля. Спрайт также размещается подальше от границ экрана, чтобы он сразу не столкнулся с одной из них. Код метода placeSprite() вы можете найти на прилагаемом компакт-диске в коде игры Space Out.

Этот метод случайным образом выбирает тип пришельца, а затем добавляет его спрайт в игру, для чего выполняются следующие шаги:

1. найти подходящий спрайт пришельца, который еще невидим;

2. спрайт помещается в случайное место;

3. показать спрайт.

Подобно тому, как добавляются спрайты пришельцев, метод addMissle() добавляет спрайты ракет. Однако этот метод отличается от addAlien() тем, что в него передается единственный параметр – спрайт, запускающий ракету, чтобы определить тип ракеты. В коде 18.6 приведен код метода addMIssle().

Листинг 18.6. Метод addMissle() класса SOCanvas добавляет ракету так, что создается впечатление, что она запущена спрайтом

private void addMissile(MovingSprite sprite) {

for (int i = 0; i < 10; i++)

if (!missileSprite[i].isVisible()) {

switch (Math.abs(sprite.getXSpeed())) { //Поскольку спрайты игрока и пришельцев имеют различные скорости по оси Х, вы можете использовать значение этой скорости для определения типа запускаемой ракеты

// запустить ракету Блоббо

case 3:

missileSprite[i].setFrame(1);

missileSprite[i].setPosition(sprite.getX() + 5, sprite.getY() + 21);

missileSprite[i].setXSpeed(sprite.getXSpeed() / 2);

missileSprite[i].setYSpeed(5);

break;

// запустить ракету Джелли

case 1:

missileSprite[i].setFrame(2);

missileSprite[i].setPosition(sprite.getX() + 5, sprite.getY() + 21);

missileSprite[i].setXSpeed(0);

missileSprite[i].setYSpeed(4);

break;

// запустить ракету Тимми

case 5:

missileSprite[i].setFrame(3); //Каждый фрейм анимации – это определенный тип ракеты

missileSprite[i].setPosition(sprite.getX() + 5, sprite.getY() + 11);

missileSprite[i].setXSpeed(sprite.getXSpeed() / 2);

missileSprite[i].setYSpeed(3);

break;

// запустить ракету игрока

case 2:

case 4:

missileSprite[i].setFrame(0);

missileSprite[i].setPosition(sprite.getX() + 6, sprite.getY() – 11);

missileSprite[i].setXSpeed(0);

missileSprite[i].setYSpeed(-4);

break;

}

// показать ракету

missileSprite[i].setVisible(true);