Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #56, ИЮЛЬ 2005 г.

Развлекуха для кодера

Denis Mingulov

Спецвыпуск: Хакер, номер #056, стр. 056-064-4


// Также рассчитываем положение строки по вертикали

int y = ((Mobile.height - ((_bigFontHeight + _smallFontHeight) %26lt;%26lt; 1)) %26gt;%26gt; 1) + _bigFontHeight;

// и выводим строки на экран (название программы)

g.drawString(_asteroid, x, y, Graphics.BOTTOM|Graphics.LEFT);

x = (Mobile.width - Field.bigFont.stringWidth(_field)) %26gt;%26gt; 1;

g.drawString(_field, x, y + _bigFontHeight, Graphics.BOTTOM|Graphics.LEFT);

// меняем цвет и выводим те же самые строчки со сдвигом на один пиксел влево-вниз (фактически оттеняем выведенный текст).

g.setColor(0x008080FF);

x = ((Mobile.width - Field.bigFont.stringWidth(_asteroid)) %26gt;%26gt; 1) - 1;

y += 1;

g.drawString(_asteroid, x, y, Graphics.BOTTOM|Graphics.LEFT);

x = ((Mobile.width - Field.bigFont.stringWidth(_field)) %26gt;%26gt; 1) - 1;

y += _bigFontHeight;

g.drawString(_field, x, y, Graphics.BOTTOM|Graphics.LEFT);

// дальше выводим версию и информацию об авторе программы без "спецэффектов"

y += _smallFontHeight;

g.setColor(0x00000000);

g.setFont(Field.smallFont);

x = (Mobile.width - Field.smallFont.stringWidth(_byjfd)) %26gt;%26gt; 1;

g.drawString(_byjfd, x, y, Graphics.BOTTOM|Graphics.LEFT);

y += _smallFontHeight;

x = (Mobile.width - Field.smallFont.stringWidth(_version)) %26gt;%26gt; 1;

g.drawString(_version, x, y, Graphics.BOTTOM|Graphics.LEFT);

}

Дополнительные возможности

Желаешь поддержки виброзвонка и прочих наворотов?

Заведем отдельный класс для всех специальных эффектов и создадим его в зависимости от типа телефона.

Например: class GameEffects с методами boolean hasSoundCapability() и boolean hasVibrationCapability() для проверки с return false по умолчанию.

А вот пример для Nokia - для вибры com.nokia.mid.ui.DeviceControl.stopVibra() и DeviceControl.startVibra(100, 300) (100% вибрации на 300 миллисекунд). Для звука же com.nokia.mid.sound.Sound:

class NokiaGameEffects extends GameEffects

com.nokia.mid.sound.Sound sound;

// bytes - набор для проигрыша

sound = new Sound(bytes, Sound.FORMAT_TONE);

sound.setGain(128); // громкость

sound.play(1); // 1 цикл

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

try

{

Class.forName("com.nokia.mid.sound.Sound");

Class.forName("com.nokia.mid.ui.DeviceControl");

// Если нет исключений, можно использовать эти API.

Class clas = Class.forName("NokiaGameEffects");

return (GameEffects) clas.newInstance();

}

catch (Exception e)

{

// Использовать заглушку.

return new GameEffects();

}

Основные модели мобильных телефонов с J2ME

Если ты хочешь провести тестирование на эмуляторах или на реальных устройствах, то ниже приведен ряд моделей с различной функциональностью:

Nokia 3100 - MIDP1.0/CLDC1.0 (типичный представитель)

Nokia 6021 - MIDP2.0/CLDC1.1 (тоже типичный)

Nokia 6230i - MIDP2.0/CLDC1.1 (много дополнительных API)

Nokia 6630/6680 или Nokia 7710 - MIDP2.0/CLDC1.1/CDC (high-end)

Siemens M55 - MIDP1.0/CLDC1.0 (для мидлетов память не ограничивает)

Siemens M65 - MIDP2.0/CLDC1.1 (есть новые API, Java 3D)

Sony Ericsson T610 - MIDP1.0/CLDC1.0 (довольно старый, как и Siemens M55)

Назад на стр. 056-064-3  Содержание  Вперед на стр. 056-064-5