Entrar
Últimos assuntos
» Servidor de Discord do fórum?por Super Games Ontem à(s) 01:27
» Problemas com a caixa de diálogo, ela é pequena e as letras não cabem dentro
por Rukasu777 Qui 16 maio 2024, 18:10
» Problemas com particulas
por RastaMaan Dom 12 maio 2024, 17:03
» Problema ao entrar por uma porta e voltar por ela
por aminaro Seg 06 maio 2024, 10:08
» Alguém aqui já ganha dinheiro com seus games?
por theguitarmester Ter 30 Abr 2024, 11:43
» Colisões não funcionando
por theguitarmester Ter 30 Abr 2024, 10:16
» Como ajustar velocidade de cada frame da animação no game maker
por pequetux Sex 26 Abr 2024, 16:45
» 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
» 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
» 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
Como Embaralhar e Distribuir Cartas?
4 participantes
Página 1 de 1
Como Embaralhar e Distribuir Cartas?
Ola Pessoal!
Em primeiro lugar, parabéns pelo fórum e muito obrigado por já terem me ajudado bastante por tabela.
hehehe
Essa é minha primeira postagem, mas visito com frequencia o fórum pelo sistema de busca pra tirar dúvidas.
Estou fazendo um jogo de cartas que funciona no estilo do Copas do Windows. (mas não exatamente com cartas de baralho)
Já peguei vários tutoriais na net, desde básicos para comandos iniciais até avançados para criar um ambiente multiplayer.
Só que desta vez eu travei numa outra parte. Na hora de embaralhar e distribuir as cartas iniciais.
No meu jogo só são distribuídas 8 cartas, uma para cada jogador. Dessas 8, 5 são iguais.
Eles já começam com suas cartas viradas para baixo, ou seja, já começam com seus objetos "card_x" com a sprite "verso".
Tenho 8 objetos:
card_one / card_two / card_three / card_four / card_five / card_six / card_seven / card_eight
E tenho 4 sprites:
sprite_a / sprite_b / sprite_c / sprite_d
Também tenho um objeto de controle para (além de outras coisas) sortear as 4 sprites nos 8 objetos.
A ajuda que preciso é aqui:
Como fazer para que esse objeto de controle transforme aleatoriamente a sprite de um dos meus 8 objetos na "sprite_a", depois transforme a de outro tbm aleatoriamente na "sprite_b", depois a de outro tbm aleatoriamente na "sprite_c" e em seguida transforme as sprites dos 5 objetos restantes na "sprite_d"?
A ordem do sorteio tem q ser feita pelas sprites, pois a sprite A, B, C e uma D "PRECISAM" estar no jogo.
O jogo é de 4 à 8 players, então quando tiver 5 players, haverá 2 sprites D, quando tiver 6 players, haverá 3 sprites D, quando tiver 7 players, haverá 4 sprites D e quando tiver os 8 players, haverá 5 sprites D.
Resumo da ópera:
Na verdade eu preciso que o objeto de controle SOMENTE sorteie as sprites A, B e C entre os objetos e depois desse sorteio, transforme o restante na sprite D.
A solução que consegui pensar (com as poucas funções que conheço) funciona pq testei um pedaço, mas ficou imensa e tanto vai demorar pra fazer quanto pode deixar o jogo pesado demais por bobeira.
Tbm já vasculhei o fórum e só achei esse tópico que se aproxima, mas ainda não resolve meu caso:
http://www.gamemakerbrasil.com/perguntas-respostas-f8/random-5-veses-sem-repetir-o-mesmo-valor-t1102.htm?highlight=random
Valew Galera!
Abraços!
Em primeiro lugar, parabéns pelo fórum e muito obrigado por já terem me ajudado bastante por tabela.
hehehe
Essa é minha primeira postagem, mas visito com frequencia o fórum pelo sistema de busca pra tirar dúvidas.
Estou fazendo um jogo de cartas que funciona no estilo do Copas do Windows. (mas não exatamente com cartas de baralho)
Já peguei vários tutoriais na net, desde básicos para comandos iniciais até avançados para criar um ambiente multiplayer.
Só que desta vez eu travei numa outra parte. Na hora de embaralhar e distribuir as cartas iniciais.
No meu jogo só são distribuídas 8 cartas, uma para cada jogador. Dessas 8, 5 são iguais.
Eles já começam com suas cartas viradas para baixo, ou seja, já começam com seus objetos "card_x" com a sprite "verso".
Tenho 8 objetos:
card_one / card_two / card_three / card_four / card_five / card_six / card_seven / card_eight
E tenho 4 sprites:
sprite_a / sprite_b / sprite_c / sprite_d
Também tenho um objeto de controle para (além de outras coisas) sortear as 4 sprites nos 8 objetos.
A ajuda que preciso é aqui:
Como fazer para que esse objeto de controle transforme aleatoriamente a sprite de um dos meus 8 objetos na "sprite_a", depois transforme a de outro tbm aleatoriamente na "sprite_b", depois a de outro tbm aleatoriamente na "sprite_c" e em seguida transforme as sprites dos 5 objetos restantes na "sprite_d"?
A ordem do sorteio tem q ser feita pelas sprites, pois a sprite A, B, C e uma D "PRECISAM" estar no jogo.
O jogo é de 4 à 8 players, então quando tiver 5 players, haverá 2 sprites D, quando tiver 6 players, haverá 3 sprites D, quando tiver 7 players, haverá 4 sprites D e quando tiver os 8 players, haverá 5 sprites D.
Resumo da ópera:
Na verdade eu preciso que o objeto de controle SOMENTE sorteie as sprites A, B e C entre os objetos e depois desse sorteio, transforme o restante na sprite D.
A solução que consegui pensar (com as poucas funções que conheço) funciona pq testei um pedaço, mas ficou imensa e tanto vai demorar pra fazer quanto pode deixar o jogo pesado demais por bobeira.
Tbm já vasculhei o fórum e só achei esse tópico que se aproxima, mas ainda não resolve meu caso:
http://www.gamemakerbrasil.com/perguntas-respostas-f8/random-5-veses-sem-repetir-o-mesmo-valor-t1102.htm?highlight=random
Valew Galera!
Abraços!
Re: Como Embaralhar e Distribuir Cartas?
Sua dúvida até que é simples, só precisa de calculos, por post é dificil explicar então fazerei uma engine, ao termina-la postarei.
Sannin Kyuubi- Data de inscrição : 12/02/2010
Reputação : 2
Número de Mensagens : 192
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Como Embaralhar e Distribuir Cartas?
Sannin Kyuubi escreveu:Sua dúvida até que é simples, só precisa de calculos, por post é dificil explicar então fazerei uma engine, ao termina-la postarei.
Pow, valew mesmo pela disposição!
Imaginei que tivesse algum jeito mais simples... como fui aprendendo fuçando, tem mtas funções que não conheço, daí às vzs pra fazer uma coisinha simples, eu até faço, mas dou uma volta enorme. hahahahahaha
Mas blz. Eu espero a engine então.
Por post é meio complicadinho de explicar mesmo... até a dúvida eu tive que escrever bastante pra ficar claro. hehehehe
Re: Como Embaralhar e Distribuir Cartas?
Tive que sair mais to de volta. Só falta arrumar umas coisas aqui, terminando eu do edit como o download.
Ta ai o link:
http://www.4shared.com/file/246989432/b5d47ce6/engine_cartas.html
Só editar para ficar como você quer, qualquer dúvida ou problema só falar.
Ta ai o link:
http://www.4shared.com/file/246989432/b5d47ce6/engine_cartas.html
Só editar para ficar como você quer, qualquer dúvida ou problema só falar.
Sannin Kyuubi- Data de inscrição : 12/02/2010
Reputação : 2
Número de Mensagens : 192
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Como Embaralhar e Distribuir Cartas?
Sannin Kyuubi escreveu:Tive que sair mais to de volta. Só falta arrumar umas coisas aqui, terminando eu do edit como o download.
Ta ai o link:
http://www.4shared.com/file/246989432/b5d47ce6/engine_cartas.html
Só editar para ficar como você quer, qualquer dúvida ou problema só falar.
Blzinha meu velho!
To indo pra casa agora e já vou abrir pra ver a engine.
Se eu não conseguir, dou um toque aqui no forum.
Obrigadão aí pelo trampo que teve, heim!
Re: Como Embaralhar e Distribuir Cartas?
Tipo vc coloca no objeto controle pra quando for sortear(apertar um botao) ativar uma variavel global "global.sortear=true"
Ai vc coloca em cada objeto card, tipo:
Ai vc coloca em cada objeto card, tipo:
- Código:
if global.sortear=true
{
sprite_index=choose(sprite_a,sprite_b,sprite_c,sprite_d)
}//
Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.
Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.
Aprenda a calcular a velocidade de suas animações
Entre para o Clube do Inglês:
Re: Como Embaralhar e Distribuir Cartas?
O código do Pedro Henrique está melhor, não conhecia este comando chose.... Como dizem, é vivendo e aprendendo
Sannin Kyuubi- Data de inscrição : 12/02/2010
Reputação : 2
Número de Mensagens : 192
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Como Embaralhar e Distribuir Cartas?
Mas esse código não vai fazer toda aquela seletividade que você quer (escolhe um sprite pra cada carta, e depois repete o sprite_d)...
Igor KinGamer- Data de inscrição : 26/09/2008
Reputação : 11
Número de Mensagens : 890
Prêmios :
x 0 x 1 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Como Embaralhar e Distribuir Cartas?
Igor KinGamer escreveu:Mas esse código não vai fazer toda aquela seletividade que você quer (escolhe um sprite pra cada carta, e depois repete o sprite_d)...
É verdade...
Eu tentei aqui e o sorteio funcionou em partes.
Acaba saindo mais de um player com a sprite A, por exemplo.
Mas observando a engine e o post eu tive uma idéia.
E se eu mandar o objeto Controle criar uma variável "sprite_a" sorteando o valor dela de 1 à 8.
Depois colocar no card_one: if global.sprite_a=1 {sprite_index=sprite_a}
no card_two: if global.sprite_a=2 {sprite_index=sprite_a}
no card_three: if global.sprite_a=3 {sprite_index=sprite_a}
(...) até o card_eight.
E depois eu criar uma variável pra sprite_b e outra no mesmo esquema pra sprite_c.
????
To viajando mto? Acho q ficou grande demais, deve ter alguma função que resuma esse trabalho, não?
E mesmo se eu fizer isso, ainda preciso que as variáveis sprite_a, b e c tenham valores diferentes, ou seja: se der 2 na variável A, o card_two muda o sprite pra sprite_a, sendo assim, a variável B não pode dar 2 também.
Ou se der, tem que sortear novamente.
E outro problema que fica:
Como depois vou fazer pra que os 5 objetos restantes que não viraram sprite A, nem B, nem C se transformem na sprite_d ?
CONSEGUI!!!
Ae Galera, consegui!
Pegando as dicas e engines aqui postadas e em outros tópicos eu montei um esquema como o que eu queria.
Ainda acredito que deva ter um jeito mais prático pra isso, mas esse pelo menos resolveu o problema.
Vou postar aqui pra caso alguém precise.
Talvez não sirva pra jogos de baralho em si, mas enfim, qualquer situação parecida... pode ser útil.
O jogo se inicia assim:
- Cada player com seu objeto e mesma sprite
Como é um jogo multiplayer, criei uma variável que copia o número de jogadores que estão conectados. Esta chama-se "numplayers"
Existe outro objeto, o que vai sortear as cartas. Este não é visível. O sorteio começa por ele:
- No evento create:
Agora em cada objeto, vc cria um evento create e joga um alarme. (coloquei isso porque se eu jogasse o código direto no create, dava erro dizendo que as variáveis globais ainda não existiam)
1º objeto - card_one:
- No evento alarme 0
Copiando e colando esses procedimentos nos outros 7 objetos, depois é só trocar os números "1" do código para os números dos players, assim:
card_two - trocar por 2
card_three - trocar por 3
card_four - trocar por 4
card_five - trocar por 5
card_six - trocar por 6
card_seven - trocar por 7
card_eight - trocar por 8
Com tudo isso, se o jogo tiver com 4 players online, cada um deles terá uma carta diferente, com 5 players 2 deles terão a carta D, com 6 players 3 deles terão a D e assim por diante.
Esse tipo de sorteio funciona pra jogos com o princípio do famoso "Detetive" (ou "polícia e ladrão"). Aquele em que piscamos pra matar as vítimas e tals.
Assim como nesse jogo, quanto mais players além dos principais, mais "vítimas" são inclusas no jogo.
Valew Galera!
Mais um pedido aí para os craques:
Se souberem de um jeito mais simples de fazer, deixa aí pro pessoal que precisar poder pesquisar.
Um forte abraço pra todos aí do fórum!
E obrigadão aí pela atenção, heim!=D
Pegando as dicas e engines aqui postadas e em outros tópicos eu montei um esquema como o que eu queria.
Ainda acredito que deva ter um jeito mais prático pra isso, mas esse pelo menos resolveu o problema.
Vou postar aqui pra caso alguém precise.
Talvez não sirva pra jogos de baralho em si, mas enfim, qualquer situação parecida... pode ser útil.
O jogo se inicia assim:
- Cada player com seu objeto e mesma sprite
Player 1 | Player 2 | Player 3 | Player 4 |
card_one | card_two | card_three | card_four |
sprite_verso | sprite_verso | sprite_verso | sprite_verso |
Player 5 | Player 6 | Player 7 | Player 8 |
card_five | card_six | card_seven | card_eight |
sprite_verso | sprite_verso | sprite_verso | sprite_verso |
Como é um jogo multiplayer, criei uma variável que copia o número de jogadores que estão conectados. Esta chama-se "numplayers"
Existe outro objeto, o que vai sortear as cartas. Este não é visível. O sorteio começa por ele:
- No evento create:
- Código:
global.spritea=ceil(random(global.numplayers))
{
do
{
global.spriteb=ceil(random(global.numplayers))
}
until (global.spriteb<>global.spritea)
}
{
do
{
global.spritec=ceil(random(global.numplayers))
}
until (global.spritec<>global.spriteb)&(global.spritec<>global.spritea)
}
global.endchoose=true
Agora em cada objeto, vc cria um evento create e joga um alarme. (coloquei isso porque se eu jogasse o código direto no create, dava erro dizendo que as variáveis globais ainda não existiam)
1º objeto - card_one:
- No evento alarme 0
- Código:
if sprite_index = sprite_verso
if global.endchoose=true
{
sprite_index = sprite_d
}
if global.spritea=1
{
sprite_index=sprite_a
}
if global.spriteb=1
{
sprite_index=sprite_b
}
if global.spritec=1
{
sprite_index=sprite_c
}
Copiando e colando esses procedimentos nos outros 7 objetos, depois é só trocar os números "1" do código para os números dos players, assim:
card_two - trocar por 2
card_three - trocar por 3
card_four - trocar por 4
card_five - trocar por 5
card_six - trocar por 6
card_seven - trocar por 7
card_eight - trocar por 8
Com tudo isso, se o jogo tiver com 4 players online, cada um deles terá uma carta diferente, com 5 players 2 deles terão a carta D, com 6 players 3 deles terão a D e assim por diante.
Esse tipo de sorteio funciona pra jogos com o princípio do famoso "Detetive" (ou "polícia e ladrão"). Aquele em que piscamos pra matar as vítimas e tals.
Assim como nesse jogo, quanto mais players além dos principais, mais "vítimas" são inclusas no jogo.
Valew Galera!
Mais um pedido aí para os craques:
Se souberem de um jeito mais simples de fazer, deixa aí pro pessoal que precisar poder pesquisar.
Um forte abraço pra todos aí do fórum!
E obrigadão aí pela atenção, heim!=D
Re: Como Embaralhar e Distribuir Cartas?
era so vc usar meu sistema e fazer isso:
Edit: Eu tentei e nao funcionou ele troca de sprite sem parar.
Malz
- Código:
with(all)
{if other.sprite_index=sprite_index{
sprite_index=choose(sprite_a,sprite_b,sprite_c,sprite_d)
}}
Edit: Eu tentei e nao funcionou ele troca de sprite sem parar.
Malz
Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.
Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.
Aprenda a calcular a velocidade de suas animações
Entre para o Clube do Inglês:
Re: Como Embaralhar e Distribuir Cartas?
Pedro Henrique escreveu:era so vc usar meu sistema e fazer isso:
- Código:
with(all)
{if other.sprite_index=sprite_index{
sprite_index=choose(sprite_a,sprite_b,sprite_c,sprite_d)
}}
Edit: Eu tentei e nao funcionou ele troca de sprite sem parar.
Malz
Ah, então... eu tinha tentado oq vc mandou e tbm a engine, além de ver o outro tópico...
só eles sorteavam, mas nenhum do jeito que eu precisava certinho.
Daí dei uma misturada nas informações que vcs me deram e consegui montar um frankstein... hahahahahaha
Tópicos semelhantes
» [Resolvido]Como distribuir variáveis pela room?
» Como fazer Jogo de Cartas TCG
» Como sortear a posição das cartas
» Como criar um jogo de cartas estilo yu-gi-oh, no game maker
» me ajudem com jogo de embaralhar copos
» Como fazer Jogo de Cartas TCG
» Como sortear a posição das cartas
» Como criar um jogo de cartas estilo yu-gi-oh, no game maker
» me ajudem com jogo de embaralhar copos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|