[Java] Dźwięk w tle zostaje zatrzymywany.
Witajcie. 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()
{
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
= new Label();
kwoty.setBounds(850 , 100 + j , 150 , 20);
this.add(kwoty);
}
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 = fpytania.nextLine();
odpA = fpytania.nextLine();
odpB = fpytania.nextLine();
odpC = fpytania.nextLine();
odpD = fpytania.nextLine();
odpPrawidlowe = Integer.parseInt(fpytania.nextLine());
licznik++;
if (pytania == "") 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 = "";
this.odpA = "";
this.odpB = "";
this.odpC = "";
this.odpD = "";
this.odpPrawidlowe = 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.