RMEx
RMEx

Community


Vous n'êtes pas connecté. Connectez-vous ou enregistrez-vous

[Avancé]Système de jukebox

Voir le sujet précédent Voir le sujet suivant Aller en bas  Message [Page 1 sur 1]

Voici un petti système de Jukebox tiré de mon projet Gall II. Il s'agit un système qui va charger toutes les musiques et en jouer une au hasard. Il est composé de deux parties, un première à faire au chargement du jeu :

Code:
V[7] = Dir["Audio/BGM/*.ogg"]
V[7].each {|i| i.slice!("Audio/BGM/")}
V[7].each {|i| i.slice!(".ogg")}

La première ligne va créer une liste de tous les fichiers .ogg présents dans le répertoire "Audio/BGM"
On aura alors quelque chose comme ["Audio/BGM/Musique1.ogg", "Audio/BGM/musique2.ogg", "Audio/BGM/musique3.ogg"]
Le rôle des deux autres lignes est de retirer une partie de text dans chaque nom pour ne plus avoir des chemin mais seulement les noms de fichiers, c'est à dire["Musique1", "musique2", "musique3"]

Ensuite pour lancer une musique aléatoire il suffit de mettre la commande :

Code:
bgm_play(pick_random(V[7]))

ET le tour est joué :D

Voir le profil de l'utilisateur
Wow, simple et éfficasse, j'adore le principe, bien vue Hellper Very Happy

Voir le profil de l'utilisateur

Joke

avatar
Admin
Très sympa !

Une alternative au premier code, peut-être un peu moins simple au final :

Code:
V[7] = Dir.entries("Audio/BGM") - [".", ".."]
V[7].map!{|i| i.delete File.extname(i)}

Tu peux aussi chaîner tes deux "slice" pour n'avoir qu'un seul "each". ^^

On devrait peut-être faire en sorte de tolérer la présence de l'extension directement dans la commande bgm_play... je regarde ça quand j'ai le temps.

J'avoue, je ne connaissais pas le coup de l'asteris. Smile

Voir le profil de l'utilisateur

nuki

avatar
Admin
Code:
V[7] = (Dir.entries("Audio/BGM") - [".", ".."]).map{|i| File.basename(i, ".*")}

Voir le profil de l'utilisateur

5

Contenu sponsorisé


Voir le sujet précédent Voir le sujet suivant Revenir en haut  Message [Page 1 sur 1]

Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum