URGENTE Erro - java.lang.NullPointerException

Olá, criei este jogo infatil para trabalho final de semestre:

import java.awt.event.;
import java.applet.
;
import java.awt.;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import javax.swing.
;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;

//criação da classe Trabalho Prático Final
public class TPFinal extends JFrame implements ActionListener {
//declaração das variáveis e objectos
private static JButton bSom, bSom2, bSom3, bVerificar;
private static JComboBox cbcombo, cbcombo2, cbcombo3;
private static JLabel lImage1, lImage2, lImage3;
private JLabel lCategoria, lCategoria2, lCategoria3;
int SizeX = 600;
int SizeY = 600;
static int numRandom1 = 0, numRandom2 = 0, numRandom3 = 0;
static String[] animais = new String[98];
static String[] transportes = new String[49];
static String[] instrumentos = new String[56];
static int inicioArrays[] = {0,7,14,21,28,35};
String linha = “”;
static String categoriaEscolhida = “Animais”;
static String cbVazia = " ";
static String categoria = “”;
static String caminho_imagem1 = “”;
static String caminho_imagem2 = “”;
static String caminho_imagem3 = “”;
static String caminho_som1 = “”;
static String caminho_som2 = “”;
static String caminho_som3 = “”;
static String opcaoCorrectaA = “”;
static String opcaoCorrectaB = “”;
static String opcaoCorrectaC = “”;
String correctas = “”;
int numeroCorrectas = 0;
static int j = 0;
static AudioClip Som;
static AudioClip Som2;
static AudioClip Som3;

public TPFinal(String título) {
	super(título);
	JMenuBar barra = new JMenuBar();
    setJMenuBar(barra);
    JMenu categorias = new JMenu("Categorias");
    JMenu opcoes = new JMenu ("Opções");
    barra.add(categorias);
	barra.add(opcoes);		
	JMenuItem fechar = new JMenuItem("Fechar jogo");
    fechar.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent arg0) {
			dispose();
		}
	});
    opcoes.add(fechar);
    JMenuItem novoJogo = new JMenuItem("Novo jogo");
    novoJogo.addActionListener(
    		new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {
    				novoJogo();
    			}
    		}
    		);
    opcoes.add(novoJogo);
    JMenuItem ajuda = new JMenuItem("Ajuda");
    ajuda.addActionListener(
    		new ActionListener(){
    			public void actionPerformed(ActionEvent e){
    				JOptionPane.showMessageDialog(null, "1 - O jogo admite apenas um jogador" + "\n 2 - O objectivo do jogo é conseguir identificar o animal, transporte ou instrumento (dependendo da categoria escolhida) e fazê-lo corresponder a um dos nomes apresentados à frente" + "\n 3 - A primeira fase do jogo é escolher a categoria pretendida. Poderá escolher uma de três categorias: Animais, Transportes ou Instrumentos" + "\n 4 - Seguidamente irá iniciar o jogo" + "\n 5 - Terá de corresponder um nome a cada imagem/som e só após a associação deverá clicar-se no botão ?Verificar?" + "\n 6 -	Se não forem associados correctamente todos os elementos presentes no jogo serão indicados os que foram falhados para que o jogador não volte a errar" + "\n 7 - Nesse momento, poderá fechar o jogo ou iniciar um novo" + "\n 8 - A escolha da categoria é feita na barra de menu");
    			}
    		}
    		);
    opcoes.add(ajuda);
    final JRadioButtonMenuItem animais = new JRadioButtonMenuItem("Animais");
    animais.addActionListener(
		   new ActionListener(){
			   public void actionPerformed(ActionEvent arg0) {
				   categoriaEscolhida = "Animais";
				   lCategoria2.setText("Animais");
				   novoJogo();

    			}
		});
    categorias.add(animais);
	final JRadioButtonMenuItem transportes = new JRadioButtonMenuItem("Transportes");
	transportes.addActionListener(
			   new ActionListener(){
				   public void actionPerformed(ActionEvent arg0) {
					   categoriaEscolhida = "Transportes";
					   lCategoria2.setText("Transportes");
					   novoJogo();

				 }
		});	
    categorias.add(transportes);
    final JRadioButtonMenuItem instrumentos = new JRadioButtonMenuItem("Instrumentos");
    instrumentos.addActionListener(
			   new ActionListener(){
				   public void actionPerformed(ActionEvent arg0) {
					   categoriaEscolhida = "Instrumentos";
					   lCategoria2.setText("Instrumentos");
					   novoJogo();

				 }
		});	
    categorias.add(instrumentos);
    
    ButtonGroup bg1 = new ButtonGroup();		
	bg1.add(animais);
	bg1.add(transportes);
	bg1.add(instrumentos);
	animais.setSelected(true);

    // Adiciona o menu à barra de menus
    barra.add(categorias);
    barra.add(opcoes);
    }


public static void main(String[] args) {
	TPFinal jogo = new TPFinal("Jogo Infantil de Sandra Lourenço e Solange Gomes");
	jogo.setSize(600, 600);
	jogo.setVisible(true);
}

private void init() {
	lCategoria = new JLabel("Categoria: ");
	lCategoria2 = new JLabel("Animais");
	bSom = new JButton("Som");
	bSom2 = new JButton("Som");
	bSom3 = new JButton("Som");		
	bVerificar = new JButton("Verificar");		
	cbcombo = new JComboBox();
	cbcombo2 = new JComboBox();
	cbcombo3 = new JComboBox();
	
	lImage1 = new JLabel("", new ImageIcon("imagens/border.jpg"), JLabel.CENTER);
	lImage2 = new JLabel("", new ImageIcon("imagens/border.jpg"), JLabel.CENTER);
	lImage3 = new JLabel("", new ImageIcon("imagens/border.jpg"), JLabel.CENTER);
	
	cbcombo.addItem(cbVazia);
	cbcombo2.addItem(cbVazia);
	cbcombo3.addItem(cbVazia);
	
	setLayout(new BorderLayout());
	JPanel pNorte = new JPanel(new FlowLayout());		
	JPanel pCentro = new JPanel(new FlowLayout());	
	JPanel pSul = new JPanel(new FlowLayout());
	pNorte.add(lCategoria);
	pNorte.add(lCategoria2);
	add(pNorte, BorderLayout.NORTH);	
	pCentro.add(lImage1);
	pCentro.add(bSom);
	pCentro.add(cbcombo);
	pCentro.add(lImage2);
	pCentro.add(bSom2);
	pCentro.add(cbcombo2);
	pCentro.add(lImage3);
	pCentro.add(bSom3);		
	pCentro.add(cbcombo3);	
	add(pCentro, BorderLayout.CENTER);		
	pSul.add(bVerificar);
	add(pSul, BorderLayout.SOUTH);	
	bVerificar.addActionListener(this);
	bSom.addActionListener(this);
	bSom2.addActionListener(this);
	bSom3.addActionListener(this);
	//definir as propriedades dos componentes
	bSom.setEnabled(false);
	bSom2.setEnabled(false);
	bSom3.setEnabled(false);
	bVerificar.setEnabled(false);
	cbcombo.setEnabled(false);
	cbcombo2.setEnabled(false);
	cbcombo3.setEnabled(false);
	
	try{
		File fich = new File("tpfinal.txt");		
		FileInputStream canalInputFich = new FileInputStream(fich);
		InputStreamReader canalInput = new InputStreamReader(canalInputFich);
		BufferedReader ficheiro = new BufferedReader(canalInput);	

		//ler o ficheiro e guardar as categorias nos arrays
		for( int i = 0; i<42; i++) {								
			linha = ficheiro.readLine();
			animais[i] = linha;	
		}

		for( int i = 0; i<42; i++) {								
			linha = ficheiro.readLine();
			transportes[i] = linha;	

		}
		for( int i = 0; i<42; i++) {								
			linha = ficheiro.readLine();
			instrumentos[i] = linha;	

		}
	} catch (FileNotFoundException e) {
		JOptionPane.showMessageDialog(null, "Erro! Ficheiro dados.txt não encontrado!");				     
		
	} catch (IOException e) {
		JOptionPane.showMessageDialog(null, "Erro! Causa desconhecida!");				     
		e.printStackTrace();
	}	
}
public void actionPerformed(ActionEvent ae) {
	if (ae.getSource() == bVerificar)  {			
		verificar();
	}
	if (ae.getSource() == bSom)  {	
		Som.play();
	}
	if (ae.getSource() == bSom2)  {	
		Som2.play();
	}
	if (ae.getSource() == bSom3)  {	
		Som3.play();
	}
}	


