Ajuuuuudaaaaaaa com sons em Joguinho Java

[b]Olá pessoal, sou estudante na area de T.I no Senai Londrina e fiz um joguinho estilo aqueles de navinha com asteroides e tal!
Estou tentando deixar ele o mais bacana possivel e adicionei algúns métodos para adicionar sons ao Jogo, só que o lance é …
O compilador diz que o código está correto e tal mais creio que coloquei algo no lugar errado e gostaria de uma ajuda de vc’s, por favor!

Coloquei esses métodos no final da Classe Fase (la no finalzinho), não sei se é o lugar certo, preciso de ajuda, qualquer tipo de ajuda…

Segue-se o código: (Tais métodos em Negrito no final dos códigos)
[/b]

package aplicativojavajogo;

import java.io.;
import java.applet.
;
import java.net.MalformedURLException;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.List;

import javax.swing.ImageIcon;
import javax.swing.JPanel;
import javax.swing.Timer;

public class Fase extends JPanel implements ActionListener {
/// "extends JPanel << >>> pra que ela possa ser reconhecida com uma piuntura a ser adicionada no conteiner de janelas

   private AudioClip    musica;  //musica pra tocar  
   private String       caminho; //caminho da musica  
     
private static final long serialVersionUID = 1L;
private Image fundo;// "private" pois a imagem será só para ela, toda vez que for private serpa PRIVADO apenas para aquela class eu objeto
private Nave nave; // personagem da tela 
private Timer timer; // MUITO IMPORTANTE <<>>> é o TIMER que será responsavel em atualizar o que está sendo "PINTADO" na tela, ou seja, ele atualizara  apintura a cada movimento de qualquer objeto 
private boolean emJogo;
private boolean pausado = false;
private List<Inimigo> inimigos;
private int[][] coordenadas = {{2380, 29}, {2600, 59}, {1380, 89},
    {2111, 109}, {4000, 139}, {880, 239}, {790, 259},
    {920, 200}, {3120, 259}, {660, 50}, {540, 90}, {810, 220},
    {860, 20}, {740, 180}, {820, 128}, {490, 170}, {700, 30},
    {920, 300}, {856, 328}, {556, 320}, {570, 200}, {2220, 500},
    {3000, 589}, {3150, 689}, {2894, 600}, {3457, 614}, {2119, 587}, 
    {1459, 542},{954, 423}, {1000, 509}, {478, 647}, {1753, 357}, 
    {2590, 325}, {2470, 300},{1658,441},{1887,549},{3000,295},{1245,321}};// Coordenadas em PIXELS de onde mieus inimigos ficaram em ALTURA E LARGURA        

public Fase() {

    setFocusable(true); // Para colocar a tela em foco
    setDoubleBuffered(true); // Este mpetoddo vai sempre deixar a proxima tela armazenada para evitar BUGS futuros
    addKeyListener(new TecladoAdapter()); //Método para receber o teclado na "FASE"

    ImageIcon referencia = new ImageIcon("C:\\Documents and Settings\\Matheus\\Meus documentos\\AplicativoJavaJogo\\src\\res\\Jogo_Colorido.jpg");
    fundo = referencia.getImage();
    nave = new Nave();

    emJogo = true;

    inicializaInimigos();

    timer = new Timer(5, this); // Quanto maior for o numero (5) mais devagar a pintura se´ra atualizada, ou seja, mais lenta ficara o jogo! 
    timer.start();// Método que inicia o nosso Timer
    // Aqui vc defini o tempo que será atualizado a pintuira em Milisegundos e da onde que vai vir essa atualização, eu usei o "this" que qeur dizer que a atualização virá da propia classe ou metodo que estiver desenvolvendo 
    // Isso depende do método "repaint" olhar abaixo no ActionPerformed     
}

public void inicializaInimigos() {

    inimigos = new ArrayList<Inimigo>();

    for (int i = 0; i < coordenadas.length; i++) {
        inimigos.add(new Inimigo(coordenadas[i][0], coordenadas[i][1]));

    }

}

public void paint(Graphics g) {
  // Aqui eu defino o que eu quero que PINTE na tela
    Graphics2D graficos = (Graphics2D) g; /// Para pintar Graficos 2D na tela
    graficos.drawImage(fundo, 0, 0,null);// Aqui eu estou indicando posicoes e modos de como será pintado o fundo na janela

    if (emJogo) {

        graficos.drawImage(nave.getImagem(), nave.getX(), nave.getY(), this);

        List<Missel> misseis = nave.getMisseis();

        for (int i = 0; i < misseis.size(); i++) {

            Missel m = (Missel) misseis.get(i);
            graficos.drawImage(m.getImage(), m.getx(), m.gety(), this);

        }

        for (int i = 0; i < inimigos.size(); i++) {

            Inimigo in = inimigos.get(i);
            graficos.drawImage(in.getImage(), in.getX(), in.getY(), this);

        }

        graficos.setColor(Color.WHITE);
        graficos.drawString("INIMIGOS: " + inimigos.size(), 5, 15);

        if (inimigos.size() == 1) {
        }

    } else {

        ImageIcon fimJogo = new ImageIcon("C:\\Documents and Settings\\Matheus\\Meus documentos\\AplicativoJavaJogo\\src\\res\\Fim de jogo.jpg");

        graficos.drawImage(fimJogo.getImage(), 0, 0, null);

    }

    g.dispose(); // Este método é o que limpa a imagem para a proxima pintura, exemplo a movimentação da nave tem que ser prepintada a otodo momento 

}

@Override
public void actionPerformed(ActionEvent arg0) {

    if (inimigos.size() == 0) {

        /*Aqui deveria ficar o camando para fechar a fase 1 e iniciar a segunda*/
        emJogo = false;
    }

    List<Missel> misseis = nave.getMisseis();

    for (int i = 0; i < misseis.size(); i++) {

        Missel m = (Missel) misseis.get(i);

        if (m.isVísivel()) {
            m.mexer();
        } else {
            misseis.remove(i);
        }

    }

    for (int i = 0; i < inimigos.size(); i++) {

        Inimigo in = inimigos.get(i);

        if (in.isVísivel()) {
            in.mexer();
        } else {
            inimigos.remove(i);
        }

    }

    nave.mexer();
    checarColisoes();
    repaint(); // Ele será responsavel pela atualização das minhas imagens na interface interagindo de acordo com o "TIMER" método que está acima
}

public void checarColisoes() {

    Rectangle formaNave = nave.getBounds(); 
    Rectangle formaInimigo;
    Rectangle formaMissel;

    for (int i = 0; i < inimigos.size(); i++) {

        Inimigo tempInimigo = inimigos.get(i);
        formaInimigo = tempInimigo.getBounds();

        if (formaNave.intersects(formaInimigo)) {

            nave.setVisivel(false);
            tempInimigo.setVísivel(false);

            emJogo = false;

        }

    }

    List<Missel> misseis = nave.getMisseis();

    for (int i = 0; i < misseis.size(); i++) {

        Missel tempMissel = misseis.get(i);
        formaMissel = tempMissel.getBounds();

        for (int j = 0; j < inimigos.size(); j++) {

            Inimigo tempInimigo = inimigos.get(j);
            formaInimigo = tempInimigo.getBounds();

            if (formaMissel.intersects(formaInimigo)) {


                tempInimigo.setVísivel(false);
                tempMissel.setVísivel(false);

            }

        }

    }

}

private class TecladoAdapter extends KeyAdapter {

