diff --git a/src/SoundManager.java b/src/SoundManager.java new file mode 100644 index 0000000..587ad9f --- /dev/null +++ b/src/SoundManager.java @@ -0,0 +1,44 @@ +package com.snakegame; + +import javax.sound.sampled.*; +import java.io.File; +import java.io.IOException; + +public class SoundManager { + private Clip backgroundMusicClip; + private boolean musicEnabled = true; // 控制音乐是否启用 + + public SoundManager() { + // 初始化时不自动播放音乐 + } + + public void playBackgroundMusic(String filePath) { + if (!musicEnabled) return; // 如果音乐被禁用,则不播放 + + stopBackgroundMusic(); // 停止当前播放的音乐 + try { + File backgroundMusicFile = new File(filePath); + AudioInputStream backgroundMusicStream = AudioSystem.getAudioInputStream(backgroundMusicFile); + backgroundMusicClip = AudioSystem.getClip(); + backgroundMusicClip.open(backgroundMusicStream); + backgroundMusicClip.loop(Clip.LOOP_CONTINUOUSLY); + } catch (UnsupportedAudioFileException | IOException | LineUnavailableException e) { + e.printStackTrace(); + } + } + + public void stopBackgroundMusic() { + if (backgroundMusicClip != null && backgroundMusicClip.isRunning()) { + backgroundMusicClip.stop(); + } + } + + public void toggleMusic() { + musicEnabled = !musicEnabled; + if (musicEnabled && backgroundMusicClip != null) { + playBackgroundMusic("resources/background1.wav"); // 重新播放音乐 + } else { + stopBackgroundMusic(); + } + } +} \ No newline at end of file