public static void novoJogo() {
	cbcombo.removeAllItems();
	cbcombo2.removeAllItems();
	cbcombo3.removeAllItems();
	cbcombo.addItem(cbVazia);
	cbcombo2.addItem(cbVazia);
	cbcombo3.addItem(cbVazia);
	
	if(categoriaEscolhida.equalsIgnoreCase("Animais")) {

		//primeiro animal
		numRandom1 = (int)(14.0 * Math.random()) + 1;
		j = inicioArrays[numRandom1-1];				
		categoria = animais[j];
		caminho_imagem1 = animais[j+1];
		caminho_som1 = animais[j+2];
		try{
			Som = Applet.newAudioClip(new URL("file:"+caminho_som1));
		}
		catch (MalformedURLException mfe){
		}
		caminho_som1 = animais[j+2];
		cbcombo.addItem(animais[j+3]);
		cbcombo.addItem(animais[j+4]);
		cbcombo.addItem(animais[j+5]);
		opcaoCorrectaA = animais[j+6];

		//segundo animal
		numRandom2 = (int)(14.0 * Math.random()) + 1;
		while( numRandom2 == numRandom1) {
			numRandom2 = (int)(14.0 * Math.random()) + 1;
		}
		j = inicioArrays[numRandom2-1];				
		categoria = animais[j];
		caminho_imagem2 = animais[j+1];
		caminho_som2 = animais[j+2];
		try{
			Som2 = Applet.newAudioClip(new URL("file:"+caminho_som2));
		}
		catch (MalformedURLException mfe){
		}
		cbcombo2.addItem(animais[j+3]);
		cbcombo2.addItem(animais[j+4]);
		cbcombo2.addItem(animais[j+5]);
		opcaoCorrectaB = animais[j+6];

		//terceiro animal
		numRandom3 = (int)(14.0 * Math.random()) + 1;
		while( numRandom3 == numRandom1 || numRandom3 == numRandom2) {
			numRandom3 = (int)(14.0 * Math.random()) + 1;
		}
		j = inicioArrays[numRandom3-1];				
		categoria = animais[j];
		caminho_imagem3 = animais[j+1];
		caminho_som3 = animais[j+2];
		try{
			Som3 = Applet.newAudioClip(new URL("file:"+caminho_som3));
		}
		catch (MalformedURLException mfe){
		}
		cbcombo3.addItem(animais[j+3]);
		cbcombo3.addItem(animais[j+4]);
		cbcombo3.addItem(animais[j+5]);
		opcaoCorrectaC = animais[j+6];
	} else
		if(categoriaEscolhida.equalsIgnoreCase("Transportes")) {

			//primeiro transporte
			numRandom1 = (int)(7.0 * Math.random()) + 1;
			j = inicioArrays[numRandom1-1];				
			categoria = transportes[j];
			caminho_imagem1 = transportes[j+1];
			caminho_som1 = transportes[j+2];
			try{
				Som = Applet.newAudioClip(new URL("file:"+caminho_som1));
			}
			catch (MalformedURLException mfe){
			}
			cbcombo.addItem(transportes[j+3]);
			cbcombo.addItem(transportes[j+4]);
			cbcombo.addItem(transportes[j+5]);
			opcaoCorrectaA = transportes[j+6];

			//segundo transporte
			numRandom2 = (int)(7.0 * Math.random()) + 1;
			while( numRandom2 == numRandom1) {
				numRandom2 = (int)(7.0 * Math.random()) + 1;
			}
			j = inicioArrays[numRandom2-1];				
			categoria = transportes[j];
			caminho_imagem2 = transportes[j+1];
			caminho_som2 = transportes[j+2];
			try{
				Som2 = Applet.newAudioClip(new URL("file:"+caminho_som2));
			}
			catch (MalformedURLException mfe){
			}
			cbcombo2.addItem(transportes[j+3]);
			cbcombo2.addItem(transportes[j+4]);
			cbcombo2.addItem(transportes[j+5]);
			opcaoCorrectaB = transportes[j+6];

			//terceiro transporte
			numRandom3 = (int)(7.0 * Math.random()) + 1;
			while( numRandom3 == numRandom1 || numRandom3 == numRandom2) {
				numRandom3 = (int)(7.0 * Math.random()) + 1;
			}
			j = inicioArrays[numRandom3-1];				
			categoria = transportes[j];
			caminho_imagem3 = transportes[j+1];
			caminho_som3 = transportes[j+2];
			try{
				Som3 = Applet.newAudioClip(new URL("file:"+caminho_som3));
			}
			catch (MalformedURLException mfe){
			}
			cbcombo3.addItem(transportes[j+3]);
			cbcombo3.addItem(transportes[j+4]);
			cbcombo3.addItem(transportes[j+5]);
			opcaoCorrectaC = transportes[j+6];
		} else 
			if(categoriaEscolhida.equalsIgnoreCase("Instrumentos")) {

				//primeiro instrumento
				numRandom1 = (int)(8.0 * Math.random()) + 1;
				j = inicioArrays[numRandom1-1];				
				categoria = instrumentos[j];
				caminho_imagem1 = instrumentos[j+1];
				caminho_som1 = instrumentos[j+2];
				try{
					Som = Applet.newAudioClip(new URL("file:"+caminho_som1));
				}
				catch (MalformedURLException mfe){
				}
				cbcombo.addItem(instrumentos[j+3]);
				cbcombo.addItem(instrumentos[j+4]);
				cbcombo.addItem(instrumentos[j+5]);
				opcaoCorrectaA = instrumentos[j+6];

				//segundo instrumento
				numRandom2 = (int)(8.0 * Math.random()) + 1;
				while( numRandom2 == numRandom1) {
					numRandom2 = (int)(8.0 * Math.random()) + 1;
				}
				j = inicioArrays[numRandom2-1];				
				categoria = instrumentos[j];
				caminho_imagem2 =instrumentos[j+1];
				caminho_som2 = instrumentos[j+2];
				try{
					Som2 = Applet.newAudioClip(new URL("file:"+caminho_som2));
				}
				catch (MalformedURLException mfe){
				}
				cbcombo2.addItem(instrumentos[j+3]);
				cbcombo2.addItem(instrumentos[j+4]);
				cbcombo2.addItem(instrumentos[j+5]);
				opcaoCorrectaB = instrumentos[j+6];

				//terceiro instrumento
				numRandom3 = (int)(8.0 * Math.random()) + 1;
				while( numRandom3 == numRandom1 || numRandom3 == numRandom2) {
					numRandom3 = (int)(8.0 * Math.random()) + 1;
				}
				j = inicioArrays[numRandom3-1];				
				categoria = instrumentos[j];
				caminho_imagem3 = instrumentos[j+1];
				caminho_som3 = instrumentos[j+2];
				try{
					Som3 = Applet.newAudioClip(new URL("file:"+caminho_som3));
				}
				catch (MalformedURLException mfe){
				}
				cbcombo3.addItem(instrumentos[j+3]);
				cbcombo3.addItem(instrumentos[j+4]);
				cbcombo3.addItem(instrumentos[j+5]);
				opcaoCorrectaC = instrumentos[j+6];
			}

	//colocar as imagens
	lImage1.setIcon(new ImageIcon(caminho_imagem1));
	lImage2.setIcon(new ImageIcon(caminho_imagem2));
	lImage3.setIcon(new ImageIcon(caminho_imagem3));

	//activar os componentes
	bSom.setEnabled(true);
	bSom2.setEnabled(true);
	bSom3.setEnabled(true);
	bVerificar.setEnabled(true);
	cbcombo.setEnabled(true);
	cbcombo2.setEnabled(true);
	cbcombo3.setEnabled(true);		
}

