GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» Preciso de ajuda
por AftonDuGrau Dom 21 Abr 2024, 20:18

» Como faz o evento drawn GUI, não se repetir?
por aminaro Sex 19 Abr 2024, 20:30

» Como ajustar velocidade de cada frame da animação no game maker
por Ralphed Qui 18 Abr 2024, 18:28

» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07

» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45

» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51

» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31

» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11

» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39

» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17

» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18

» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34

» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13

» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18

» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12

» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02

» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55

» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42

» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56

» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49

» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21

» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21

» Asteroid Core - Early Acesse Update [0.2.0.0]
por JOZ. Seg 08 Jan 2024, 14:39


Sistema de Musicas aleatórias

4 participantes

Ir para baixo

Sistema de Musicas aleatórias Empty Sistema de Musicas aleatórias

Mensagem por Mateus O de Andrade Qua 10 Set 2014, 14:13

Boa tarde pessoal,
Estou trabalhando em um projeto que possui um sistema de musicas aleatórias ao iniciar o nível.

Este é o código que eu utilizo:

CREATE:
Código:

//Seleção de Musicas
global.musica=choose("a","b","c","d")

if global.musica="a"

{
sound_loop(snd_mission_a)
}

if global.musica="b"

{
sound_loop(snd_mission_b)
}
if global.musica="c"

{
sound_loop(snd_mission_c)
}
if global.musica="d"

{
sound_loop(snd_mission_d)
}

É, eu sei que a está altura do campeonato eu já deveria estar usando switch case mas é um vício que eu carrego dos tempos de VBA...

O sistema está funcionando mas eu sempre gosto de fazer da maneira mais correta possível.

No entanto eu notei que poderei enfrentar certos problemas co esse sistema como:

E se eu usar muitas faixas?
E para parar essa musica que foi selecionada?

Para parar eu estou usando a função sound_stop_all, que também está funcionando bem, mas ainda não é o que eu quero (que é parar somente a musica em execução). Tentei salvar a faixa em uma variável (global.soundtrack) e depois para-la com o sound_stop(global.soundtrack) mas não deu certo. Não sei se foi algum erro meu ou da maneira que eu usei.

Por isso aqui estão minhas dúvidas de maneira direta e resumida:

Quanto ao sistema: Tem maneira melhor (aparte do switch case) ou assim está bom?

Quanto a parar a musica:  Tem como descobrir que som está tocando para parar este em especial? Tem como fazer melhor?

Bom por agora é isso, agradeço a atenção desde já pessoal.
Mateus O de Andrade
Mateus O de Andrade

Games Ranking : Nota D

Data de inscrição : 25/03/2014
Reputação : 37
Número de Mensagens : 410
Prêmios : Sistema de Musicas aleatórias Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Sistema de Musicas aleatórias Empty Re: Sistema de Musicas aleatórias

Mensagem por Lighter Qua 10 Set 2014, 14:45

Se estiver usando o GM:S, a função sound_(...) ficou obsoleta. E para substituir essa atribuição tem o audio_(...).

Vou dar um exemplo dessa função;
GMS:
Código:
if keyboard_check_pressed(vk_enter)
 {
  if audio_is_playing(audio)
   {
   audio_stop_sound(audio)
   audio_play_sound(audio2,false)
   }
 }

GM8:
Código:
if keyboard_check_pressed(vk_enter)
 {
  if sound_isplaying(audio)
   {
   sound_stop(audio)
   sound_play(audio1)
   }
 }
Lighter
Lighter

Games Ranking : Sem avaliações

Data de inscrição : 16/01/2014
Reputação : 31
Número de Mensagens : 317
Prêmios : Sistema de Musicas aleatórias Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 1 Bronze x 0

Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0

http://google.com

Ir para o topo Ir para baixo

Sistema de Musicas aleatórias Empty Re: Sistema de Musicas aleatórias

Mensagem por Mateus O de Andrade Qua 10 Set 2014, 15:23

