TicTacToe Sound nach jedem Zug

MaxgQ

Mitglied
Hallo Zusammen. Ich habe ein TicTacToe Spiel auf Intellij Idea geschrieben. Ich möchte, dass nach jedem gespielten Zug vom Spieler und Computer ein Sound erscheint. Ich habe vorher noch nie eine Sound Datei in ein Programm hinzugefügt, und im Internet bin ich auf keinen guten Beitrag gestossen, welcher mir weiter helfen kann.

Das ist jetzt z.B. ein Code Ausschnit vom Computer. Er soll nun nach jedem Zug welche er ausgibt einen Sound Abspielen.

public class ComputerPlayer {
private static char[][] gameBoard;
public int computerMove(char[][] gameBoard) {

Random rand = new Random();
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}

int move = rand.nextInt(9) + 1;

boolean result = Game.validMove(move, gameBoard);

while (!result) {
move = rand.nextInt(9) + 1;
result = Game.validMove(move, gameBoard);
}

System.out.println("Computer Zug " + move);
return move;
}
}
 

kneitzel

Top Contributor
Du kannst die Klasse AudioSystem nutzen um Töne abzuspielen.

Kurz umschrieben:
- Du holst dir vom AudioSystem ein Clip.
- Du erzeugst ein AudioInputStream auf der Datei mit dem Sound
- mit clip.open übergibst du den AudioInputStream
- mit clip.start spielst Du den Ton ab.
 

kneitzel

Top Contributor
Für einfache kurze Sounds wird wav oft und gerne benutzt und wav Dateien haben den Vorteil, dass die eigentlich von allen Systemen gelesen werden können. Ansonsten kann man das AudioSystem auch befragen, was für Formate unterstützt werden.
 

MaxgQ

Mitglied
Könnten Sie mir ein Beispiel zeigen, wie eine Methode aussehen könnte. Wäre von Vorteil, wenn es sich auf mein Thema beziehen würde.
 

kneitzel

Top Contributor
Ein ganz kleines Beispiel:
Java:
import javax.sound.sampled.*;
import java.io.IOException;

public class Test {
    public static void main(String[] args) {
        try (AudioInputStream inStream = AudioSystem.getAudioInputStream(Test.class.getResourceAsStream("/test.wav")) ){
            Clip clip = AudioSystem.getClip();
            clip.open(inStream);
            clip.start();
        } catch (LineUnavailableException lue) {
            System.out.println("Line unavailable: " + lue.getMessage());
            lue.printStackTrace();
        } catch (UnsupportedAudioFileException uafe) {
            System.out.println("Unsupported Audio File: " + uafe.getMessage());
            uafe.printStackTrace();
        } catch (IOException ioe) {
            System.out.println("IO Exception: " + ioe.getMessage());
            ioe.printStackTrace();
        }

        try {
            Thread.sleep(10000);
        } catch (InterruptedException ex) {}
    }
}

Die wichtigen Zeilen sind nur die 4 Zeilen, die markiert sind: AudioInputStream holen, Clip holen, Clip öffnet den Stream, clip startet.

Dann halt die Behandlung der möglichen Exceptions ... Und damit das Programm sich nicht sofort beendet: Noch ein Sleep damit ich mein wav file hören kann...

Das test.wav liegt im Ordner für die Ressourcen. So Du ein normales IntelliJ Java Projekt hast, dann hast Du vermutlich nur den Ordner src in dem auch Dein Code liegt: Da gehört dann auch die Datei rein.
Bei Maven/Gradle läge der code in src/main/java und die Datei müsste nach src/main/resources
 

MaxgQ

Mitglied
Ein ganz kleines Beispiel:
Java:
import javax.sound.sampled.*;
import java.io.IOException;

public class Test {
    public static void main(String[] args) {
        try (AudioInputStream inStream = AudioSystem.getAudioInputStream(Test.class.getResourceAsStream("/test.wav")) ){
            Clip clip = AudioSystem.getClip();
            clip.open(inStream);
            clip.start();
        } catch (LineUnavailableException lue) {
            System.out.println("Line unavailable: " + lue.getMessage());
            lue.printStackTrace();
        } catch (UnsupportedAudioFileException uafe) {
            System.out.println("Unsupported Audio File: " + uafe.getMessage());
            uafe.printStackTrace();
        } catch (IOException ioe) {
            System.out.println("IO Exception: " + ioe.getMessage());
            ioe.printStackTrace();
        }

        try {
            Thread.sleep(10000);
        } catch (InterruptedException ex) {}
    }
}

Die wichtigen Zeilen sind nur die 4 Zeilen, die markiert sind: AudioInputStream holen, Clip holen, Clip öffnet den Stream, clip startet.

Dann halt die Behandlung der möglichen Exceptions ... Und damit das Programm sich nicht sofort beendet: Noch ein Sleep damit ich mein wav file hören kann...

Das test.wav liegt im Ordner für die Ressourcen. So Du ein normales IntelliJ Java Projekt hast, dann hast Du vermutlich nur den Ordner src in dem auch Dein Code liegt: Da gehört dann auch die Datei rein.
Bei Maven/Gradle läge der code in src/main/java und die Datei müsste nach src/main/resources
Wie füge ich also die Wav Datein in mein Projekt ordner in Intellij? Muss ich einfach die Datei aus dem Ordner nehmen und in den Ornder Src ziehen...
 

kneitzel

Top Contributor
Ja genau, einfach die Datei in den Ordner src ziehen.

Wichtig ist dann, dass Du genau auf die Gross-/Kleinschreibung achtest und dass Du den führenden / nicht wegnimmst.
 

kneitzel

Top Contributor
Und natürlich weicht der Code auch von dem ab, den ich gezeigt habe.
- Dir fehlt der Import von der Klasse File.
- Damit die Datei gefunden wird, musst Du in dem richtigen Verzeichnis sein. So ein Ton wäre aber eine Ressource, daher sollte die auch als solche hinzugefügt und dann als solche geladen werden!
- LineUnavailableException wird auch nicht behandelt
 

MaxgQ

Mitglied
Meine letzte Frage wäre nun...
Wenn Ihr meine erste Nachricht von diesem Thema anschaut. Wie kann nun ein Sound Abgespielt werden, nach einer Ausführung. Also meine Ausführung ist, sobald ich ein Kreuz auf mein Spielfeld gesetzt habe, dann sollte der Sound abgespielt werden.
 

mihe7