public void verificar() {
	correctas =  "";
	numeroCorrectas = 0;
	if(cbcombo.getSelectedItem().equals(opcaoCorrectaA)) {
		numeroCorrectas++;
		correctas += opcaoCorrectaA + ", ";
	} 
	if(cbcombo2.getSelectedItem().equals(opcaoCorrectaB)) {
		numeroCorrectas++;
		correctas += opcaoCorrectaB + ", ";
	} 
	if(cbcombo3.getSelectedItem().equals(opcaoCorrectaC)) {
		numeroCorrectas++;
		correctas += opcaoCorrectaC + ", ";
	}
	if(numeroCorrectas == 0) {
		JOptionPane.showMessageDialog(null, "Resultado: Não conseguiste acertar em nenhuma! Tenta outra vez!");	
	}
	if(numeroCorrectas >= 1 && numeroCorrectas < 3) {
		JOptionPane.showMessageDialog(null, ("Resultado:Acertaste em " + numeroCorrectas + " figuras! " + correctas));
	}
	if(numeroCorrectas == 3) {
		JOptionPane.showMessageDialog(null,"Resultado:Parabéns! Acertaste em todas as figuras!");
	}
}

}

No final, dá erro quando mando executar:

Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
at TPFinal$5.actionPerformed(TPFinal.java:98)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.JToggleButton$ToggleButtonModel.setPressed(Unknown Source)
at javax.swing.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

Como posso soluccionar este erro e conseguir executar o erro ?
Obrigada!

Em algum ponto vc tem que executar o método init() para inicializar suas estruturas.

Na próxima utiliza a tag code.


criação da classe Trabalho Prático Final
public class TPFinal extends JFrame implements ActionListener {
	// declaração das variáveis e objectos
	private static JButton bSom, bSom2, bSom3, bVerificar;
	private static JComboBox cbcombo, cbcombo2, cbcombo3;
	private static JLabel lImage1, lImage2, lImage3;
	private JLabel lCategoria, lCategoria2, lCategoria3;
	int SizeX = 600;
	int SizeY = 600;
	static int numRandom1 = 0, numRandom2 = 0, numRandom3 = 0;
	static String[] animais = new String[98];
	static String[] transportes = new String[49];
	static String[] instrumentos = new String[56];
	static int inicioArrays[] = { 0, 7, 14, 21, 28, 35 };
	String linha = "";
	static String categoriaEscolhida = "Animais";
	static String cbVazia = " ";
	static String categoria = "";
	static String caminho_imagem1 = "";
	static String caminho_imagem2 = "";
	static String caminho_imagem3 = "";
	static String caminho_som1 = "";
	static String caminho_som2 = "";
	static String caminho_som3 = "";
	static String opcaoCorrectaA = "";
	static String opcaoCorrectaB = "";
	static String opcaoCorrectaC = "";
	String correctas = "";
	int numeroCorrectas = 0;
	static int j = 0;
	static AudioClip Som;
	static AudioClip Som2;
	static AudioClip Som3;

