i have this simple game code that have a menu page and game page. the music will start playing once we enter the game page. at first (after compiling) game, the music working just fine. after game over and went back to the menu page and starting the game again, the music wont play. any ideas why? here is the code
public void startGame(String username) {
stopMusic();
//CREDIT MUSIC FROM FREE MUSIC'S YOUTUBE CHANNEL
String musicFile = "src/asset/Joshua McLean - Mountain Trials NO COPYRIGHT 8-bit Music.mp3"; // Path file musik yang akan diputar, sesuaikan dengan lokasi file musik Anda
Media sound = new Media(new File(musicFile).toURI().toString()); // Membuat objek Media yang merepresentasikan file musik dengan menggunakan path yang telah ditentukan
mediaPlayer = new MediaPlayer(sound); // Membuat objek MediaPlayer yang akan memutar file musik yang telah dibuat sebelumnya
mediaPlayer.setCycleCount(MediaPlayer.INDEFINITE); // Mengatur jumlah siklus pemutaran musik menjadi tak terbatas
mediaPlayer.play(); // Memulai pemutaran musik
// Mencari pemain dengan username yang sesuai dalam daftar pemain menggunakan Stream API
PlayerModel player = players.stream()
.filter(p -> p.getUsername().equals(username)) // Mencocokkan username pemain
.findFirst() // Mengambil pemain pertama yang cocok atau null jika tidak ada yang cocok
.orElseGet(() -> { // Jika pemain tidak ditemukan, jalankan kode berikut
// Membuat objek PlayerModel baru dengan username yang diberikan dan skor awal 0
PlayerModel newPlayer = new PlayerModel(username, 0, 0, 0);
// Menambahkan pemain baru ke daftar pemain
players.add(newPlayer);
try {
// Memasukkan pemain baru ke dalam database
db.insertPlayer(newPlayer);
} catch (SQLException e) {
e.printStackTrace();
}
// Mengembalikan pemain baru yang telah dibuat
return newPlayer;
});
// Membuat objek GameModel yang akan merepresentasikan model data permainan
GameModel model = new GameModel();
// Membuat objek GameViewModel yang akan menghubungkan model permainan dengan tampilan permainan dan pemain
GameViewModel viewModel = new GameViewModel(model, player);
// Membuat objek GameView yang akan menampilkan tampilan permainan dan menghubungkannya dengan viewModel dan aplikasi ini
GameView view = new GameView(viewModel, this);
// Membuat objek Group sebagai root node dari tampilan permainan
Group root = new Group();
// Menambahkan root node dari tampilan permainan ke dalam objek root
root.getChildren().add(view.getRoot());
// Membuat objek Scene untuk menampung tampilan permainan dengan lebar 800 dan tinggi 600
Scene gameScene = new Scene(root, 800, 600);
// Menetapkan event handler untuk menangani input keyboard saat berada di tampilan permainan
gameScene.setOnKeyPressed(event -> handleKeyPress(event, viewModel));
// Menetapkan tampilan permainan ke dalam jendela utama
primaryStage.setScene(gameScene);
// Membuat objek AnimationTimer untuk mengatur interval pembaruan tampilan permainan
AnimationTimer timer = new AnimationTimer() {
@Override
public void handle(long now) {
// Memperbarui viewModel permainan
viewModel.update();
// Merender tampilan permainan
view.render();
// Jika permainan berakhir, perbarui skor pemain dan simpan perubahan di database
if (viewModel.isGameOver()) {
try {
db.updatePlayer(viewModel.getPlayer());
} catch (SQLException e) {
e.printStackTrace();
}
}
}
};
// Memulai timer untuk pembaruan tampilan permainan
timer.start();
}
public void stopMusic() { //menghentikan musik
if (mediaPlayer != null) {
mediaPlayer.stop();
mediaPlayer.dispose();
mediaPlayer = null;
}
}
i tried turning it into a void but got zero change (still wont play for the second time after it stops)
New contributor
tia is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.