Versão atual:

Como trabalhar com som em Java

Como eu faço para este joguinho apresentar o comando de habilitar e desabilitar o som?

enter code here
package logica;

import java.io.IOException;
import java.io.InputStream;
import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.AlertType;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.game.LayerManager;
import javax.microedition.lcdui.game.Sprite;
import javax.microedition.media.Manager;
import javax.microedition.media.MediaException;
import javax.microedition.media.Player;

//lembrando que para retirar o erro será preciso criar um método construtor
public class Jogo extends GameCanvas implements Runnable, CommandListener {

    private Sprite sBackground, sAtleta, sBarreira;
    private LayerManager Im;
    private gameMidlet midlet;
    private boolean pula;
    private boolean corre = true;
    private boolean som;
    private int totalLoopsPulo = 0;
    private float vida = 30;
    private int barreirasPuladas = 0;

    public void run() {
        //vamos movimentar o bonequinho
        while (corre) {
            try {
                Thread.sleep(10);//para a thread por instantes
            } catch (InterruptedException ex) {
                ex.printStackTrace();
            }
            atualizaSprites();//método responsável
            verificaColisao();
            repaint();//redesenha conforme sprites
        }
        Alert alert = new Alert("Desafio de Barreira: ", " Você conseguiu saltar " + barreirasPuladas + " barreiras", null, AlertType.INFO);
        Command cmdMenu = new Command("OK", Command.OK, 1);
        alert.addCommand(cmdMenu);
        alert.setCommandListener(this);
        alert.setTimeout(Alert.FOREVER);
        gameMidlet.display.setCurrent(alert);


    }

    public void commandAction(Command c, Displayable d) {
        gameMidlet.display.setCurrent(gameMidlet.menu);
    }
    //esse é o método construtor

    public Jogo(gameMidlet m) {
        super(true);
        setFullScreenMode(true);
        midlet = m;
        try {
            Image atleta = Image.createImage("/res/atleta.png");
            Image fundo = Image.createImage("/res/cenario.png");
            Image barreira = Image.createImage("/res/barreira.png");

            sBackground = new Sprite(fundo);
            sAtleta = new Sprite(atleta, 42, 51);
            sBarreira = new Sprite(barreira);


            Im = new LayerManager();
            Im.append(sAtleta);
            Im.append(sBarreira);
            Im.append(sBackground);


            sAtleta.move(10, 215);
            sBarreira.move(220, 245);



        } catch (IOException ex) {
            ex.printStackTrace();
        }





        Thread t = new Thread(this);
        t.start();
    }

    public void paint(Graphics g) {
        Im.paint(g, 0, 0);
        try {

            Image vidas = Image.createImage("/res/vida.png");
            if (vida == 30) {
                g.drawImage(vidas, 70, 10, 0);
                g.drawImage(vidas, 120, 10, 0);
                g.drawImage(vidas, 170, 10, 0);

            } else if (vida == 20) {
                g.drawImage(vidas, 120, 10, 0);
                g.drawImage(vidas, 170, 10, 0);
            } else if (vida == 10) {
                g.drawImage(vidas, 170, 10, 0);
            }


        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

    private void atualizaSprites() {
        //verifica se a ação de pulo foi disparada pelo usuário
        if (pula) {
            //controle de pulos no loop.25 sprites,25 atualizações do pulo
            totalLoopsPulo++;
            if (totalLoopsPulo <= 25) {
                sAtleta.move(0, -1);

            } else if (totalLoopsPulo <= 50) {
                sAtleta.move(0, 1);
            } else {
                pula = false;
                totalLoopsPulo = 0;
                //chama próximo frame do atleta 
                sAtleta.nextFrame();
            }
        } else {
            // se não pula então corre
            sAtleta.nextFrame();

        }
        //se a barreira chegou ao começo da tela,move para o final para aproveitar memória
        sBarreira.move(-3, 0);
        if (sBarreira.getX() + sBarreira.getWidth() < 0) {
            barreirasPuladas++;
            sBarreira.move(255, 0);


        }
    }

    private void verificaColisao() {
        if (sAtleta.collidesWith(sBarreira, true)) {


            if (barreirasPuladas == 0) {
                barreirasPuladas = barreirasPuladas - 1;
            }
            if (barreirasPuladas < 0) {
                barreirasPuladas = +1;
            }
            vida = vida - 1;

            if (vida == 0) {
                corre = false;
            }


        }
    }

    public void pointerPressed(int x, int y) {
        if (som==true) {
            pula = true;
            audioPlay("/res/vamospular.wav", "audio/X-wav");
        } else if (som = false) {
            pula = false;
            audioPlay("/res/vamospular.wav", "audio/X-wav");
        }
    }
    //criando o método para o som

    public void audioPlay(String file, String format) {
        try {
            InputStream is = getClass().getResourceAsStream(file);
            Player p = Manager.createPlayer(is, format);
            p.start();
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } catch (MediaException me) {
            me.printStackTrace();
        }

    }
}

Versões(3):

Ver a versão formatada

Por favor me ajudem?

Comentário

new question