	public TPFinal(String título) {
		super(título);
		JMenuBar barra = new JMenuBar();
		setJMenuBar(barra);
		JMenu categorias = new JMenu("Categorias");
		JMenu opcoes = new JMenu("Opções");
		barra.add(categorias);
		barra.add(opcoes);
		JMenuItem fechar = new JMenuItem("Fechar jogo");
		fechar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				dispose();
			}
		});
		opcoes.add(fechar);
		JMenuItem novoJogo = new JMenuItem("Novo jogo");
		novoJogo.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				novoJogo();
			}
		});
		opcoes.add(novoJogo);
		JMenuItem ajuda = new JMenuItem("Ajuda");
		ajuda.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				JOptionPane
						.showMessageDialog(
								null,
								"1 - O jogo admite apenas um jogador"
										+ "\n 2 - O objectivo do jogo é conseguir identificar o animal, transporte ou instrumento (dependendo da categoria escolhida) e fazê-lo corresponder a um dos nomes apresentados à frente"
										+ "\n 3 - A primeira fase do jogo é escolher a categoria pretendida. Poderá escolher uma de três categorias: Animais, Transportes ou Instrumentos"
										+ "\n 4 - Seguidamente irá iniciar o jogo"
										+ "\n 5 - Terá de corresponder um nome a cada imagem/som e só após a associação deverá clicar-se no botão ?Verificar?"
										+ "\n 6 - Se não forem associados correctamente todos os elementos presentes no jogo serão indicados os que foram falhados para que o jogador não volte a errar"
										+ "\n 7 - Nesse momento, poderá fechar o jogo ou iniciar um novo"
										+ "\n 8 - A escolha da categoria é feita na barra de menu");
			}
		});
		opcoes.add(ajuda);
		final JRadioButtonMenuItem animais = new JRadioButtonMenuItem("Animais");
		animais.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				categoriaEscolhida = "Animais";
				lCategoria2.setText("Animais");
				novoJogo();

			}
		});
		categorias.add(animais);
		final JRadioButtonMenuItem transportes = new JRadioButtonMenuItem("Transportes");
		transportes.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				categoriaEscolhida = "Transportes";
				lCategoria2.setText("Transportes");
				novoJogo();

			}
		});
		categorias.add(transportes);
		final JRadioButtonMenuItem instrumentos = new JRadioButtonMenuItem("Instrumentos");
		instrumentos.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				categoriaEscolhida = "Instrumentos";
				lCategoria2.setText("Instrumentos");
				novoJogo();

			}
		});
		categorias.add(instrumentos);

		ButtonGroup bg1 = new ButtonGroup();
		bg1.add(animais);
		bg1.add(transportes);
		bg1.add(instrumentos);
		animais.setSelected(true);

		// Adiciona o menu à barra de menus
		barra.add(categorias);
		barra.add(opcoes);
	}

	public static void main(String[] args) {
		TPFinal jogo = new TPFinal("Jogo Infantil de Sandra Lourenço e Solange Gomes");
		jogo.setSize(600, 600);
		jogo.setVisible(true);
	}

	private void init() {
		lCategoria = new JLabel("Categoria: ");
		lCategoria2 = new JLabel("Animais");
		bSom = new JButton("Som");
		bSom2 = new JButton("Som");
		bSom3 = new JButton("Som");
		bVerificar = new JButton("Verificar");
		cbcombo = new JComboBox();
		cbcombo2 = new JComboBox();
		cbcombo3 = new JComboBox();

		lImage1 = new JLabel("", new ImageIcon("imagens/border.jpg"), JLabel.CENTER);
		lImage2 = new JLabel("", new ImageIcon("imagens/border.jpg"), JLabel.CENTER);
		lImage3 = new JLabel("", new ImageIcon("imagens/border.jpg"), JLabel.CENTER);

		cbcombo.addItem(cbVazia);
		cbcombo2.addItem(cbVazia);
		cbcombo3.addItem(cbVazia);

		setLayout(new BorderLayout());
		JPanel pNorte = new JPanel(new FlowLayout());
		JPanel pCentro = new JPanel(new FlowLayout());
		JPanel pSul = new JPanel(new FlowLayout());
		pNorte.add(lCategoria);
		pNorte.add(lCategoria2);
		add(pNorte, BorderLayout.NORTH);
		pCentro.add(lImage1);
		pCentro.add(bSom);
		pCentro.add(cbcombo);
		pCentro.add(lImage2);
		pCentro.add(bSom2);
		pCentro.add(cbcombo2);
		pCentro.add(lImage3);
		pCentro.add(bSom3);
		pCentro.add(cbcombo3);
		add(pCentro, BorderLayout.CENTER);
		pSul.add(bVerificar);
		add(pSul, BorderLayout.SOUTH);
		bVerificar.addActionListener(this);
		bSom.addActionListener(this);
		bSom2.addActionListener(this);
		bSom3.addActionListener(this);
		// definir as propriedades dos componentes
		bSom.setEnabled(false);
		bSom2.setEnabled(false);
		bSom3.setEnabled(false);
		bVerificar.setEnabled(false);
		cbcombo.setEnabled(false);
		cbcombo2.setEnabled(false);
		cbcombo3.setEnabled(false);

		try {
			File fich = new File("tpfinal.txt");
			FileInputStream canalInputFich = new FileInputStream(fich);
			InputStreamReader canalInput = new InputStreamReader(canalInputFich);
			BufferedReader ficheiro = new BufferedReader(canalInput);

			// ler o ficheiro e guardar as categorias nos arrays
			for (int i = 0; i < 42; i++) {
				linha = ficheiro.readLine();
				animais[i] = linha;
			}

			for (int i = 0; i < 42; i++) {
				linha = ficheiro.readLine();
				transportes[i] = linha;

			}
			for (int i = 0; i < 42; i++) {
				linha = ficheiro.readLine();
				instrumentos[i] = linha;

			}
		} catch (FileNotFoundException e) {
			JOptionPane.showMessageDialog(null, "Erro! Ficheiro dados.txt não encontrado!");

		} catch (IOException e) {
			JOptionPane.showMessageDialog(null, "Erro! Causa desconhecida!");
			e.printStackTrace();
		}
	}

	public void actionPerformed(ActionEvent ae) {
		if (ae.getSource() == bVerificar) {
			verificar();
		}
		if (ae.getSource() == bSom) {
			Som.play();
		}
		if (ae.getSource() == bSom2) {
			Som2.play();
		}
		if (ae.getSource() == bSom3) {
			Som3.play();
		}
	}

	public static void novoJogo() {
		cbcombo.removeAllItems();
		cbcombo2.removeAllItems();
		cbcombo3.removeAllItems();
		cbcombo.addItem(cbVazia);
		cbcombo2.addItem(cbVazia);
		cbcombo3.addItem(cbVazia);

		if (categoriaEscolhida.equalsIgnoreCase("Animais")) {

			// primeiro animal
			numRandom1 = (int) (14.0 * Math.random()) + 1;
			j = inicioArrays[numRandom1 - 1];
			categoria = animais[j];
			caminho_imagem1 = animais[j + 1];
			caminho_som1 = animais[j + 2];
			try {
				Som = Applet.newAudioClip(new URL("file:" + caminho_som1));
			} catch (MalformedURLException mfe) {
			}
			caminho_som1 = animais[j + 2];
			cbcombo.addItem(animais[j + 3]);
			cbcombo.addItem(animais[j + 4]);
			cbcombo.addItem(animais[j + 5]);
			opcaoCorrectaA = animais[j + 6];

			// segundo animal
			numRandom2 = (int) (14.0 * Math.random()) + 1;
			while (numRandom2 == numRandom1) {
				numRandom2 = (int) (14.0 * Math.random()) + 1;
			}
			j = inicioArrays[numRandom2 - 1];
			categoria = animais[j];
			caminho_imagem2 = animais[j + 1];
			caminho_som2 = animais[j + 2];
			try {
				Som2 = Applet.newAudioClip(new URL("file:" + caminho_som2));
			} catch (MalformedURLException mfe) {
			}
			cbcombo2.addItem(animais[j + 3]);
			cbcombo2.addItem(animais[j + 4]);
			cbcombo2.addItem(animais[j + 5]);
			opcaoCorrectaB = animais[j + 6];

			// terceiro animal
			numRandom3 = (int) (14.0 * Math.random()) + 1;
			while (numRandom3 == numRandom1 || numRandom3 == numRandom2) {
				numRandom3 = (int) (14.0 * Math.random()) + 1;
			}
			j = inicioArrays[numRandom3 - 1];
			categoria = animais[j];
			caminho_imagem3 = animais[j + 1];
			caminho_som3 = animais[j + 2];
			try {
				Som3 = Applet.newAudioClip(new URL("file:" + caminho_som3));
			} catch (MalformedURLException mfe) {
			}
			cbcombo3.addItem(animais[j + 3]);
			cbcombo3.addItem(animais[j + 4]);
			cbcombo3.addItem(animais[j + 5]);
			opcaoCorrectaC = animais[j + 6];
		} else if (categoriaEscolhida.equalsIgnoreCase("Transportes")) {

			// primeiro transporte
			numRandom1 = (int) (7.0 * Math.random()) + 1;
			j = inicioArrays[numRandom1 - 1];
			categoria = transportes[j];
			caminho_imagem1 = transportes[j + 1];
			caminho_som1 = transportes[j + 2];
			try {
				Som = Applet.newAudioClip(new URL("file:" + caminho_som1));
			} catch (MalformedURLException mfe) {
			}
			cbcombo.addItem(transportes[j + 3]);
			cbcombo.addItem(transportes[j + 4]);
			cbcombo.addItem(transportes[j + 5]);
			opcaoCorrectaA = transportes[j + 6];

			// segundo transporte
			numRandom2 = (int) (7.0 * Math.random()) + 1;
			while (numRandom2 == numRandom1) {
				numRandom2 = (int) (7.0 * Math.random()) + 1;
			}
			j = inicioArrays[numRandom2 - 1];
			categoria = transportes[j];
			caminho_imagem2 = transportes[j + 1];
			caminho_som2 = transportes[j + 2];
			try {
				Som2 = Applet.newAudioClip(new URL("file:" + caminho_som2));
			} catch (MalformedURLException mfe) {
			}
			cbcombo2.addItem(transportes[j + 3]);
			cbcombo2.addItem(transportes[j + 4]);
			cbcombo2.addItem(transportes[j + 5]);
			opcaoCorrectaB = transportes[j + 6];

			// terceiro transporte
			numRandom3 = (int) (7.0 * Math.random()) + 1;
			while (numRandom3 == numRandom1 || numRandom3 == numRandom2) {
				numRandom3 = (int) (7.0 * Math.random()) + 1;
			}
			j = inicioArrays[numRandom3 - 1];
			categoria = transportes[j];
			caminho_imagem3 = transportes[j + 1];
			caminho_som3 = transportes[j + 2];
			try {
				Som3 = Applet.newAudioClip(new URL("file:" + caminho_som3));
			} catch (MalformedURLException mfe) {
			}
			cbcombo3.addItem(transportes[j + 3]);
			cbcombo3.addItem(transportes[j + 4]);
			cbcombo3.addItem(transportes[j + 5]);
			opcaoCorrectaC = transportes[j + 6];
		} else if (categoriaEscolhida.equalsIgnoreCase("Instrumentos")) {

			// primeiro instrumento
			numRandom1 = (int) (8.0 * Math.random()) + 1;
			j = inicioArrays[numRandom1 - 1];
			categoria = instrumentos[j];
			caminho_imagem1 = instrumentos[j + 1];
			caminho_som1 = instrumentos[j + 2];
			try {
				Som = Applet.newAudioClip(new URL("file:" + caminho_som1));
			} catch (MalformedURLException mfe) {
			}
			cbcombo.addItem(instrumentos[j + 3]);
			cbcombo.addItem(instrumentos[j + 4]);
			cbcombo.addItem(instrumentos[j + 5]);
			opcaoCorrectaA = instrumentos[j + 6];

			// segundo instrumento
			numRandom2 = (int) (8.0 * Math.random()) + 1;
			while (numRandom2 == numRandom1) {
				numRandom2 = (int) (8.0 * Math.random()) + 1;
			}
			j = inicioArrays[numRandom2 - 1];
			categoria = instrumentos[j];
			caminho_imagem2 = instrumentos[j + 1];
			caminho_som2 = instrumentos[j + 2];
			try {
				Som2 = Applet.newAudioClip(new URL("file:" + caminho_som2));
			} catch (MalformedURLException mfe) {
			}
			cbcombo2.addItem(instrumentos[j + 3]);
			cbcombo2.addItem(instrumentos[j + 4]);
			cbcombo2.addItem(instrumentos[j + 5]);
			opcaoCorrectaB = instrumentos[j + 6];

			// terceiro instrumento
			numRandom3 = (int) (8.0 * Math.random()) + 1;
			while (numRandom3 == numRandom1 || numRandom3 == numRandom2) {
				numRandom3 = (int) (8.0 * Math.random()) + 1;
			}
			j = inicioArrays[numRandom3 - 1];
			categoria = instrumentos[j];
			caminho_imagem3 = instrumentos[j + 1];
			caminho_som3 = instrumentos[j + 2];
			try {
				Som3 = Applet.newAudioClip(new URL("file:" + caminho_som3));
			} catch (MalformedURLException mfe) {
			}
			cbcombo3.addItem(instrumentos[j + 3]);
			cbcombo3.addItem(instrumentos[j + 4]);
			cbcombo3.addItem(instrumentos[j + 5]);
			opcaoCorrectaC = instrumentos[j + 6];
		}

		// colocar as imagens
		lImage1.setIcon(new ImageIcon(caminho_imagem1));
		lImage2.setIcon(new ImageIcon(caminho_imagem2));
		lImage3.setIcon(new ImageIcon(caminho_imagem3));

		// activar os componentes
		bSom.setEnabled(true);
		bSom2.setEnabled(true);
		bSom3.setEnabled(true);
		bVerificar.setEnabled(true);
		cbcombo.setEnabled(true);
		cbcombo2.setEnabled(true);
		cbcombo3.setEnabled(true);
	}

	public void verificar() {
		correctas = "";
		numeroCorrectas = 0;
		if (cbcombo.getSelectedItem().equals(opcaoCorrectaA)) {
			numeroCorrectas++;
			correctas += opcaoCorrectaA + ", ";
		}
		if (cbcombo2.getSelectedItem().equals(opcaoCorrectaB)) {
			numeroCorrectas++;
			correctas += opcaoCorrectaB + ", ";
		}
		if (cbcombo3.getSelectedItem().equals(opcaoCorrectaC)) {
			numeroCorrectas++;
			correctas += opcaoCorrectaC + ", ";
		}
		if (numeroCorrectas == 0) {
			JOptionPane.showMessageDialog(null, "Resultado: Não conseguiste acertar em nenhuma! Tenta outra vez!");
		}
		if (numeroCorrectas >= 1 && numeroCorrectas < 3) {
			JOptionPane.showMessageDialog(null, ("Resultado:Acertaste em " + numeroCorrectas + " figuras! " + correctas));
		}
		if (numeroCorrectas == 3) {
			JOptionPane.showMessageDialog(null, "Resultadoarabéns! Acertaste em todas as figuras!");
		}
	}
}

