MobiLab.ru - программирование для сотовых телефонов и КПК: Symbian C++ и OPL; J2ME, Mobile Basic, MIDlet Pascal, Windows CE, Linux. Есть форум и раздел о безопасности.
В избранное Сделать домашней Контакт
Меню
Главная
Новости
Документация
  - J2ME
  - Android
  - Symbian C++
  - Symbian OPL
  - Basic
  - Windows CE 
  - Linux
  - OpenGL ES
Безопасность
Книги
Софт
Проекты
Форум
Ссылки
Контакт

Книги


Заказать

Java 2. Библиотека профессионала. Том 1. ОсновыКей Хорстманн, Гари Корнелл
Цена:

Подпишись на рассылку



Реклама
многоканальный телефон без помех


04 мая 2009 - Создаем игру с помощью визуальных средств NetBeans. Урок 3 – Задаем логику управления персонажем



Вообще логика игры довольно проста: Duke ходит по лабиринту в поисках Джеймса, который где-то потерялся. Когда Duke находит Джеймса игра заканчивается. На прошлом уроки мы подготовили все необходимые спрайты и нарисовали лабиринт.

Duke может двигаться влево и вправо. Он может прыгать. Когда у него под ногами не оказывается пола - он падает, весело размахивая ручками. В основе кода управления нашим персонажем лежит статья "Creating Mobile Games: Using Java ME Platform to Put the Fun into Your Mobile Device and Cell Phone", которую Вы без труда можете найти в интернете.

Шаг 1: Инициализируем MazeManager

В пакете org.netbeans.j1.game.logic содержатся классы, которые упрощают создание игры. Класс GameTread.java запускается в отдельном потоке. Это делается для того, чтобы избежать блокирования интерфейса пользователя. Класс MazeManager.java отслеживает столкновения спрайтов между собой, а также с элементами TiledLayer.

  1. Прежде всего, мы должны инициализировать игровую часть. Скопируйте и вставьте выделенный жирным код в метод init класса MazeManager.

  2.     public void init() throws Exception {
            //TODO: [Exercise 3][step 1] - Код инициализации. Пожалуйста не забудьте добавить необходимые библиотеки в import
            mazeDesign = new MazeGameDesign(); //[Exercise3]
            jamesSprite = mazeDesign.getJamesS();//[Exercise3]
            dukeSprite = mazeDesign.getDukeS();//[Exercise3]
            dukeSprite.defineReferencePixel(dukeSprite.getWidth() / 2, 0);//[Exercise3]
            dukeSpriteAnimator = new SpriteAnimationTask(dukeSprite, false);//[Exercise3]
            myWalls = mazeDesign.getMaze1();//[Exercise3]
            mazeDesign.updateLayerManagerForLevel1(this);//[Exercise3]

            timer = new Timer();//[Exercise3]
            timer.scheduleAtFixedRate(dukeSpriteAnimator, 0, mazeDesign.dukeSseq001Delay);//[Exercise3]
            // код устанавливает видимую область экрана с находящимся посередине персонажем
            myViewWindowX = dukeSprite.getX() - ((DISP_HEIGHT - SQUARE_WIDTH) / 2);
            myViewWindowY = dukeSprite.getY() - ((DISP_HEIGHT - SQUARE_WIDTH) / 2);

            System.gc();
                            }

  3. Исправьте ошибки в области import. Для этого перейдите на строку с ошибкой и просто нажмите Alt+Enter.
  4. Создайте новое поле mazeDesign в классе. Для этого можете использовать автоподстановку.
  5. Игра готова к запуску. Щелкните правой кнопке на проекте MobileGameApp в правой области IDE и выберите Run.
  6. В появившемся окне эмулятора запустите приложение.

Шаг 2: Учим Дюка ходить

Нам необходимо установить правильную последовательность кадров в спрайте для случаев, когда Duke ходит, прыгает и падает.

  1. Это делается в классе MazeManager в методе updateSprite. Просто раскомментируйте строки, начиная с //TODO: [Exercise 3][step 2]. Этот код изменяет последовательность кадров для спрайта duke.
  2. Исходный код метода updateSprite() должен выглядеть следующим образом. Жирным выделены раскомментированные строки.
  3. private void updateSprite(int hdirection, int vdirection) {
            // если duke двигается влево или вправо, мы устанавливаем
            // кадр, на котором duke смотрит в правильную сторону.
            if (hdirection > 0) {
                dukeSprite.setTransform(Sprite.TRANS_NONE);
            } else if (hdirection < 0) {
                dukeSprite.setTransform(Sprite.TRANS_MIRROR);
            }
            //в случае, если duke двигается, меняем кадр спрайта на следующий
            if (lastHorDirection != hdirection) {
            dukeSprite.setFrameSequence(mazeDesign.dukeSseq001); //TODO: [Exercise 3][step 2] Let the duke move set to vertical sequence
            }

            if (lastVertDirection != vdirection) {
                if (vdirection > 0) { //он прыгает
                dukeSprite.setFrameSequence(mazeDesign.dukeSfalling);//TODO: [Exercise 3][step 2] set to falling sequence
                } else if (vdirection < 0) {
                dukeSprite.setFrameSequence(mazeDesign.dukeSjumping);//TODO: [Exercise 3][step 2] set to jumping sequence
                }
            }

            if ((vdirection != 0) || (hdirection != 0)) {
                dukeSpriteAnimator.forward();
            } else {
                dukeSpriteAnimator.setMoving(false);
                dukeSprite.setFrameSequence(mazeDesign.dukeSseq001); //TODO: [Exercise 3][step 2] set to vertical sequence
            }

            lastHorDirection = hdirection;
            lastVertDirection = vdirection;

        }

Заключение

Таким образом, мы добавили в игру необходимую логику. Теперь даже можно запустить игру и побегать пол лабиринту. Как видите все это великолепие работает благодаря Game API. На следующем уроке мы будем работать с таблицей результатов.


Новости
Компания velcom объявила конкурс для Android разработчиков

Sony Ericsson SDK 2.5.0.6 for the Java™ ME Platform

Конкурс для разработчиков Windows Mobile Developers 2009

Вышел Android 1.6 SDK

Motodev Studio for Android


Новые статьи
Как сделать телефонный звонок в Android

Рисование линий произвольной толщины в Java2ME

Отрисовка SVG в J2ME без использования JSR 226 API.

Создание моноширинного векторного шрифта для Java2ME.

Использование векторной графики и анимации в Java ME (JSR 226 API)

Обзор существующих Java ME SDK

Создаем игру с помощью визуальных средств NetBeans. Урок 4 – Соединение с удаленным сервером

Создание Google Android виджетов

Создаем игру с помощью визуальных средств NetBeans. Урок 3 – Задаем логику управления персонажем

Создаем игру с помощью визуальных средств NetBeans. Урок 2 – NetBeans Game Builder


[X]    Реклама




Rambler's Top100


© 2005-2009 MobiLab.ru
При использовании материалов сайта ссылка на www.mobilab.ru обязательна