Читайте также:
|
|
Капустин А
МФ-192
ЛАБОРАТОРНАЯ РАБОТА № 8
«Изучение NetBeans, интегрированной среды разработки для J2ME.
Слои. Спрайты.»
Цель работы
Продолжить изучение возможностей интегрированной среды разработки NetBeans, с помощью которой возможны создание, компилирование, тестирование и упаковка, а также возможна работа со слоями и спрайтами в Java-приложениях для мобильных устройств.
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import java.io.*;
import javax.microedition.lcdui.game.*;
/**
* @author алекс
*/
public class MainGame extends MIDlet implements CommandListener
{
// команда выхода
private Command exitMidlet = new Command("Выход", Command.EXIT, 0);
// объект класса MyGameCanvas
private MyGameCanvas mr;
public void startApp()
{
// обрабатываем исключительную ситуацию
try{
// инициалезируем объект класса MyGameCanvas
mr = new MyGameCanvas();
// запускаем поток
mr.start();
// добовляем команду выхода
mr.addCommand(exitMidlet);
mr.setCommandListener(this);
// отражаем текущий дисплей
Display.getDisplay(this).setCurrent(mr);
}catch (java.io.IOException zxz) {};
}
public void pauseApp() {}
public void destroyApp(boolean unconditional)
{
// останавливаем поток
if(mr!= null) mr.stop();
}
public void commandAction(Command c, Displayable d)
{
if (c == exitMidlet)
{
destroyApp(false);
notifyDestroyed();
}
}
}
class MyGameCanvas extends GameCanvas implements Runnable
{
// создаем объекты класса SpriteShtangist и Sprite
private SpriteShtangist shtangist;
private Sprite shaiba;
// создаем объект класса LayerManager
private LayerManager lm;
// логическая переменная
boolean z,crash,second=false;
public MyGameCanvas() throws IOException
{
// обращаемся к конструктору суперкласса Canvas
super(true);
// загружаем изображение
Image im = Image.createImage("/shtangist.png");
Image im2 = Image.createImage("/shaiba.png");
shtangist = new SpriteShtangist(im, 50, 60);
shaiba = new Sprite(im2);
// выбираем позицию
shtangist.setPosition(10, 5);
shaiba.setPosition(10, 80);
// инициалезируем менеджер уровней
lm = new LayerManager();
// добовляем объекты к уровню
lm.append(shaiba);
lm.append(shtangist);
}
public void start()
{
z = true;
// создаем и запускаем поток
Thread t = new Thread(this);
t.start();
}
// останавливаем поток
public void stop(){ z = false; }
public void run()
{
// получаем графический контекст
Graphics g = getGraphics();
while (z)
{
// обрабатываем нажатия клавиш
input();
// рисуем графические элементы
init(g);
// останавливаем цикл
try { Thread.sleep(50); }
catch (java.lang.InterruptedException zxz) {};
}
}
private void input() {
int keyStates = getKeyStates();
// Left
if ((keyStates & LEFT_PRESSED)!= 0)
{
shtangist.moveLeft();
}
// Right
if ((keyStates & RIGHT_PRESSED)!=0)
{
shtangist.moveRight();
}
// Up
if ((keyStates & UP_PRESSED)!= 0)
{
shtangist.setFrame(1);
shtangist.moveUp();
}
// Down
if ((keyStates & DOWN_PRESSED)!=0)
{
if (shtangist.getY()<22)
{
shtangist.setFrame(0);
shtangist.moveDown();
}
}
}
private void init(Graphics g)
{
// синий цвет фона
g.setColor(0,0,200);
// перерисовываем экран
g.fillRect(0, 0, getWidth(), getHeight());
// рисуем уровень в точке 0,0
g.setColor(255,255,255);
g.drawString("Нажмите клавишу ВНИЗ",5,150,Graphics.TOP|Graphics.LEFT);
g.drawString("Капустин Александр",5,170,Graphics.TOP|Graphics.LEFT);
// определяем прямоугольники столкновений
shtangist.defineCollisionRectangle(0, 0, 30, 60);
shaiba.defineCollisionRectangle(0, 0, 10, 10);
// инициализируем переменную столкновения
crash = shtangist.collidesWith(shaiba, true);
// обозначаем действия в случае коллизии
if (crash) {
if(second){
shaiba.setPosition(80, 80);
shtangist.setFrame(2);
}
else{shaiba.setPosition(40, 80);
shtangist.setFrame(1);
second=true;}
}
// отображаем уровень в точке 0,0
lm.paint(g, 0, 0);
// двойная буферезация
flushGraphics();
};
}
class SpriteShtangist extends Sprite
{
// конструктор
public SpriteShtangist(Image image, int fw, int fh)
{
// обращаемся к конструктору суперкласса
super(image, fw, fh);
}
// метод для левой нажатой клавиши
public void moveLeft()
{
// передвигаем спрайт по X влево на 1 пиксел
move(-1,0);
}
// метод для правой нажатой клавиши
public void moveRight()
{
// передвигаем спрайт по X вправо на 1 пиксел
move(1,0);
}
// метод для клавиши вверх
public void moveUp()
{
// передвигаем спрайт по Y вверх на 1 пиксел
move(0,-1);
}
// метод для клавиши вниз
public void moveDown()
{
// передвигаем спрайт по Y вниз на 1 пиксел
move(0,1);
}
// метод осуществляющий анимацию
public void Animation()
{
// вызываем следующий фрейм
nextFrame();
}
}
Вывод: в данной лабораторной работе мы изучили работу со спрайтами и слоями в java-приложениях.
Дата добавления: 2015-08-27; просмотров: 37 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Цель работы | | | ЦЕЛЬ РАБОТЫ |