flws

E bem vinda (se não for fake) ao GUJ.

flws

Obrigada fantomas :smiley:

Mas isto continuar a não funcionar agora dá o erro: java.lang.ArrayIndexOutOfBoundsException :?

Envia teu código novamente, não se esqueça de colocar também o ficheiro (você é portuguesa?) dado.txt. Vamos ver se consigo ajudar um pouco mais.

P.S Utilize a tag code.

flws

http://rapidshare.com/files/250000593/TPFinal.rar.html

tem aqi as imagens, sons, o codigo e o ficheiro.txt

E sim sou portuguesa :slight_smile:

Obrigada pela ajuda*

Oi moça de Portugal!

Infelizmente onde estou tem um sistema de proteção que não está deixando baixar seu arquivo. :cry:

Tem como colocar em um post os 2 arquivos ( o .txt e o .java)?

[]'s

[code]import java.awt.event.;
import java.applet.
;
import java.awt.;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import javax.swing.
;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;

//criação da classe Trabalho Prático Final
public class TPFinal extends JFrame implements ActionListener {
// declaração das variáveis e objectos
private static JButton bSom, bSom2, bSom3, bVerificar;
private static JComboBox cbcombo, cbcombo2, cbcombo3;
private static JLabel lImage1, lImage2, lImage3;
private JLabel lCategoria, lCategoria2, lCategoria3;
int SizeX = 600;
int SizeY = 600;
static int numRandom1 = 0, numRandom2 = 0, numRandom3 = 0;
static String[] animais = new String[98];
static String[] transportes = new String[49];
static String[] instrumentos = new String[56];
static int inicioArrays1[] = { 0, 7, 14, 21, 28, 35, 42, 49, 56, 63, 70, 77, 84, 91 };
static int inicioArrays2[] = { 0, 7, 14, 21, 28, 35, 42 };
static int inicioArrays3[] = { 0, 7, 14, 21, 28, 35, 42, 49 };
String linha = “”;
static String categoriaEscolhida = “Animais”;
static String cbVazia = " ";
static String categoria = “”;
static String caminho_imagem1 = “”;
static String caminho_imagem2 = “”;
static String caminho_imagem3 = “”;
static String caminho_som1 = “”;
static String caminho_som2 = “”;
static String caminho_som3 = “”;
static String opcaoCorrectaA = “”;
static String opcaoCorrectaB = “”;
static String opcaoCorrectaC = “”;
String correctas = “”;
int numeroCorrectas = 0;
static int j = 0;
static AudioClip Som;
static AudioClip Som2;
static AudioClip Som3;

public TPFinal(String título) {   
    super(título);   
    JMenuBar barra = new JMenuBar();   
    setJMenuBar(barra);   
    JMenu categorias = new JMenu("Categorias");   
    JMenu opcoes = new JMenu("Opções");   
    barra.add(categorias);   
    barra.add(opcoes);   
    JMenuItem fechar = new JMenuItem("Fechar jogo");   
    fechar.addActionListener(new ActionListener() {   
        public void actionPerformed(ActionEvent arg0) {   
            dispose();   
        }   
    });   
    opcoes.add(fechar);   
    JMenuItem novoJogo = new JMenuItem("Novo jogo");   
    novoJogo.addActionListener(new ActionListener() {   
        public void actionPerformed(ActionEvent arg0) {   
            novoJogo();   
        }   
    });   
    opcoes.add(novoJogo);   
    JMenuItem ajuda = new JMenuItem("Ajuda");   
    ajuda.addActionListener(new ActionListener() {   
        public void actionPerformed(ActionEvent e) {   
            JOptionPane   
                    .showMessageDialog(   
                            null,   
                            "1 - O jogo admite apenas um jogador"   
                                    + "\n 2 - O objectivo do jogo é conseguir identificar o animal, transporte ou instrumento (dependendo da categoria escolhida) e fazê-lo corresponder a um dos nomes apresentados à frente"   
                                    + "\n 3 - A primeira fase do jogo é escolher a categoria pretendida. Poderá escolher uma de três categorias: Animais, Transportes ou Instrumentos"   
                                    + "\n 4 - Seguidamente irá iniciar o jogo"   
                                    + "\n 5 - Terá de corresponder um nome a cada imagem/som e só após a associação deverá clicar-se no botão ?Verificar?"   
                                    + "\n 6 - Se não forem associados correctamente todos os elementos presentes no jogo serão indicados os que foram falhados para que o jogador não volte a errar"   
                                    + "\n 7 - Nesse momento, poderá fechar o jogo ou iniciar um novo"   
                                    + "\n 8 - A escolha da categoria é feita na barra de menu");   
        }   
    });   
    opcoes.add(ajuda);   
    JMenuItem animais = new JMenuItem("Animais");     
    animais.addActionListener(new ActionListener() {   
        public void actionPerformed(ActionEvent arg0) {   
            categoriaEscolhida = "Animais";   
            lCategoria2.setText("Animais");   
            novoJogo();   

        }   
    });   
    categorias.add(animais);   
    JMenuItem transportes = new JMenuItem("Transportes");     
    transportes.addActionListener(new ActionListener() {   
        public void actionPerformed(ActionEvent arg0) {   
            categoriaEscolhida = "Transportes";   
            lCategoria2.setText("Transportes");   
            novoJogo();   

        }   
    });   
    
   categorias.add(transportes);   
   JMenuItem instrumentos = new JMenuItem("Instrumentos");  
   instrumentos.addActionListener(new ActionListener() {   
        public void actionPerformed(ActionEvent arg0) {   
            categoriaEscolhida = "Instrumentos";   
            lCategoria2.setText("Instrumentos");   
            novoJogo();   

        }   
    });   
    categorias.add(instrumentos);           

    // Adiciona o menu à barra de menus   
    barra.add(categorias);   
    barra.add(opcoes);   
    
    init();
}   

public static void main(String[] args) {   
    TPFinal jogo = new TPFinal("Jogo Infantil de Sandra Lourenço e Solange Gomes");   
    jogo.setSize(600, 600);   
    jogo.setVisible(true);   
}   

private void init() {   
    lCategoria = new JLabel("Categoria: ");   
    lCategoria2 = new JLabel("Animais");   
    bSom = new JButton("Som");   
    bSom2 = new JButton("Som");   
    bSom3 = new JButton("Som");   
    bVerificar = new JButton("Verificar");   
    cbcombo = new JComboBox();   
    cbcombo2 = new JComboBox();   
    cbcombo3 = new JComboBox();   

    lImage1 = new JLabel("", new ImageIcon("imagens/border.jpg"), JLabel.CENTER);   
    lImage2 = new JLabel("", new ImageIcon("imagens/border.jpg"), JLabel.CENTER);   
    lImage3 = new JLabel("", new ImageIcon("imagens/border.jpg"), JLabel.CENTER);   

    cbcombo.addItem(cbVazia);   
    cbcombo2.addItem(cbVazia);   
    cbcombo3.addItem(cbVazia);   

    setLayout(new BorderLayout());   
    JPanel pNorte = new JPanel(new FlowLayout());   
    JPanel pCentro = new JPanel(new FlowLayout());   
    JPanel pSul = new JPanel(new FlowLayout());   
    pNorte.add(lCategoria);   
    pNorte.add(lCategoria2);   
    add(pNorte, BorderLayout.NORTH);   
    pCentro.add(lImage1);   
    pCentro.add(bSom);   
    pCentro.add(cbcombo);   
    pCentro.add(lImage2);   
    pCentro.add(bSom2);   
    pCentro.add(cbcombo2);   
    pCentro.add(lImage3);   
    pCentro.add(bSom3);   
    pCentro.add(cbcombo3);   
    add(pCentro, BorderLayout.CENTER);   
    pSul.add(bVerificar);   
    add(pSul, BorderLayout.SOUTH);   
    bVerificar.addActionListener(this);   
    bSom.addActionListener(this);   
    bSom2.addActionListener(this);   
    bSom3.addActionListener(this);   
    // definir as propriedades dos componentes   
    bSom.setEnabled(false);   
    bSom2.setEnabled(false);   
    bSom3.setEnabled(false);   
    bVerificar.setEnabled(false);   
    cbcombo.setEnabled(false);   
    cbcombo2.setEnabled(false);   
    cbcombo3.setEnabled(false);   

    try {   
        File fich = new File("tpfinal.txt");   
        FileInputStream canalInputFich = new FileInputStream(fich);   
        InputStreamReader canalInput = new InputStreamReader(canalInputFich);   
        BufferedReader ficheiro = new BufferedReader(canalInput);   

        // ler o ficheiro e guardar as categorias nos arrays   
        for (int i = 0; i < 98; i++) {   
            linha = ficheiro.readLine();   
            animais[i] = linha;   
        }   

        for (int i = 0; i < 49; i++) {   
            linha = ficheiro.readLine();   
            transportes[i] = linha;   

        }   
        for (int i = 0; i < 56; i++) {   
            linha = ficheiro.readLine();   
            instrumentos[i] = linha;   

        }   
    } catch (FileNotFoundException e) {   
        JOptionPane.showMessageDialog(null, "Erro! Ficheiro dados.txt não encontrado!");   

    } catch (IOException e) {   
        JOptionPane.showMessageDialog(null, "Erro! Causa desconhecida!");   
        e.printStackTrace();   
    }   
}   

public void actionPerformed(ActionEvent ae) {   
    if (ae.getSource() == bVerificar) {   
        verificar();   
    }   
    if (ae.getSource() == bSom) {   
        Som.play();   
    }   
    if (ae.getSource() == bSom2) {   
        Som2.play();   
    }   
    if (ae.getSource() == bSom3) {   
        Som3.play();   
    }   
}   

public static void novoJogo() {   
    cbcombo.removeAllItems();   
    cbcombo2.removeAllItems();   
    cbcombo3.removeAllItems();   
    cbcombo.addItem(cbVazia);   
    cbcombo2.addItem(cbVazia);   
    cbcombo3.addItem(cbVazia);   

    if (categoriaEscolhida.equalsIgnoreCase("Animais")) {   

        // primeiro animal   
        numRandom1 = (int) (14.0 * Math.random()) + 1;   
        j = inicioArrays1[numRandom1 - 1];   
        categoria = animais[j];   
        caminho_imagem1 = animais[j + 1];   
        caminho_som1 = animais[j + 2];   
        try {   
            Som = Applet.newAudioClip(new URL("file:" + caminho_som1));   
        } catch (MalformedURLException mfe) {   
        }   
        caminho_som1 = animais[j + 2];   
        cbcombo.addItem(animais[j + 3]);   
        cbcombo.addItem(animais[j + 4]);   
        cbcombo.addItem(animais[j + 5]);   
        opcaoCorrectaA = animais[j + 6];   

        // segundo animal   
        numRandom2 = (int) (14.0 * Math.random()) + 1;   
        while (numRandom2 == numRandom1) {   
            numRandom2 = (int) (14.0 * Math.random()) + 1;   
        }   
        j = inicioArrays1[numRandom2 - 1];   
        categoria = animais[j];   
        caminho_imagem2 = animais[j + 1];   
        caminho_som2 = animais[j + 2];   
        try {   
            Som2 = Applet.newAudioClip(new URL("file:" + caminho_som2));   
        } catch (MalformedURLException mfe) {   
        }   
        cbcombo2.addItem(animais[j + 3]);   
        cbcombo2.addItem(animais[j + 4]);   
        cbcombo2.addItem(animais[j + 5]);   
        opcaoCorrectaB = animais[j + 6];   

        // terceiro animal   
        numRandom3 = (int) (14.0 * Math.random()) + 1;   
        while (numRandom3 == numRandom1 || numRandom3 == numRandom2) {   
            numRandom3 = (int) (14.0 * Math.random()) + 1;   
        }   
        j = inicioArrays1[numRandom3 - 1];   
        categoria = animais[j];   
        caminho_imagem3 = animais[j + 1];   
        caminho_som3 = animais[j + 2];   
        try {   
            Som3 = Applet.newAudioClip(new URL("file:" + caminho_som3));   
        } catch (MalformedURLException mfe) {   
        }   
        cbcombo3.addItem(animais[j + 3]);   
        cbcombo3.addItem(animais[j + 4]);   
        cbcombo3.addItem(animais[j + 5]);   
        opcaoCorrectaC = animais[j + 6];   
    } else if (categoriaEscolhida.equalsIgnoreCase("Transportes")) {   

        // primeiro transporte   
        numRandom1 = (int) (7.0 * Math.random()) + 1;   
        j = inicioArrays2[numRandom1 - 1];   
        categoria = transportes[j];   
        caminho_imagem1 = transportes[j + 1];   
        caminho_som1 = transportes[j + 2];   
        try {   
            Som = Applet.newAudioClip(new URL("file:" + caminho_som1));   
        } catch (MalformedURLException mfe) {   
        }   
        cbcombo.addItem(transportes[j + 3]);   
        cbcombo.addItem(transportes[j + 4]);   
        cbcombo.addItem(transportes[j + 5]);   
        opcaoCorrectaA = transportes[j + 6];   

        // segundo transporte   
        numRandom2 = (int) (7.0 * Math.random()) + 1;   
        while (numRandom2 == numRandom1) {   
            numRandom2 = (int) (7.0 * Math.random()) + 1;   
        }   
        j = inicioArrays2[numRandom2 - 1];   
        categoria = transportes[j];   
        caminho_imagem2 = transportes[j + 1];   
        caminho_som2 = transportes[j + 2];   
        try {   
            Som2 = Applet.newAudioClip(new URL("file:" + caminho_som2));   
        } catch (MalformedURLException mfe) {   
        }   
        cbcombo2.addItem(transportes[j + 3]);   
        cbcombo2.addItem(transportes[j + 4]);   
        cbcombo2.addItem(transportes[j + 5]);   
        opcaoCorrectaB = transportes[j + 6];   

        // terceiro transporte   
        numRandom3 = (int) (7.0 * Math.random()) + 1;   
        while (numRandom3 == numRandom1 || numRandom3 == numRandom2) {   
            numRandom3 = (int) (7.0 * Math.random()) + 1;   
        }   
        j = inicioArrays2[numRandom3 - 1];   
        categoria = transportes[j];   
        caminho_imagem3 = transportes[j + 1];   
        caminho_som3 = transportes[j + 2];   
        try {   
            Som3 = Applet.newAudioClip(new URL("file:" + caminho_som3));   
        } catch (MalformedURLException mfe) {   
        }   
        cbcombo3.addItem(transportes[j + 3]);   
        cbcombo3.addItem(transportes[j + 4]);   
        cbcombo3.addItem(transportes[j + 5]);   
        opcaoCorrectaC = transportes[j + 6];   
    } else if (categoriaEscolhida.equalsIgnoreCase("Instrumentos")) {   

        // primeiro instrumento   
        numRandom1 = (int) (8.0 * Math.random()) + 1;   
        j = inicioArrays3[numRandom1 - 1];   
        categoria = instrumentos[j];   
        caminho_imagem1 = instrumentos[j + 1];   
        caminho_som1 = instrumentos[j + 2];   
        try {   
            Som = Applet.newAudioClip(new URL("file:" + caminho_som1));   
        } catch (MalformedURLException mfe) {   
        }   
        cbcombo.addItem(instrumentos[j + 3]);   
        cbcombo.addItem(instrumentos[j + 4]);   
        cbcombo.addItem(instrumentos[j + 5]);   
        opcaoCorrectaA = instrumentos[j + 6];   

        // segundo instrumento   
        numRandom2 = (int) (8.0 * Math.random()) + 1;   
        while (numRandom2 == numRandom1) {   
            numRandom2 = (int) (8.0 * Math.random()) + 1;   
        }   
        j = inicioArrays3[numRandom2 - 1];   
        categoria = instrumentos[j];   
        caminho_imagem2 = instrumentos[j + 1];   
        caminho_som2 = instrumentos[j + 2];   
        try {   
            Som2 = Applet.newAudioClip(new URL("file:" + caminho_som2));   
        } catch (MalformedURLException mfe) {   
        }   
        cbcombo2.addItem(instrumentos[j + 3]);   
        cbcombo2.addItem(instrumentos[j + 4]);   
        cbcombo2.addItem(instrumentos[j + 5]);   
        opcaoCorrectaB = instrumentos[j + 6];   

        // terceiro instrumento   
        numRandom3 = (int) (8.0 * Math.random()) + 1;   
        while (numRandom3 == numRandom1 || numRandom3 == numRandom2) {   
            numRandom3 = (int) (8.0 * Math.random()) + 1;   
        }   
        j = inicioArrays3[numRandom3 - 1];   
        categoria = instrumentos[j];   
        caminho_imagem3 = instrumentos[j + 1];   
        caminho_som3 = instrumentos[j + 2];   
        try {   
            Som3 = Applet.newAudioClip(new URL("file:" + caminho_som3));   
        } catch (MalformedURLException mfe) {   
        }   
        cbcombo3.addItem(instrumentos[j + 3]);   
        cbcombo3.addItem(instrumentos[j + 4]);   
        cbcombo3.addItem(instrumentos[j + 5]);   
        opcaoCorrectaC = instrumentos[j + 6];   
    }   

    // colocar as imagens   
    lImage1.setIcon(new ImageIcon(caminho_imagem1));   
    lImage2.setIcon(new ImageIcon(caminho_imagem2));   
    lImage3.setIcon(new ImageIcon(caminho_imagem3));   

    // activar os componentes   
    bSom.setEnabled(true);   
    bSom2.setEnabled(true);   
    bSom3.setEnabled(true);   
    bVerificar.setEnabled(true);   
    cbcombo.setEnabled(true);   
    cbcombo2.setEnabled(true);   
    cbcombo3.setEnabled(true);   
}   

public void verificar() {   
    correctas = "";   
    numeroCorrectas = 0;   
    if (cbcombo.getSelectedItem().equals(opcaoCorrectaA)) {   
        numeroCorrectas++;   
        correctas += opcaoCorrectaA + ", ";   
    }   
    if (cbcombo2.getSelectedItem().equals(opcaoCorrectaB)) {   
        numeroCorrectas++;   
        correctas += opcaoCorrectaB + ", ";   
    }   
    if (cbcombo3.getSelectedItem().equals(opcaoCorrectaC)) {   
        numeroCorrectas++;   
        correctas += opcaoCorrectaC + ", ";   
    }   
    if (numeroCorrectas == 0) {   
        JOptionPane.showMessageDialog(null, "Resultado: Não conseguiste acertar em nenhuma! Tenta outra vez!");   
    }   
    if (numeroCorrectas >= 1 && numeroCorrectas < 3) {   
        JOptionPane.showMessageDialog(null, ("Resultado:Acertaste em " + numeroCorrectas + " figuras! " + correctas));   
    }   
    if (numeroCorrectas == 3) {   
        JOptionPane.showMessageDialog(null, "Resultado: Parabéns! Acertaste em todas as figuras!");   
    }   
}   

} [/code]

