URGENTE Erro - java.lang.NullPointerException

12 respostas
S

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

import java.awt.event.<em>;

import java.applet.</em>;

import java.awt.<em>;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import javax.swing.</em>;

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!

12 Respostas

fantomas

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

fantomas

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

flws

S

Obrigada fantomas :smiley:

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

fantomas

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

S

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*

fantomas

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

S
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!");   
        }   
    }   
}
S

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

S

E mais uma vez obrigada :slight_smile:

fantomas

Que erro está ocorrendo agora?

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

Por um acaso está tudo certo agora?

[]'s

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 !

fantomas

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

Criado 29 de junho de 2009
Ultima resposta 29 de jun. de 2009
Respostas 12
Participantes 2