RMEx
RMEx

Community

Le deal à ne pas rater :
Réassort du coffret Pokémon 151 Électhor-ex : où l’acheter ?
Voir le deal

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]

Hellper


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

spyrojojo

spyrojojo
Wow, simple et éfficasse, j'adore le principe, bien vue Hellper Very Happy

Joke

Joke
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

nuki

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

5[Avancé]Système de jukebox Empty

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