Milionerzy. Dźwięk w tle.

0

Witajcie. To mój pierwszy post i jestem początkującym programistą więc proszę o wyrozumiałość :)

Mam pewien problem. Napisałem sobie prostą grę milionerów. Program działa w AWT. Chciałem dodać sobie dźwięki. Ładnie wszystko działa prócz dźwięku w tle. Po kilku pytaniach ten dźwięk w tle zatrzymuje się. Wie ktoś może czym jest to spowodowane ? Proszę o pomoc :)

Kod

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.applet.Applet;
import java.applet.AudioClip;
import java.net.URL;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

class Milionerzy extends Frame implements WindowListener , MouseListener , KeyListener , ActionListener
{
	Button podpA = new Button("A: ");
	Button podpB = new Button("B: ");
	Button podpC = new Button("C: ");
	Button podpD = new Button("D: ");
	Label pytanie = new Label();
	Label kwoty[] = new Label[12];
	String pytania[] , odpA[] , odpB[] , odpC[] , odpD[];
	int odpPrawidlowe[];
	int los , licznik = 0 , numerPytania = 0;
	String imie;
	
	public static void main(String arg[])
	{
		new Milionerzy();
	}
	
	public Milionerzy()
	{
	//	imie = JOptionPane.showInputDialog("Jak masz na imie ?");
		setTitle("Milionerzy");
		addWindowListener(this);
		setSize(1100 , 500);
		setLayout(null);
		setResizable(false);

		podpA.setBounds(50 , 400 , 200 , 50);
		podpB.setBounds(250 , 400 , 200 , 50);
		podpC.setBounds(450 , 400 , 200 , 50);
		podpD.setBounds(650 , 400 , 200 , 50);
		
		podpA.addActionListener(this);
		podpB.addActionListener(this);
		podpC.addActionListener(this);
		podpD.addActionListener(this);
		
		pytanie.setBounds(100 , 100 , 700 , 200);
		pytanie.setBackground(Color.yellow);
		pytanie.setFont(new Font("Arial" , Font.PLAIN , 20));
		
		int j = 20;
		for(int i = 0 ; i < 12 ; i++)
		{
			j = j + 20;
			kwoty[i] = new Label();
			kwoty[i].setBounds(850 , 100 + j , 150 , 20);
			this.add(kwoty[i]);
		}
		
		this.add(podpA);
		this.add(podpB);
		this.add(podpC);
		this.add(podpD);
		this.add(pytanie);
		
		czyszczenieTablic();
		odczyt();
		ustawKwoty();
		kwoty[10].setBackground(Color.red);
		wyswietlPytanie();
		Tlo WTlo = new Tlo();
		Thread tlo = new Thread(WTlo);
		tlo.start();

		setVisible(true);
	}
	
	public void actionPerformed(ActionEvent e)
	{
		Object o = e.getSource();
		
		if (o == podpA)
		{
			zaznaczenie("A");
			if (odpPrawidlowe[los] == 1) odpPrawidlowa("A"); else odpZla("A");
			sleep(2000);
			wyswietlPytanie();
		}
		
		if (o == podpB)
		{
			zaznaczenie("B");
			if (odpPrawidlowe[los] == 2) odpPrawidlowa("B"); else odpZla("B");
			sleep(2000);
			wyswietlPytanie();
		}
		
		if (o == podpC)
		{
			zaznaczenie("C");
			if (odpPrawidlowe[los] == 3) odpPrawidlowa("C"); else odpZla("C");
			sleep(2000);
			wyswietlPytanie();
		}
		
		if (o == podpD)
		{
			zaznaczenie("D");
			if (odpPrawidlowe[los] == 4) odpPrawidlowa("D"); else odpZla("D");
			sleep(2000);
			wyswietlPytanie();
		}
	}
	
	public void paint(Graphics g){}
	public void windowClosed(WindowEvent e){}
	public void windowOpened(WindowEvent e){}
	public void windowIconified(WindowEvent e){}
	public void windowDeiconified(WindowEvent e){}
	public void windowActivated(WindowEvent e){}
	public void windowDeactivated(WindowEvent e){}
	public void mouseEntered(MouseEvent e){}
	public void mouseExited(MouseEvent e){}
	public void mouseReleased(MouseEvent e){}
	public void mouseMoved(MouseEvent e){}
	public void mouseDragged(MouseEvent e){}
	public void mousePressed(MouseEvent e){}
	public void keyReleased(KeyEvent e){}
	public void keyTyped(KeyEvent e){}
	
	public void windowClosing (WindowEvent e)
	{
		koniec();
	}
	
	public void mouseClicked(MouseEvent e){}
	public void keyPressed(KeyEvent e){}
	
