# Sound in Java Spiel



## lucabo (9. Apr 2019)

Vor ab Ich bin lernender Schüler und brauche bei meinem Spiel etwas Hilfe.

Mein Programmiertes Spiel (siehe Datei) geht um einen 1vs1 Shooter. Ich möchte einen Sound einfügen sobal das Projektil die Waffe verlässt. wie Funktioniert das ?

LG Luca
und vielen dank im Voraus!


```
import GLOOP.*;
/**
 * @author
 * @version
 */
public class Figur
{
     GLKugel derKopf;
     GLTastatur dieTastatur;
     GLZylinder dasProjektil, diePistole1, dieBrust,dasBein1,dasBein2,derArm1,derArm2;
     Figur player1, player2;
     GLVektor schnell,normal;
     GLQuader dieInsel;

    public Figur()
    {
        derKopf   = new GLKugel (0,200,0,35);
        derKopf.setzeFarbe(0,0,0);
        
        dieBrust  = new GLZylinder(0,120,0,55,30);
        dieBrust.setzeFarbe(0,0,0);
        
        dasBein1  = new GLZylinder(-30,40,0,20,75);
        dasBein1.setzeDrehung(-80,0,0);
        dasBein2  = new GLZylinder(30,40,0,20,75);
        dasBein2.setzeDrehung(80,0,0);
        dasBein2.setzeFarbe(0,0,0);
        dasBein1.setzeFarbe(0,0,0);
        
        
        derArm1 = new GLZylinder(70,120,0,15,70);
        derArm1.setzeDrehung(80,0,0);
        derArm2 = new GLZylinder(-70,120,0,15,70);
        derArm2.setzeDrehung(50,0,0);
        derArm1.setzeFarbe(0,0,0);
        derArm2.setzeFarbe(0,0,0);
        
        diePistole1 = new GLZylinder(-70,110,30,10,50);
        diePistole1.setzeFarbe(5,0,0);
        
        dasProjektil = new GLZylinder(-70,110,30,10,25);
        dasProjektil.setzeDrehung(0,0,0);
        
        schnell = new GLVektor(0,-1,0);
        normal = new GLVektor(0,-1,0);                   
    }
    
    public void links(){
        derKopf.verschiebe(3,0,0);
        
        dasBein1.verschiebe(3,0,0);
        dasBein2.verschiebe(3,0,0);
        
        derArm1.verschiebe(3,0,0);
        derArm2.verschiebe(3,0,0);
        
        dieBrust.verschiebe(3,0,0);
        
        diePistole1.verschiebe(3,0,0);       
        dasProjektil.verschiebe(3,0,0);
        
    }
    
    public void rechts(){
        derKopf.verschiebe(-3,0,0);
        
        dasBein1.verschiebe(-3,0,0);
        dasBein2.verschiebe(-3,0,0);
        
        derArm1.verschiebe(-3,0,0);
        derArm2.verschiebe(-3,0,0);
        
        dieBrust.verschiebe(-3,0,0);
        
        diePistole1.verschiebe(-3,0,0);       
        dasProjektil.verschiebe(-3,0,0);
        
    }
    
    public void vorne(){
        derKopf.verschiebe(0,0,4);
        
        dasBein1.verschiebe(0,0,4);
        dasBein2.verschiebe(0,0,4);
        
        derArm1.verschiebe(0,0,4);
        derArm2.verschiebe(0,0,4);
        
        dieBrust.verschiebe(0,0,4);
        
        diePistole1.verschiebe(0,0,4);       
        dasProjektil.verschiebe(0,0,4);
        
    }
    
    public void hinten(){
        derKopf.verschiebe(0,0,-4);
        
        dasBein1.verschiebe(0,0,-4);
        dasBein2.verschiebe(0,0,-4);
        
        derArm1.verschiebe(0,0,-4);
        derArm2.verschiebe(0,0,-4);
        
        dieBrust.verschiebe(0,0,-4);
        
        diePistole1.verschiebe(0,0,-4);       
        dasProjektil.verschiebe(0,0,-4);
        
    }
    
    public void A(){
      
        derKopf.verschiebe(3,0,0);
        
        dasBein1.verschiebe(3,0,0);
        dasBein2.verschiebe(3,0,0);
        
        derArm1.verschiebe(3,0,0);
        derArm2.verschiebe(3,0,0);
        
        dieBrust.verschiebe(3,0,0);
        
        diePistole1.verschiebe(3,0,0);
        
        dasProjektil.verschiebe(3,0,0);       
        dasProjektil.verschiebe(3,0,0);
        
    }
    
    public void d(){
        derKopf.verschiebe(3,0,0);
        
        dasBein1.verschiebe(3,0,0);
        
        dasBein2.verschiebe(3,0,0);
        
        
        derArm1.verschiebe(3,0,0);
        
        derArm2.verschiebe(3,0,0);
        
        dieBrust.verschiebe(3,0,0);
        
        diePistole1.verschiebe(3,0,0);       
        dasProjektil.verschiebe(3,0,0);
        
    }
    
    public void w(){
        derKopf.verschiebe(0,0,-4);
        
        dasBein1.verschiebe(0,0,-4);
        dasBein2.verschiebe(0,0,-4);
        
        derArm1.verschiebe(0,0,-4);
        derArm2.verschiebe(0,0,-4);
        
        dieBrust.verschiebe(0,0,-4);
        
        diePistole1.verschiebe(0,0,-4);       
        dasProjektil.verschiebe(0,0,-4);
        
    }
    
    public void s(){
        derKopf.verschiebe(0,0,4);
        
        dasBein1.verschiebe(0,0,4);
        dasBein2.verschiebe(0,0,4);
        
        derArm1.verschiebe(0,0,4);
        derArm2.verschiebe(0,0,4);
        
        dieBrust.verschiebe(0,0,4);
        
        diePistole1.verschiebe(0,0,4);       
        dasProjektil.verschiebe(0,0,4);
        
    }
    
    public void start(){
      
        derKopf.setzeDrehung(180,0,0);
        derKopf.setzePosition(0,620,1900);
        
        derArm1.setzeDrehung(70,150,0);
        derArm1.setzePosition(50,550,1890);
        
        derArm2.setzeDrehung(-70,0,0);
        derArm2.setzePosition(-60,550,1890);
        
        dasBein1.setzeDrehung(80,0,0);
        dasBein1.setzePosition(40,460,1900);
        
        dasBein2.setzeDrehung(-80,0,0);
        dasBein2.setzePosition(-40,460,1900);
        
        dieBrust.setzeDrehung(180,00,0);
        dieBrust.setzePosition(0,540,1900);
        
        diePistole1.setzeDrehung(180,0,0);
        diePistole1.setzePosition(50,530,1860);
      
        dasProjektil.setzeDrehung(180,0,0);
        dasProjektil.setzePosition(50,530,1880);
        
    }
    
   public void start2(){     
        derKopf.setzePosition(0,620,-1000);
        
        derArm1.setzePosition(60,550,-1000);
        
        derArm2.setzePosition(-60,550,-1000);
        
        dasBein1.setzeDrehung(-80,460,0);
        dasBein1.setzePosition(30,460,-1000);
        
        dasBein2.setzePosition(-30,460,-1000);
        
        dieBrust.setzePosition(0,540,-1000);
              
        diePistole1.setzePosition(70,530,-975);
      
        dasProjektil.setzePosition(70,530,-975);
        
    }
    
    public void schuss(){     
        dasProjektil.verschiebe(0,0,40); 
    }
          
     public void schuss2(){           
            dasProjektil.verschiebe(0,0,-40);     
    }
    
    
    public void sprung1(){
          derKopf.verschiebe(0,1,00);
        
        dasBein1.verschiebe(0,1,0);
        dasBein2.verschiebe(0,1,0);
        
        derArm1.verschiebe(0,1,0);
        derArm2.verschiebe(0,1,0);
        
        dieBrust.verschiebe(0,1,0);
        
        diePistole1.verschiebe(0,1,0);       
        dasProjektil.verschiebe(0,1,0);
        
    }
    
   public void sprung2(){
          derKopf.verschiebe(0,0.5,00);
        
        dasBein1.verschiebe(0,0.5,0);
        dasBein2.verschiebe(0,0.5,0);
        
        derArm1.verschiebe(0,0.5,0);
        derArm2.verschiebe(0,0.5,0);
        
        dieBrust.verschiebe(0,0.5,0);
        
        diePistole1.verschiebe(0,0.5,0);       
        dasProjektil.verschiebe(0,0.5,0);
        
    }
    
    
    public double dasProjektilZ(){
        return dasProjektil.gibZ();
    }
    
    public GLVektor gibPosition()
    {
        return
        player1.gibPosition();
        
    }

    public double gibX()
    {
        return player1.gibX();         
    }

    public double gibY()
    {
        return player1.gibY();
    }

    public double gibZ()
    {
        return player1.gibZ();
    }

    
    public void zurueckehren()
    {
          dasProjektil.setzePosition(diePistole1.gibX(),diePistole1.gibY(),diePistole1.gibZ());
        }
        
    
    
    
    
  
    }
```


