import javax.microedition.lcdui.*; import java.io.*; import javax.microedition.media.*; import javax.microedition.media.control.*; /* author Admin */ public class BMP { //изображение бмп в четыре стороны public Image[] bmp = new Image[4]; //направление public int dir=0; //координаты бмп и пули, а так же направление пули public int x, y, shot_x, shot_y, shot_dir; //изображение пули public Image shot; //для выстрела public boolean is_shot = false; //звук public Player sound; public BMP(Image img, int x, int y){ //dir=0, bmp down bmp[0] = Image.createImage(img,0,0,40,40,0); //dir=1, bmp up bmp[1] = Image.createImage(img,40,0,40,40,0); //dir=2, bmp left bmp[2] = Image.createImage(img,0,40,40,40,0); //dir=3, bmp right bmp[3] = Image.createImage(img,40,40,40,40,0); //координаты х и у бмп this.x = x; this.y = y; //загрузка звука sound = createSound("/shot.wav","audio/X-wav"); //загрузка выстрела try{ shot = Image.createImage("/shot.png"); }catch(IOException ex){} } public void paint(Graphics g) { //если выстрел, двигаем и рисуем пулю в нужном направлении if(is_shot) { if(shot_dir == 0) { //вниз shot_y += 4; } if(shot_dir == 1) { //вверх shot_y-=4; } if(shot_dir == 2) { //влево shot_x -= 4; } if(shot_dir == 3) { //вправо shot_x += 4; } g.drawImage(shot, shot_x, shot_y, 0); //если пуля выйшла за экран то не стрелять if(shot_x<-4 || shot_x>240 || shot_y<-4 || shot_y>320) is_shot=false; } //нарисовать бмп g.drawImage(bmp[dir], x, y, 0); } //функция загрузки звука private Player createSound(String file, String format) { Player player = null; try { InputStream is = getClass().getResourceAsStream(file); player = Manager.createPlayer(is, format); player.prefetch(); }catch(IOException io){} catch(MediaException io){} return player; } //функция воспроизвидения звука public void play(Player sound) { if(sound != null) { try { sound.stop(); sound.setMediaTime(0L); sound.start(); }catch(MediaException ex){} }} public void Shot() { is_shot = true; //воспроизвести звук play(sound); //если направление вниз, поставить пулю в нужных координатах, чтоб пуля вылетала с переда бмп, следуещие аналогично if(dir==0) { shot_x=x+18; shot_y=y+40; shot_dir=0; } if(dir==1) { shot_x=x+18; shot_y=y; shot_dir=1; } if(dir==2) { shot_x=x; shot_y=y+18; shot_dir=2; } if(dir==3) { shot_x=x+40; shot_y=y+18; shot_dir=3; }} //здесь функции передвижение бмп public void moveUp() { dir=1; y--; } public void moveDown() { dir=0; y++; } public void moveLeft() { dir=2; x--; } public void moveRight() { dir=3; x++; }}