try {
background = Image.createImage("/Highway.png");
chickenHead = Image.createImage("/ChickenHead.png");
chickenSprite = new Sprite(Image.createImage("/Chicken.png"), 22, 22);
chickenSprite.setPosition(2, 77); //Спрайт цыпленка помещается на траве в зоне старта, в левой части экрана
carSprite[0] = new Sprite(Image.createImage("/Car1.png"));
carSprite[0].setPosition(27, 0); //Этот автомобиль, также как и другие, помещается на дороге
carYSpeed[0] = 3;
carSprite[1] = new Sprite(Image.createImage("/Car2.png"));
carSprite[1].setPosition(62, 0);
carYSpeed[1] = 1;
carSprite[2] = new Sprite(Image.createImage("/Car3.png"));
carSprite[2].setPosition(93, 67);
carYSpeed[2] = -2;
carSprite[3] = new Sprite(Image.createImage("/Car4.png"));
carSprite[3].setPosition(128, 64);
carYSpeed[3] = -5;
}
catch (IOException e) {
System.err.println("Failed loading images!");
}Этот код сначала создает фон и изображения голов цыпленка, после чего переходит к созданию спрайтов. Обратите внимание, каждый спрайт привязан к определенной области экрана. Хотя вы можете использовать выражения, вычисляющие положение спрайтов на основании данных о высоте и ширине экрана, можно непосредственно указать нужные координаты, что я и сделал. После того как начальные координаты установлены, инициализируется скорость спрайтов так, чтобы автомобили двигались в разных направлениях.
Совет Разработчику
Этот код приводит к вопросу о том, как будет вести себя приложение в зависимости от модели мобильного телефона. В нашем случае игра Henway создана для эмулятора J2ME, размер экрана которого 180 177, поэтому все координаты графики относятся именно к этому экрану. Если вы хотите, чтобы вашу игру можно было запускать на различных моделях телефонов, то вы должны вычислять положения спрайтов и изображений.
Хотя метод start очень важен, все же большую роль играет метод update, который обеспечивает работу всех игр, рассматриваемых в книге. В игре Henway метод update выполняет ряд очень важных задач, например, обработку пользовательского ввода, перемещение спрайта цыпленка и проверку, попал ли цыпленок под колеса автомобиля или в сохранности преодолел шоссе. Перед выполнением любой задачи, осуществляется проверка, запущена ли игра:
if (gameOver) {
int keyState = getKeyStates;
if ((keyState & FIRE_PRESSED) != 0) {
// запустить новую игру
chickenSprite.setPosition(2, 77); //Чтобы начать игру заново, необходимо установить спрайт цыпленка в исходное положение и установить значения ряда переменных
gameOver = false;
score = 0;
numLives = 3;
}
// игра закончена, поэтому не нужно выполнять обновление
return;
}Этот код проверяет, закончена ли игра – в единственном месте, где имеет смысл перезапустить игру. Клавиша стрельбы используется для перезапуска игры. В разных телефонах эта клавиша называется по-разному, но в эмуляторе J2ME это клавиша Select, связанная с клавишей Enter персонального компьютера. Код перезапуска игры в методе update восстанавливает исходное положение спрайта цыпленка, обнуляет переменную gameOver, счет, а также восстанавливает исходное количество жизней. Это все, что требуется для перезапуска игры. Метод update также обрабатывает пользовательский ввод и перемещает цыпленка по экрану. Ниже приведен код, перемещающий спрайт цыпленка в соответствии с нажатыми клавишами: