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
» 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

Ir para baixo

Como Embaralhar e Distribuir Cartas? Empty Como Embaralhar e Distribuir Cartas?

Mensagem por ronneyt Seg 22 Mar 2010, 12:30

Ola Pessoal!
Em primeiro lugar, parabéns pelo fórum e muito obrigado por já terem me ajudado bastante por tabela.
hehehe Happy
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!
ronneyt
ronneyt

Data de inscrição : 22/03/2010
Reputação : 0
Número de Mensagens : 6
Prêmios : Como Embaralhar e Distribuir Cartas? 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

http://ronneyt.deviantart.com

Ir para o topo Ir para baixo

Como Embaralhar e Distribuir Cartas? Empty Re: Como Embaralhar e Distribuir Cartas?

Mensagem por Sannin Kyuubi Seg 22 Mar 2010, 14:22

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
Sannin Kyuubi

Data de inscrição : 12/02/2010
Reputação : 2
Número de Mensagens : 192
Prêmios : Como Embaralhar e Distribuir Cartas? 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

Como Embaralhar e Distribuir Cartas? Empty Re: Como Embaralhar e Distribuir Cartas?

Mensagem por ronneyt Seg 22 Mar 2010, 16:00

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
ronneyt
ronneyt

Data de inscrição : 22/03/2010
Reputação : 0
Número de Mensagens : 6
Prêmios : Como Embaralhar e Distribuir Cartas? 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

http://ronneyt.deviantart.com

Ir para o topo Ir para baixo

Como Embaralhar e Distribuir Cartas? Empty Re: Como Embaralhar e Distribuir Cartas?

Mensagem por Sannin Kyuubi Seg 22 Mar 2010, 16:39

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.
Sannin Kyuubi
Sannin Kyuubi

Data de inscrição : 12/02/2010
Reputação : 2
Número de Mensagens : 192
Prêmios : Como Embaralhar e Distribuir Cartas? 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

Como Embaralhar e Distribuir Cartas? Empty Re: Como Embaralhar e Distribuir Cartas?

Mensagem por ronneyt Seg 22 Mar 2010, 18:04

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! Very Happy
ronneyt
ronneyt

Data de inscrição : 22/03/2010
Reputação : 0
Número de Mensagens : 6
Prêmios : Como Embaralhar e Distribuir Cartas? 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

http://ronneyt.deviantart.com

Ir para o topo Ir para baixo

Como Embaralhar e Distribuir Cartas? Empty Re: Como Embaralhar e Distribuir Cartas?

Mensagem por PedroX Seg 22 Mar 2010, 18:43

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:

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:
PedroX
PedroX

Games Ranking : Nota B

Notas recebidas : C+B
Data de inscrição : 26/07/2008
Reputação : 311
Número de Mensagens : 6087
Prêmios : Como Embaralhar e Distribuir Cartas? Empty

Medalhas x 0 Tutoriais x 17 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

https://web.whatsapp.com/send?phone=5519995935953&text=Pedro

Ir para o topo Ir para baixo

Como Embaralhar e Distribuir Cartas? Empty Re: Como Embaralhar e Distribuir Cartas?

Mensagem por Sannin Kyuubi Seg 22 Mar 2010, 19:15

O código do Pedro Henrique está melhor, não conhecia este comando chose.... Como dizem, é vivendo e aprendendo Smile
Sannin Kyuubi
Sannin Kyuubi

Data de inscrição : 12/02/2010
Reputação : 2
Número de Mensagens : 192
Prêmios : Como Embaralhar e Distribuir Cartas? 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

Como Embaralhar e Distribuir Cartas? Empty Re: Como Embaralhar e Distribuir Cartas?

Mensagem por Igor KinGamer Seg 22 Mar 2010, 20:03

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
Igor KinGamer

Data de inscrição : 26/09/2008
Reputação : 11
Número de Mensagens : 890
Prêmios : Como Embaralhar e Distribuir Cartas? Empty

Medalhas x 0 Tutoriais x 1 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

Como Embaralhar e Distribuir Cartas? Empty Re: Como Embaralhar e Distribuir Cartas?

Mensagem por ronneyt Seg 22 Mar 2010, 20:41

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 ?
ronneyt
ronneyt

Data de inscrição : 22/03/2010
Reputação : 0
Número de Mensagens : 6
Prêmios : Como Embaralhar e Distribuir Cartas? 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

http://ronneyt.deviantart.com

Ir para o topo Ir para baixo

Como Embaralhar e Distribuir Cartas? Empty CONSEGUI!!!

Mensagem por ronneyt Ter 23 Mar 2010, 00:37

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
Player 1Player 2Player 3Player 4
card_onecard_twocard_threecard_four
sprite_versosprite_versosprite_versosprite_verso
Player 5Player 6Player 7Player 8
card_fivecard_sixcard_sevencard_eight
sprite_versosprite_versosprite_versosprite_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
ronneyt
ronneyt

Data de inscrição : 22/03/2010
Reputação : 0
Número de Mensagens : 6
Prêmios : Como Embaralhar e Distribuir Cartas? 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

http://ronneyt.deviantart.com

Ir para o topo Ir para baixo

Como Embaralhar e Distribuir Cartas? Empty Re: Como Embaralhar e Distribuir Cartas?

Mensagem por PedroX Ter 23 Mar 2010, 16:14

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

_________________


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:
PedroX
PedroX

Games Ranking : Nota B

Notas recebidas : C+B
Data de inscrição : 26/07/2008
Reputação : 311
Número de Mensagens : 6087
Prêmios : Como Embaralhar e Distribuir Cartas? Empty

Medalhas x 0 Tutoriais x 17 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

https://web.whatsapp.com/send?phone=5519995935953&text=Pedro

Ir para o topo Ir para baixo

Como Embaralhar e Distribuir Cartas? Empty Re: Como Embaralhar e Distribuir Cartas?

Mensagem por ronneyt Qua 24 Mar 2010, 00:09

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
ronneyt
ronneyt

Data de inscrição : 22/03/2010
Reputação : 0
Número de Mensagens : 6
Prêmios : Como Embaralhar e Distribuir Cartas? 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

http://ronneyt.deviantart.com

Ir para o topo Ir para baixo

Como Embaralhar e Distribuir Cartas? Empty Re: Como Embaralhar e Distribuir Cartas?

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

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