Boa tarde Lighter,
Já pensei nessa função (uso o GM Cool.
Atualmente eu uso 4 músicas para fase, 1 para cada chefe, uma para abertura, 1 para seleção de naves e uma para seleção de atributos e fases. Com 4 níveis é fácil usar 4 if's mas e se eu usar um número de músicas maior, estou pensando não só nesse projeto mas também em futuros trabalhos.

Com sua experiencia e também a dos demais colegas, tem alguma forma mais eficaz?

P.S.: Aquele bonequinho não devia estar li em cima.... Sistema de Musicas aleatórias 776770
Mateus O de Andrade
Mateus O de Andrade

Games Ranking : Nota D

Data de inscrição : 25/03/2014
Reputação : 37
Número de Mensagens : 410
Prêmios : Sistema de Musicas aleatórias Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Sistema de Musicas aleatórias Empty Re: Sistema de Musicas aleatórias

Mensagem por DieBoy Qua 10 Set 2014, 16:53

Olá, para facilitar sua vida, e não precisar de tantos if's. Você pode guardar suas músicas em uma array, e depois executar uma delas aleatoriamente.

exemplo:
Código:

musicas[0] = sd_1;
musicas[1] = sd_2;
musicas[2] = sd_3;
musicas[3] = sd_4;
sound_play( musicas[irandom_range(0, 3)] );
DieBoy
DieBoy

Data de inscrição : 22/08/2014
Reputação : 49
Número de Mensagens : 91
Prêmios : Sistema de Musicas aleatórias Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Sistema de Musicas aleatórias Empty Re: Sistema de Musicas aleatórias

Mensagem por Mateus O de Andrade Qua 10 Set 2014, 17:07

Putz cara, nem lembrei dos arrays!! Valeu cara, um problema a menos.
Vou aproveitar a dica para dar uma polida em outros códigos que já estão prontos.

Muito obrigado DieBoy.
Mateus O de Andrade
Mateus O de Andrade

Games Ranking : Nota D

Data de inscrição : 25/03/2014
Reputação : 37
Número de Mensagens : 410
Prêmios : Sistema de Musicas aleatórias Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Sistema de Musicas aleatórias Empty Re: Sistema de Musicas aleatórias

Mensagem por Willy Qui 11 Set 2014, 00:07

Seguindo o princípio que o DieBoy citou, você pode aprimorar ainda mais usando ds_list! Usando-a, você tem a vantagem de inserir ou remover as músicas quando quiser e não tem o problema de precisar saber o tamanho total da array (ou quantidade de músicas, como preferir), para tal, faça algo mais ou menos assim:

Primeiro, você declara uma lista:

Código:
ListaDeMusicas = ds_list_create();
Em seguida, você adiciona as músicas nesta lista, da seguinte forma:
Código:
ds_list_add(ListaDeMusicas, musica1);
ds_list_add(ListaDeMusicas, musica2);
ds_list_add(ListaDeMusicas, musica2);
O ds_list tem a vantagem de possuir uma função que retorna a quantidade de itens contidas na lista, e usando em conjunto com um irandom, temos um belo sistema que toca músicas aleatórias!

Código:
Random = irandom(ds_list_size(ListaDeMusicas)); //Num aleatório baseado no tamanho da lista.
Musica = ds_list_find_value(ListaDeMusicas, Random); //Pega a musica da lista.
audio_play_sound(Musica,false); //Reproduz a musica escolhida anteriormente

Desta maneira, ocorre a chance da música repetir. Podemos opcionalmente evitar isso removendo a música selecionada da lista, basta adicionar a seguinte linha de código: 

Código:
ds_list_delete(ListaDeMusicas,Random);

ds_list, bem como outros tipos de lista (stack, queue, priority_queue, maps...) são muito úteis e fáceis de se usar quando se entende por completo o seu funcionamento. Procure saber mais sobre elas e verá como são importantes!

Flws... blz
Willy
Willy

Games Ranking : Nota A

Notas recebidas : C + B + A + A
Data de inscrição : 08/06/2009
Reputação : 264
Número de Mensagens : 1890
Prêmios : Sistema de Musicas aleatórias Empty

Medalhas x 0 Tutoriais x 2 Moedas x 0

Ouro x 2 Prata x 1 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://willy-gmbr.blogspot.com/

Ir para o topo Ir para baixo

Sistema de Musicas aleatórias Empty Re: Sistema de Musicas aleatórias

Mensagem por Mateus O de Andrade Qui 11 Set 2014, 08:17

Bom dia Willy,
Realmente esse código vai dar uma otimizada no meu trabalho.
Hahahaha o jogo não iria ter a função de inventário mas agora, com essa nova ferramente a minha disposição, me sinto obrigado a implementar novos recurções no meu projeto.

Muito obrigado Willy e DieBoy pelas dicas.


P.S.: Cara nunca falei nada, mas não sei por que me bate uma SAUDADE do Ragnarok quando eu vejo essa sua imagem Willy scratch
Mateus O de Andrade
Mateus O de Andrade

Games Ranking : Nota D

Data de inscrição : 25/03/2014
Reputação : 37
Número de Mensagens : 410
Prêmios : Sistema de Musicas aleatórias Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Sistema de Musicas aleatórias Empty Re: Sistema de Musicas aleatórias

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo


 
Permissões neste sub-fórum
Não podes responder a tópicos