    @Override
    public void keyPressed(KeyEvent e) {

        if (e.getKeyCode() == KeyEvent.VK_P) {
            pausado = !pausado;
            if (pausado) {
                timer.stop();
            } else {
                timer.start();
            }
        }

        if (e.getKeyCode() == KeyEvent.VK_ENTER) {
            emJogo = true;
            nave = new Nave();
            inicializaInimigos();
        }

        nave.keyPressed(e);
    }

    @Override
    public void keyReleased(KeyEvent e) {
        nave.keyReleased(e);
    }
}

[b]public class Musica extends Thread {  
     
 
     
   public Musica(String base) {  
        
      caminho = base; //atribui caminho  
   }  
     
   public void run() {  
        
      try {  
           
         musica    = Applet.newAudioClip(new File("C:\\Documents and Settings\\Matheus\\Meus documentos\\AplicativoJavaJogo\\src\\Music\\JPC - Céu e Mar - YouTube.wav").toURL());    //instancia o obj e...  
         musica.loop();                                    // .... toca sem parar   
      }  
      catch (MalformedURLException e) {  
           
         System.out.println("Erro. Verifique o diretorio de sons"); //erro no arquivo  
      }  
   }  
     
   public AudioClip getMusica() { //retorna a musica  
        
      return musica;  
   }  

[/b]
}
}

Cara, usa a marcação de código na sua mensagem, está beeeeem difícil de ler seu código assim :frowning:

Como faço isso???

Como faço isso???

coloca as tags codes…

assim

[‘code’] codigo[’/code’]

retire as ‘’ para funcionar e coloque o codigo dentro