Предисловие | 9 |
О чём эта книга | 10 |
Для кого эта книга | 11 |
Об авторе | 12 |
От издательства | 12 |
|
Глава 1. Введение в программирование мобильных устройств | 13 |
|
Структура исполняемых файлов | 13 |
Основные понятия | 14 |
Пакеты, входящие в состав J2ME | 17 |
Пользовательский интерфейс | 17 |
Постоянное хранение данных | 17 |
Жизненный цикл приложения | 17 |
Ввод-вывод | 18 |
Звук и видео | 18 |
Шифрование | 18 |
Ядро | 18 |
Виды памяти | 18 |
Копирование в телефон с компьютера | 19 |
Необходимое программное обеспечение | 21 |
Среды разработки | 21 |
Эмуляторы | 23 |
Декомпиляторы | 29 |
Программы шифрования исходного кода | 30 |
Системы компиляции (Build systems) | 33 |
|
Глава 2. Требования, предъявляемые к программному обеспечению | 35 |
|
Требования для программиста | 35 |
Локализуемость | 35 |
Аппаратная независимость | 38 |
Оформление кода | 39 |
Оптимальность | 42 |
Интерфейс | 46 |
Ресурсоёмкость | 46 |
Требования пользователя | 47 |
|
Глава 3. Первая программа | 49 |
|
Создание новой программы в Sun Java Wireless Toolkit | 49 |
Hello, World! | 51 |
Меню (List) | 53 |
Информационный диалог (Alert) | 57 |
Диалог выбора значения (Form, ChoiceGroup) | 59 |
Диалог вопроса (модальный) | 61 |
Диалог настроек (с загрузкой и сохранением) | 64 |
Вывод изображений на экран | 69 |
Рисование текстовых строк | 73 |
Построение игровых циклов | 77 |
Таблица рекордов | 78 |
Городской телефонный справочник | 81 |
|
Глава 4. Описание разрабатываемой пошаговой стратегии | 93 |
|
Типы игр | 93 |
Основные понятия | 94 |
Экран приключений | 95 |
Экран битвы | 95 |
Экран уменьшенной карты | 96 |
|
Глава 5. Основные составляющие программного обеспечения | 97 |
|
Система стандартных диалогов | 97 |
Рабочая память | 98 |
Общая информация | 98 |
Карта игрового мира | 100 |
Игрок | 100 |
Герой | 101 |
Город | 102 |
Подразделение | 102 |
Графическая подсистема | 103 |
Искусственный интеллект | 104 |
|
Глава 6. Вспомогательные элементы графической подсистемы | 106 |
|
Курсор | 106 |
Стрелки, указывающие путь героя | 108 |
Данные о количестве и типе объектов подразделений | 109 |
Графическое меню | 109 |
|
Глава 7. Карта игрового мира | 114 |
|
Структура данных карты игрового мира | 114 |
Формы игровых полей | 118 |
Нумерация клеток | 120 |
Учёт исследованной территории | 121 |
Реализация плавной смены ландшафта | 124 |
Определение типов объектов | 126 |
Проблема поиска пути | 127 |
Маршрутный алгоритм | 127 |
Алгоритм Дейкстры | 131 |
Волновой алгоритм | 132 |
Вывод больших объектов | 150 |
Обзор классов из J2ME для реализации игровой карты | 151 |
Игровая канва (GameCanvas) | 151 |
Слой (Layer) | 151 |
Слой тайлов (TiledLayer) | 152 |
Менеджер слоёв (LayerManager) | 153 |
Спрайт (Sprite) | 153 |
Рисование клетки игрового поля | 153 |
Отображение невидимых клеток | 155 |
Расчёт потребности в памяти для карты | 156 |
Анимация | 156 |
Искусственный интеллект | 160 |
Исходный код карты игрового мира | 163 |
|
Глава 8. Уменьшенная копия мира | 171 |
|
Варианты мини-карт | 171 |
Расчёт количества операций | 172 |
Оптимизация | 173 |
|
Глава 9. Ввод-вывод | 177 |
|
Источники данных для загрузки и сохранения игр | 177 |
Класс | 178 |
Ресурс | 179 |
Система хранения записей RMS | 179 |
Файл | 180 |
Внешние источники | 183 |
Классы для работы с вводом-выводом | 184 |
Входной поток InputStream | 184 |
Входной поток массива ByteArray Input Stream | 185 |
Входной поток данных DatalnputStream | 185 |
InputStreamReader | 186 |
OutputStreamWriter | 187 |
Выходной поток OutputStream | 187 |
Выходной поток массива ByteArrayOutputStream | 187 |
Выходной поток данных DataOutputStream | 187 |
Загрузка игры | 188 |
Исходный код загрузчика | 189 |
Сохранение игры | 195 |
|
Глава 10. Игровой цикл | 201 |
|
Потоки Thread | 201 |
Таймер (Timer) | 202 |
Исходный код игрового цикла | 2О2 |
|
Глава 11. Режим битвы | 207 |
|
Рисование гексагонального игрового поля | 207 |
Определение номера клетки по координатам | 208 |
Переход в режим битвы | 209 |
Вспомогательные функции режима битвы | 213 |
Модель режима битвы | 217 |
Рисование битвы | 222 |
Подсистема магии | 231 |
Искусственный интеллект | 243 |
Задача динамического программирования | 243 |
Простейшее решение | 24б |
|
Глава 12. Работа со звуком | 254 |
|
Обзор основных классов MIDP 2.0 для работы со звуком | 254 |
Менеджер (Manager) | 254 |
Плеер (Player) | 255 |
Регулятор громкости (VolumeControl) | 256 |
Фоновая мелодия | 256 |
Регулировка громкости | 261 |
Озвучивание событий | 262 |
Проверка поддерживаемых форматов | 263 |
|
Глава 13. Режим города | 265 |
|
Система строений | 265 |
Закрытие игрового дня | 272 |
Искусственный интеллект | 274 |
|
Глава 14. Мультиплеер | 278 |
|
Что это такое | 278 |
Способы связи | 278 |
Пример работы с SMS | 279 |
|
Глава 15. Распространение ПО для сотовых | 283 |
|
Издатели мобильного контента | 283 |
Сертификат Java Verified Program | 284 |
|
Глава 16. Особые приёмы программирования на J2ME | 285 |
|
Расширенная совместимость и специфические возможности | 285 |
Преобразования графики | 292 |
Эффект тени | 294 |
Защита графической информации | 295 |
Защита программы от нелегального распространения | 295 |
Рисование части изображения в MIDP 1.0 | 296 |
Эффект прозрачности в MIDP 1.0 | 297 |
Числа с плавающей запятой | 297 |
|
Литература | 299 |
Интернет-ресурсы | 299 |
Алфавитный указатель | 300 |