1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

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();
        }

    }
}
  • uma dica quando usar o guj, coloque um título coerente com a pergunta e use somente as tags que tenham relação com a pergunta.

    Scotto   31 de out de 2014
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java javafx java-ee java8 ou faça a sua própria pergunta.