ScAlAn A. Alex!!! - Создание игры PingPong для платформы Java ME в среде NetBeans v 4.0

Главная страница/Статьи/Создание игры PingPong для платформы Java ME в среде NetBeans v 4.0
>Pong-1
*Color cells
*Rus2Translit
*Ctrl+C
*О смерти...
*JavaME HelloWorld...
*Советы...

Напишите мне письмо

Создание игры PingPong для платформы Java ME в среде NetBeans v 4.0

Статья 1. Перемещение шарика в замкнутом прямоугольном пространстве

Последняя редакция 24 февраля 2005 года.

Введение.

Доброго времени!!!
Эта маленькая статья и набор скриншотов покажет Вам, как создавать простейшее приложение для мобильного телефона, которое обладает свойствами простейшей анимации. Предполагается, что у Вас установлен и настроен JDK и рабочая среда NetBeans v4.0.

Создание нового проекта

- Запустите среду разработки NetBeans;
- Выберите пункт меню File-->New project:
Скриншот команды...
- В появившемся окне создания нового проекта, выберите Mobile-->Mobile Applecation:
Скриншот окна... Клик мышкой для оригинального размера...
- Нажмите кнопку Next для перехода к правке имени проекта и места расположения:
Скриншот окна... Клик мышкой для оригинального размера...
- Нажмите кнопку Next для перехода к правке платформы выполенеия и дополнительных настроек:
Скриншот окна... Клик мышкой для оригинального размера...
- Нажмите кнопку Finish для завершения настройки и создания проекта.
После создания проекта, в разделе проекты будет создан Sc_pong.
Скриншот окна...
В скриншоте присутствуют созданные мной обьекты - в Вашем новом проекте их не будет. Вам прийдется их создать на базе тех исходных текстов, что приведены ниже.

Исходные тексты

Исходный текст файла Main.java>:
/*
 * Main.java
 *
 * Created on 16 Январь 2005 г., 20:45
 */

package Sc_pong;

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

/**
 *
 * @author  scalan
 * @version
 */
public class Main extends MIDlet {
    private Display display;    // The display for this MIDlet

    public Main() {
        display = Display.getDisplay(this);
    }

    public void startApp() {
        System.gc();
        N n = new N(this);
        display.setCurrent(n);
        Thread t = new Thread(n);
        t.start();
    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
    }
}

Исходный текст файла N.java>:
/*
 * N.java
 *
 * Created on 16 Январь 2005 г., 20:58
 */

package Sc_pong;
import javax.microedition.lcdui.*;

/**
 *
 * @author scalan
 */
public class N
    extends Canvas
    implements CommandListener, Runnable {

    private Main d;
    private Command okCommand; // The save game command
    private Command backCommand; // The back command
    private boolean exitF = false;
    private Pong    pong;

    /** Creates a new instance of N */
    public N(Main d) {
        super();
        this.d = d;
        pong = new Pong(getWidth(), getHeight());
        backCommand = new Command("Back", Command.BACK,   3);
        okCommand   = new Command("Ok",   Command.BACK,   3);
        addCommand(backCommand);
        setCommandListener(this);
    }

    /*
     * repaint
     */
    protected void paintClipRect(Graphics g){
        int clipX = g.getClipX();
        int clipY = g.getClipY();
        int clipH = g.getClipHeight();
        int clipW = g.getClipWidth();

        int color = g.getColor();
        g.setColor(0xFF << 16 | 0xFF << 8 | 0xFF); // White
        g.fillRect(clipX, clipY, clipW, clipH);
        g.setColor(color);
    }

    /**
     * paint
     */
    public void paint(Graphics g) {
        paintClipRect(g);
        pong.paint(g);
    }

    /**
     * Called when a key is pressed.
     */
    protected void keyPressed(int keyCode) {
    }

    /**
     * Called when a key is released.
     */
    protected void keyReleased(int keyCode) {
    }

    /**
     * Called when a key is repeated (held down).
     */
    protected void keyRepeated(int keyCode) {
    }

    /**
     * Called when the pointer is dragged.
     */
    protected void pointerDragged(int x, int y) {
    }

    /**
     * Called when the pointer is pressed.
     */
    protected void pointerPressed(int x, int y) {
    }

    /**
     * Called when the pointer is released.
     */
    protected void pointerReleased(int x, int y) {
    }

    /*
     * Respond to commands, including exit
     * On the exit command, cleanup and notify that the MIDlet has been destroyed.
     */
    public void commandAction(Command c, Displayable s) {
        if (c == backCommand || c == okCommand) {
            exitF = true;
//            Main.getInstance().display();
        }
    }

    public void run() {
        while(!exitF){
            pong.move();
            try{
                Thread.sleep(10);
            }
            catch(InterruptedException e){
            }
            repaint();
        }
        addCommand(okCommand);
    }
}

Исходный текст файла N.java>:
/*
 * Pong.java
 *
 * Created on 16 Январь 2005 г., 21:10
 */

package Sc_pong;
import javax.microedition.lcdui.*;

/**
 *
 * @author scalan
 */
public class Pong {
    private int x;
    private int y;

    private int Vx;
    private int Vy;

    private int r = 4;
    private int v = 7;

    private int maxX;
    private int maxY;

    /** Creates a new instance of Pong */
    public Pong(int maxX, int maxY) {
        x = 10;
        y = 10;

        Vx = 3;
        Vy = 1;

        this.maxX = maxX;
        this.maxY = maxY;
    }

    /**
     * paint
     */
    public void paint(Graphics g){
        g.setColor(0, 0, 0);
        g.drawRect(x,y, r, r);
    }

    public void move(){
        // ---[ Move ]---
        x+=Vx;
        y+=Vy;
        //---[ Border limits ]---
        if(x>maxX-r){ x = maxX - r; Vx=-Vx; }
        if(xmaxY-r){ y = maxY - r; Vy=-Vy; }
        if(y
                      

Компиляция проекта

После удачного создания подключения исходных текстов наша цель - посмотреть работу. Но перед этим необходимо скомпилировать проект. Т.е. получить файлы, которые можно загрузить в эмулятор и выполнить, а также в реальный телефон и тоже выполнить... - Для компиляции проекта необходимо в разделе проектов на имени созданного проекта нажать кнопку мыши, вызывающую контекстное меню, и выбрать пункт Build Project.
Скриншот команды...
- Компиляция проекта завершена.

Выполнение проекта

После успешной компиляции проекта попробуем его выполнить в эмуляторе. Используя среду разработки NetBeans это сделать очень просто. - Для выполнения проекта необходимо в разделе проектов на имени выполняемого проекта нажать кнопку мыши, вызывающую контекстное меню, и выбрать пункт Run Project:
Скриншот команды...
- На экране будет загружен симпатичный эмулятор мобильного телефона:
Скриншот эмулятора мобильного телефона...
- Для запуска проекта в эмуляторе - нажимаем кнопку (в эмуляторе) под надписью Launch. После этого начнется выполнение Вашего проекта. Скриншот созданного проекта:
Скриншот работающего проекта...
- На экране отобразится маленький квадрат, который бедет перемещаться по экрану виртуального мобильного телефона и отскакивать от стенок. - Закрываем окно эмулятора.

Заключение

Поздравляю!!! Мы с Вами создали простейший проект, в котором реализовали перемещение обьекта по экрану телефона. Вы увидели, что процесс создания анимации для мобильных телефонов не сложен.
Заархивированные файлы проета для скачивания расположены здесь. (zip ~ 35 kb).
Ваши мнения и пожелания, а также любую конструктивную критику буду рад получить по электронной почте.
Hosted by uCoz