ficheiro .txt

animais
imagens/cao.jpg
sons/cao.wav
cão
cavalo
elefante
cão
animais
imagens/cavalo.jpg
sons/cavalo.wav
elefante
cavalo
galo
cavalo
animais
imagens/elefante.jpg
sons/elefante.wav
galo
gato
elefante
elefante
animais
imagens/galo.jpg
sons/galowav
gato
galo
leao
galo
animais
imagens/gato.jpg
sons/gato.wav
gato
leao
macaco
gato
animais
imagens/leaojpg
sons/leao.wav
macaco
leao
mosquito
leao
animais
imagens/macaco.jpg
sons/macaco.wav
mosquito
orca
macaco
macaco
animais
imagens/mosquito.jpg
sons/mosquito.wav
orca
mosquito
passaro
mosquito
animais
imagens/orca.jpg
sons/orca.wav
orca
passaro
pato
orca
animais
imagens/passaro.jpg
sons/passaro.wav
pato
passaro
porco
passaro
animais
imagens/pato.jpg
sons/pato.wav
porco
tigre
pato
pato
animais
imagens/porco.jpg
sons/porco.wav
tigre
porco
vaca
porco
animais
imagens/tigre.jpg
sons/tigre.wav
tigre
vaca
cao
tigre
animais
imagens/vaca.jpg
sons/vaca.wav
cao
vaca
cavalo
vaca
transportes
imagens/ambulancia.jpg
sons/ambulancia.wav
ambulancia
bicicleta
carro
ambulancia
transportes
imagens/bicicleta.jpg
sons/bicicleta.wav
carro
bicicleta
carro_policia
bicicleta
transportes
imagens/carro.jpg
sons/carro.wav
carro_policia
comboio
carro
carro
transportes
imagens/carro_policia.jpg
sons/carro_policia.wav
comboio
carro policia
heliptero
carro policia
transportes
imagens/comboio.jpg
sons/comboio.wav
comboio
mota
helicoptero
comboio
transportes
imagens/helicoptero.jpg
sons/helicoptero.wav
mota
heliptero
ambulancia
helicoptero
transportes
imagens/mota.jpg
sons/mota.wav
ambulancia
bicicleta
mota
mota
instrumentos
imagens/flauta.jpg
sons/flauta.wav
flauta
gongo oriental
guitarra
flauta
instrumentos
imagens/gongo_oriental.jpg
sons/gongo_oriental.wav
guitarra
gongo oriental
guitara electrica
gongo oriental
instrumentos
imagens/guitarra.jpg
sons/guitarra.wav
guitarra electrica
piano
guitarra
guitarra
instrumentos
imagens/guitarra_electrica.jpg
sons/guitarra_electrica.wav
piano
guitarra electrica
trumpetes
guitarra electrica
instrumentos
imagens/piano.jpg
sons/piano.wav
piano
trumpetes
violino
piano
instrumentos
imagens/trumpetes.jpg
sons/trumpetes.wav
violino
trumpetes
xilofone
trumpetes
instrumentos
imagens/violino.jpg
sons/violino.wav
xilofone
flauta
gongo oriental
violino
violino
instrumentos
imagens/xilofone.jpg
sons/xilofone.wav
gongo oriental
xilofone
guitarra
xilofone

