Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Цель работы. Лабораторная работа № 8

Читайте также:
  1. I. Задания для самостоятельной работы
  2. I. ОБЩАЯ ХАРАКТЕРИСТИКА РАБОТЫ
  3. II. Завершение работы с Электронным дневником.
  4. II. Организация и порядок работы комиссии по трудовым спорам
  5. II. Организация и порядок работы комиссии по трудовым спорам
  6. II. Организация и порядок работы комиссии по трудовым спорам
  7. V. Резерв на непредусмотренные работы

Капустин А

МФ-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 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Цель работы| ЦЕЛЬ РАБОТЫ

mybiblioteka.su - 2015-2024 год. (0.02 сек.)