```
import GLOOP.*;

public class Spiel{
    GLTastatur dieTastatur;
    GLKamera dieKamera;
    GLLicht dasLicht;

    GLHimmel derHimmel;
    GLBoden derBoden;
    GLNebel derNebel;
    GLTextur texHintergrund;
    GLQuader dieInsel;
    
    
    Figur player1, player2;
    GLZylinder dasProjektil;
    
    

    public Spiel()
    {
        dieKamera  = new  GLSchwenkkamera();       
        
        
        dieKamera.setzePosition(-500,500,700);
        dasLicht = new GLLicht();
        dieTastatur = new GLTastatur();
        derHimmel = new GLHimmel("himmel.jpg");   
        //derNebel = new GLNebel();
      
        
        dieInsel = new GLQuader (200,370,600,3500,100,3500);
        dieInsel.setzeFarbe(10, 10,0);
              
        texHintergrund = new GLTextur("lava.jpg");
        derBoden  = new GLBoden (texHintergrund);             
          
        player1 = new Figur();
        player2 = new Figur();

        action();
    }

    
    public void action()
    
    {
        
        
        while (!dieTastatur.esc()){
            
            //player1
            if(dieTastatur.links())
            {
                player1.links();
                
            }
                      
             if(dieTastatur.rechts())
            {
                player1.rechts();
            }
                      
             if(dieTastatur.oben())
            {
                player1.vorne();
            }
                      
             if(dieTastatur.unten())
            {
                player1.hinten();
            }
              
            //player2
             if(dieTastatur.istGedrueckt('a'))
            {
                player2.links();
                
            }
                      
            if(dieTastatur.istGedrueckt('d'))
            {
                player2.rechts();
            }
              
            if(dieTastatur.istGedrueckt('w'))
            {
                player2.vorne();
            }
                                  
            if(dieTastatur.istGedrueckt('s'))
            {
                player2.hinten();
            }
            
            if(dieTastatur.istGedrueckt('p'))
            {
                player2.start();
                player1.start2();
            }
            
            //schuesse
            if(dieTastatur.istGedrueckt('m'))
            {
                if(player1.dasProjektilZ() > 4500)
                {
                    player1.zurueckehren();
                    Sys.warte(15);
                }
                              
                player1.schuss();
                
            }
            
             if(dieTastatur.istGedrueckt('f'))
            {
                if(player2.dasProjektilZ() < -4000)
                {
                    player2.zurueckehren();
                    Sys.warte(15);
                }
                player2.schuss2();
            }
            
            
            Sys.warte(5);
        }

    }
}
```