	void koniec()
	{
		sound("blad");
		int koniec = JOptionPane.NO_OPTION;
		koniec = JOptionPane.showConfirmDialog(null , "Czy napewno chcesz wysjsc z gry ?" , "Koniec" , JOptionPane.YES_NO_OPTION);
		if (koniec == JOptionPane.YES_OPTION) System.exit(0);
	}
	
	void odczyt()
	{
		try
		{
			Scanner fpytania = new Scanner(new File("data/pytania.txt"));
			String text;
			for(int i = 0 ; i < 100 ; i++)
			{
				pytania[i] = fpytania.nextLine();
				odpA[i] = fpytania.nextLine();
				odpB[i] = fpytania.nextLine();
				odpC[i] = fpytania.nextLine();
				odpD[i] = fpytania.nextLine();
				odpPrawidlowe[i] = Integer.parseInt(fpytania.nextLine());
				licznik++;
				if (pytania[i] == "") break;
			}
			fpytania.close();
		}
		catch(Exception q)
		{
			System.out.println(q);
		}
	}
	
	void czyszczenieTablic()
	{
		this.numerPytania = 0;
		this.pytania = new String[100];
		this.odpA = new String[100];
		this.odpB = new String[100];
		this.odpC = new String[100];
		this.odpD = new String[100];
		this.odpPrawidlowe = new int[100];
		for(int i = 0 ; i < 100 ; i++)
		{
			this.pytania[i] = "";
			this.odpA[i] = "";
			this.odpB[i] = "";
			this.odpC[i] = "";
			this.odpD[i] = "";
			this.odpPrawidlowe[i] = 0;
		}
	}
	
	void wyswietlPytanie()
	{
		podpA.setBackground(Color.white);
		podpB.setBackground(Color.white);
		podpC.setBackground(Color.white);
		podpD.setBackground(Color.white);
		los = (int)(Math.random() * (licznik - 1) + 1);
		pytanie.setText(pytania[los]);
		System.out.println("\nlicznik: " + licznik + "\nlos: " + los + "\nodppraw: " + odpPrawidlowe[los] + "\nnrpytania: " + numerPytania);
		podpA.setLabel("A: " + odpA[los]);
		podpB.setLabel("B: " + odpB[los]);
		podpC.setLabel("C: " + odpC[los]);
		podpD.setLabel("D: " + odpD[los]);
	}
	
	void ustawKwoty()
	{
		kwoty[0].setText("1 MILION ZL");
		kwoty[1].setText("  500 000 ZL");
		kwoty[2].setText("  250 000 ZL");
		kwoty[3].setText("  125 000 ZL");
		kwoty[4].setText("    75 000 ZL");
		kwoty[5].setText("    40 000 ZL");
		kwoty[6].setText("    20 000 ZL");
		kwoty[7].setText("    10 000 ZL");
		kwoty[8].setText("      5 000 ZL");
		kwoty[9].setText("      2 000 ZL");
		kwoty[10].setText("      1 000 ZL");
		kwoty[11].setText("         500 ZL");
	}
	
	void zaznaczenie(String jakaOdp)
	{
		Zaznaczenie WZaznaczenie = new Zaznaczenie();
		Thread zaznaczenie = new Thread(WZaznaczenie);
		zaznaczenie.start();
		if (jakaOdp == "A") podpA.setBackground(Color.blue);
		if (jakaOdp == "B") podpB.setBackground(Color.blue);
		if (jakaOdp == "C") podpC.setBackground(Color.blue);
		if (jakaOdp == "D") podpD.setBackground(Color.blue);
		sleep(2000);
		zaznaczenie.stop();
	}
	
	void odpPrawidlowa(String jakaOdp)
	{
		DobraOdpowiedz WDobraOdpowiedz = new DobraOdpowiedz();
		Thread dobraOdpowiedz = new Thread(WDobraOdpowiedz);
		dobraOdpowiedz.start();
		numerPytania++;
		if (jakaOdp == "A") podpA.setBackground(Color.green);
		if (jakaOdp == "B") podpB.setBackground(Color.green);
		if (jakaOdp == "C") podpC.setBackground(Color.green);
		if (jakaOdp == "D") podpD.setBackground(Color.green);
		zamalujKwoty();
	}
	
	void odpZla(String jakaOdp)
	{
		ZlaOdpowiedz WZlaOdpowiedz = new ZlaOdpowiedz();
		Thread zlaOdpowiedz = new Thread(WZlaOdpowiedz);
		zlaOdpowiedz.start();
		if (jakaOdp == "A") podpA.setBackground(Color.red);
		if (jakaOdp == "B") podpB.setBackground(Color.red);
		if (jakaOdp == "C") podpC.setBackground(Color.red);
		if (jakaOdp == "D") podpD.setBackground(Color.red);
		if (odpPrawidlowe[los] == 1) podpA.setBackground(Color.green);
		if (odpPrawidlowe[los] == 2) podpB.setBackground(Color.green);
		if (odpPrawidlowe[los] == 3) podpC.setBackground(Color.green);
		if (odpPrawidlowe[los] == 4) podpD.setBackground(Color.green);
	}
	
