1
resposta

Embaralhar

No projeto que estou fazendo de jogo da memoria, pensei em usar algum tipo de randomizador como o dos zumbis para tentar fazer com que quando eu instanciace a carta fosse em uma posição aleatoria, mas não consegui.

Gostaria de saber se algum sabe como eu poderia fazer tipo um arraylist para conseguir guardar as cartas do baralho e depois conseguisse instanciar, sempre em um lugar diferente, as cartas em pares, ou seja, a ideia era fazer uma lista que eu colocasse por exemplo "cartaLeao", "cartaElefante", "cartaMacaco" e etc. e depois pegasse cada uma dessas cartas e instanciasse cada uma em um lugar e depois instanciasse um de cada clone (que seriam seus pares) em outro lugar que ainda nao foi ocupado por ninguem, usando um randomizador que diria quais seriam os trnasforms pra instanciar as cartas.

1 resposta

Oi, Rafael, tudo bem?

Você poderia criar uma Lista com as cartas possíveis de aparecer no jogo (no caso seriam 2 de cada carta na lista), poderia até ser só o desenho da carta e a carta já estar na posição.

E depois na hora de criar tirar um elemento aleatório da lista. Ficaria algo como:

public List<GameObject> cartas = new List<GameObject>; // preencher com as cartas


var numAleatorio = Random.Range(0, cartas.Count); // aleatoriza um numero de 0 até o tamanho da lista
var cartaAleatoria = cartas[numAleatorio]; // pega a carta escolhida
cartas.Remove(cartas[numAleatorio]); // tira a carta escolhida da lista para que não esteja mais disponível
// a partir daqui faça algo com a cartaAleatoria

Pode ter algum errinho nesse código mas espero que pelo menos dê uma luz de uma solução para o problema.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software