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, botów: 0