	void zamalujKwoty()
	{
		if (numerPytania == 1) kwoty[11].setBackground(Color.yellow);
		if (numerPytania == 2) {kwoty[10].setBackground(Color.yellow); kwoty[11].setBackground(Color.white);}
		if (numerPytania == 3) {kwoty[9].setBackground(Color.yellow); kwoty[10].setBackground(Color.red);}
		if (numerPytania == 4) {kwoty[8].setBackground(Color.yellow); kwoty[9].setBackground(Color.white);}
		if (numerPytania == 5) {kwoty[7].setBackground(Color.yellow); kwoty[8].setBackground(Color.white);}
		if (numerPytania == 6) {kwoty[6].setBackground(Color.yellow); kwoty[7].setBackground(Color.white);}
		if (numerPytania == 7) {kwoty[5].setBackground(Color.yellow); kwoty[6].setBackground(Color.white);}
		if (numerPytania == 8) {kwoty[4].setBackground(Color.yellow); kwoty[5].setBackground(Color.white);}
		if (numerPytania == 9) {kwoty[3].setBackground(Color.yellow); kwoty[4].setBackground(Color.white);}
		if (numerPytania == 10) {kwoty[2].setBackground(Color.yellow); kwoty[3].setBackground(Color.white);}
		if (numerPytania == 11) {kwoty[1].setBackground(Color.yellow); kwoty[2].setBackground(Color.white);}
		if (numerPytania == 12) {kwoty[0].setBackground(Color.yellow); kwoty[1].setBackground(Color.white);}
	}
	
	void sleep(int ile)
	{
		try
		{
			Thread.sleep(ile);
		} 		
		catch(Exception q)
		{
			System.out.println(q);
		}
	}
	
	void sound(String co)
	{
		try
		{
			AudioClip blad = Applet.newAudioClip(new URL("file:data/blad.wav"));
			if (co == "blad") blad.play();
		}
		catch(Exception q) {}
	}
}

class Tlo implements Runnable
{	
	public void run()
	{
		try
		{
			AudioClip tlo1 = Applet.newAudioClip(new URL("file:data/tlo1.wav"));
			AudioClip tlo2 = Applet.newAudioClip(new URL("file:data/tlo2.wav"));
			int x = (int)(Math.random()*(2) + 1);
			if (x == 1) tlo1.loop();
			if (x == 2) tlo2.loop();
		}
		catch(Exception q)
		{
			System.out.println(q);
		}
		
	}
}

class DobraOdpowiedz implements Runnable
{	
	public void run()
	{
		try
		{
			AudioClip dobraodpowiedz1 = Applet.newAudioClip(new URL("file:data/dobraodpowiedz1.wav"));
			AudioClip dobraodpowiedz2 = Applet.newAudioClip(new URL("file:data/dobraodpowiedz2.wav"));
			AudioClip dobraodpowiedz3 = Applet.newAudioClip(new URL("file:data/dobraodpowiedz3.wav"));
			
			int x = (int)(Math.random()*(3) + 1);
			if (x == 1) dobraodpowiedz1.play();
			if (x == 2) dobraodpowiedz2.play();
			if (x == 3) dobraodpowiedz2.play();
		}
		catch(Exception q)
		{
			System.out.println(q);
		}
		
	}
}

class ZlaOdpowiedz implements Runnable
{	
	public void run()
	{
		try
		{
			AudioClip zlaodpowiedz1 = Applet.newAudioClip(new URL("file:data/zlaodpowiedz1.wav"));
			zlaodpowiedz1.play();
		}
		catch(Exception q)
		{
			System.out.println(q);
		}
		
	}
}

class Zaznaczenie implements Runnable
{	
	public void run()
	{
		try
		{
			AudioClip zaznaczenie = Applet.newAudioClip(new URL("file:data/zaznaczenie.wav"));
			zaznaczenie.play();
			
		}
		catch(Exception q)
		{
			System.out.println(q);
		}
		
	}
}

Folder data http://www.speedyshare.com/kzW33/data.rar
Z góry dziękuję za pomoc.

0

Odświeżam

0

Problem rozwiązany. Bardzo dziękuje za pomoc C****

0

można jakoś przerobić kod tak aby działał w pascalu ?

0

Nie przerabiaj tego kodu, bo to katastrofa.

0

a da rade ktoś to zrobić w pascalu oczywiście za opłata

0

Szansa na to, że do działu Java zajrzy ktoś mający ochotę na pisanie w Pascalu jest raczej zerowa. Załóż nowy wątek w dziale Ogłoszenia drobne i umieść w treści link do tego wątku.

1 użytkowników online, w tym zalogowanych: 0, gości: 1