E mais uma vez obrigada :slight_smile:

Que erro está ocorrendo agora?

Fiz alguns testes rápidos e não vi exceptions.

Por um acaso está tudo certo agora?

[]'s

Agora não aparecem as imagens e alguns sons … =S
Dos animais não funciona nenhum som…
Dos transportes não funcionam 2 …
Dos instrumentos funcionam todos…

Mas em nenhum aparecem imagens …

Estou destinada ao desespero !

Você tem algumas partes de código iguais a esta:

try { Som = Applet.newAudioClip(new URL("file:" + caminho_som1)); } catch (MalformedURLException mfe) { }

Inclua uma linha para mostar a stacktrace assim:

try { Som = Applet.newAudioClip(new URL("file:" + caminho_som1)); } catch (MalformedURLException mfe) { mfe.printStackTrace(); }

Talvez esteja ocorrendo erros em alguns casos e você não está vendo a pilha do erro.

Sobre as imagens, verifique se elas estão realmente no local esperado.

Se estiverem lá tente este teste:

Image m = Toolkit.getDefaultToolkit().getImage(TPFinal.class.getResource("/imagens/border.jpg")); ImageIcon img = new ImageIcon(m);

Se não der certo tente este aqui:

Image m = Toolkit.getDefaultToolkit().getImage(TPFinal.class.getResource("imagens/border.jpg")); ImageIcon img = new ImageIcon(m);

Obs. Retirei a barra no path da imagem.

Fora estas dicas, tem mais esta: Tente utilizar o debugger no método novoJogo para ver se os dados selecionados estão corretos. Verifique tambem se os dados do ficheiro estão realmente como você espera.

[]'s