----------



## Robat (9. Apr 2019)

Zum Bleistift wie hier


----------



## mrBrown (9. Apr 2019)

lucabo hat gesagt.:


> Ich bin lernender Schüler


Sind wir das nicht alle irgendwie?


----------



## mihe7 (9. Apr 2019)

mrBrown hat gesagt.:


> Sind wir das nicht alle irgendwie?


Kommt darauf an, was Du freitags machst...


----------



## mrBrown (10. Apr 2019)

mihe7 hat gesagt.:


> Kommt darauf an, was Du freitags machst...


Leider nicht demonstrieren


----------



## IAmFloppy (10. Apr 2019)

So könnte das ganze mit javax aussehen 


```
import javax.sound.sampled.*;
import java.io.File;

/*
 * With this class you can play sound files
 */
public class Sound {

    /*
     * The sound file (e.g C:\Users\Alex\Desktop\music.wav)
     */
    private File file;

    /*
     * The sound clip
     */
    private Clip clip;

    /*
     * Will be the clip time in microseconds
     */
    private long clipTime;

    /*
     * This constructor defines the file of the sound
     */
    public Sound(File file) {
        this.file = file;
    }

    /*
     * This method will play the sound if it is existing
     */
    public void play() {
        try {
            Thread thread = new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        Object lock = new Object();
                        AudioInputStream ais = AudioSystem.getAudioInputStream(file);
                        clip = AudioSystem.getClip();
                        clip.open(ais);
                        clip.addLineListener((e) -> {
                            if (e.getType() == LineEvent.Type.STOP) {
                                synchronized (lock) {
                                    lock.notify();
                                }
                            }
                        });
                        FloatControl control = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN);
                        int volume = 95;
                        float range = control.getMinimum();
                        float result = range * (1 - volume / 100.0f);
                        control.setValue(result);
                        clip.start();

                        synchronized (lock) {
                            lock.wait();
                        }
                    } catch (Exception ex) {
                        ex.printStackTrace();
                    }
                }
            });
            thread.start();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    /*
     * Returns true if the sound is still playing.
     */
    public boolean isPlaying() {
        return clip.isActive();
    }

    /*
     * This method will pause the sound if it's playing
     */
    public void pause() {
        clipTime = clip.getMicrosecondPosition();
        clip.stop();
    }

    /*
     * This method will resume the sound if it's paused
     */
    public void resume() {
        clip.setMicrosecondPosition(clipTime);
        clip.start();
    }

    /*
     * Returns the lenght of the sound in seconds
     */
    public double getLenght() {
        double microseconds = clip.getMicrosecondLength();
        double seconds = microseconds / 1000 / 1000;
        return (seconds - 5);
    }

    /*
     * This method will stop the sound if it's playing
     */
    public void stop() {
        clip.stop();
    }

}
```


----------