Top Contributor
Du führst halt einfach an der gewünschten Stelle den gezeigten Code aus (den Du natürlich in eine separate Klasse/Methode auslagerst).
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Schleife für einen TicTacToe Computer Allgemeine Java-Themen 5
D TicTacToe-KI Allgemeine Java-Themen 3
A TicTacToe-ÜBerprüfung in Java Allgemeine Java-Themen 4
M Mein erstes TicTacToe :-) Allgemeine Java-Themen 3
P KI für TicTacToe programmieren > Probleme Allgemeine Java-Themen 2
K GUI-Button Inhalte vergleich - TicTacToe Grundriss Allgemeine Java-Themen 11
S TicTacToe KI-Player mit Heuristik Allgemeine Java-Themen 3
S KI für TicTacToe spiel Allgemeine Java-Themen 11
ms_cikar JavaOSC (Open Sound Control) Allgemeine Java-Themen 1
J Java Sound Api Sound input und Output auswählen Allgemeine Java-Themen 4
J Sound mit Clip in Linux abspielen Allgemeine Java-Themen 3
J Sound mit Hall und Equalizer abspielen lassen Allgemeine Java-Themen 6
K Sound-Visualisierung in Java Allgemeine Java-Themen 0
Tacofan Sound abspielen Allgemeine Java-Themen 1
Tacofan Sound beim öffnen der GUI Allgemeine Java-Themen 8
javampir Seltsame Lücken beim Abspielen von Sound Allgemeine Java-Themen 2
D Library/Framework zum Umwandeln von Sound in Notenbilder Allgemeine Java-Themen 1
V Input/Output Sound Dateien aus Jar laden Allgemeine Java-Themen 18
S Java sound pitch modulation Allgemeine Java-Themen 2
B Java Sound Memory Overload Allgemeine Java-Themen 0
B Javax.Sound Problem (setMessage-Methode) Allgemeine Java-Themen 2
DaniSahne96 Input/Output [Sound]Mp3 datein wiedergeben Allgemeine Java-Themen 8
I Sound abspielen aus einem Sample-Array Allgemeine Java-Themen 2
I javax.sound.sampled.* - Hilfe zu den Controls Allgemeine Java-Themen 8
G Threads Klasse Sound und Threads bleiben hängen Allgemeine Java-Themen 4
B AudioInputStream, bzw. Sound bearbeiten / splitten Allgemeine Java-Themen 2
Apo Java Sound Mark/Reset Exception Allgemeine Java-Themen 14
Developer_X Java Sound Lautstärke Allgemeine Java-Themen 10
A sound Allgemeine Java-Themen 4
R Sound unter Java Allgemeine Java-Themen 12
grudge Problem mit Sound Allgemeine Java-Themen 2
I Java und Sound Allgemeine Java-Themen 5
P Sound Buffer prüfen Allgemeine Java-Themen 12
C Sound stoppt Rest & Lautstärke-Problem Allgemeine Java-Themen 4
M Sound in datei abspeichern Allgemeine Java-Themen 3
T Java Sound Engine: Was liegt drunter? Allgemeine Java-Themen 7
E Nach Packen in Jar ist Sound nur noch abgehackt zu hören Allgemeine Java-Themen 2
oliver1974 Java Sound und gleichzeitger Zugriff auf Soundkarte Allgemeine Java-Themen 3
S sampled sound mixen Allgemeine Java-Themen 15
T Sound in JFrame: Ich krichs nich hin =( Allgemeine Java-Themen 7
S Kein Sound in Java Applets unter Win 9x Allgemeine Java-Themen 4
P kein sound bei freenet spielen Allgemeine Java-Themen 2
H Java Sound Allgemeine Java-Themen 2
M Sound anhand von gegebener Frequenz abspielen Allgemeine Java-Themen 2
D Sound ruckelt. Allgemeine Java-Themen 9
M Sound abspielen ohne Sounddatei Allgemeine Java-Themen 5
H Sound wiedergabe und Threads Allgemeine Java-Themen 3
bernd Sound abspielen? Allgemeine Java-Themen 6
K Sound abspielen in Java 1.5 Allgemeine Java-Themen 6
G Mit Klassenlader Sound Ressourcen laden Allgemeine Java-Themen 10
C Sound: Keine Line gefunden. Zu großer internal buffer? Allgemeine Java-Themen 3
P javax.sound: clip.stop(); Allgemeine Java-Themen 4
L Java Sound Allgemeine Java-Themen 2
D Wiedergabe von .wav-Dateien(Sound)? Allgemeine Java-Themen 2
E Variablen Nach Übergabe einer Variable den Constructor aufrufen Allgemeine Java-Themen 6
I In Java geschriebene Software nach Mac OS portieren Allgemeine Java-Themen 7
I HTML / XHTML Seite nach Excel exportieren. Suche Lib Allgemeine Java-Themen 12
J4n5chmiddi Methoden Website-URL im Browser öffnen nach erfolgreicher Basisauthentifizierung in Java Allgemeine Java-Themen 12
pkm Frage nach eventuellem syntaktischen Zucker bei der Konkatenation von ArrayLists Allgemeine Java-Themen 4
Monokuma String List nach Zahlen und Worten sortieren Allgemeine Java-Themen 9
H Collections Aktuellen Index generell und nach Sortierung ausgeben Allgemeine Java-Themen 6
Kirby.exe Filename nach bestimmtem Pattern durchsuchen Allgemeine Java-Themen 5
S Wörterliste nach Wörtern mit u durchsuchen und diese auf der Konsole ausgeben lassen Allgemeine Java-Themen 33
W Pdf verwerfen, weil Checkbox nach Unterschrift geaendert wurde Allgemeine Java-Themen 5
G File not found - nach dem Kompilieren Allgemeine Java-Themen 6
S Swing Speichern nach Button-Klick Allgemeine Java-Themen 5
Meeresgott Effizientester Weg um nach der Value einer verschachtelten Map aufzulösen Allgemeine Java-Themen 5
M Java 8 nach Java 6 konvertieren Allgemeine Java-Themen 7
N Neustarten des Codes nach der Fehlermeldung Allgemeine Java-Themen 17
L Nach dem Login // Java Desktop Software Allgemeine Java-Themen 7
N Programm nach Abschluss neustarten lassen Allgemeine Java-Themen 6
F Java Code ausführen direkt nach Anmelden in Windows Allgemeine Java-Themen 2
J Jasper Reports - Compilerproblem nach Umstellung von Groovy auf Java Allgemeine Java-Themen 7
looparda Liste filtern nach Prädikaten verschiedener Typen Allgemeine Java-Themen 3
S Apache POI Filtern nach bestimmten Kriterium Allgemeine Java-Themen 1
L Korrektur nach der Berechnung vornehmen, aber wie? Allgemeine Java-Themen 11
C Config nach bestimmten Wertdurchsuchen. Allgemeine Java-Themen 2
B Suche nach einem Testprogramm für meine BA Allgemeine Java-Themen 0
B Maven Keycloak library wirft exceptions nach maven package Allgemeine Java-Themen 1
D BufferedReader bricht nach 1248 Iterationen ab Allgemeine Java-Themen 14
K Eclipse Java findet MySQL Driver nach export nicht mehr Allgemeine Java-Themen 2
H IDEA IntelliJ Java Mail funktioniert nach Export nicht mehr! Allgemeine Java-Themen 1
F Zurnung nach Buchstaben und deren Prüfung Allgemeine Java-Themen 9
M Dateien nach kopieren vergleichen Allgemeine Java-Themen 9
M Sortieren nach Stellenangaben Allgemeine Java-Themen 7
L Erste Schritte Liste von Datums filter nach Monate Allgemeine Java-Themen 4
GreenTeaYT Elemente eines 2Dim LinkedList von links nach rechts ausgeben? Allgemeine Java-Themen 0
J Ausgabe von Links nach Rechts ausgeben? Allgemeine Java-Themen 2
K JAR Datei Corrupt nach Kopieren Allgemeine Java-Themen 4
The Pi 2D-Grafik Tic Tac Toe nach Gewinn rot Allgemeine Java-Themen 1
G Programm, das nach abgearbeiteter main Methode weiterläuft Allgemeine Java-Themen 72
C PDFBox: Nach RegEx ganze Zeile Allgemeine Java-Themen 4
R javax.comm --> Programm funktioniert nach Export nicht mehr Allgemeine Java-Themen 0
L Suche nach CalDav Server API Allgemeine Java-Themen 0
K Java ruft Methoden nicht der Reihe nach auf Allgemeine Java-Themen 14
T Textarea nach nur 1 wort durchsuchen Allgemeine Java-Themen 3
D Methoden Buttons erscheinen doppelt nach Wiederholung in Schleife Allgemeine Java-Themen 1
I nach Image Load in ListView, kann Ordner nicht mehr gelöscht werden Allgemeine Java-Themen 1
K Auf einer Website nach einem String suchen Allgemeine Java-Themen 5
C Eclipse OutOfMemory nach dem exportieren Allgemeine Java-Themen 4

Ähnliche Java Themen


Oben