[RESOLVIDO] Ranking dos jogadores...como ordenar objetos pela ordem do Array
2 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Ranking dos jogadores...como ordenar objetos pela ordem do Array
Minha lista Array já ordena os players na posição...do 1º lugar ao 4º lugar ,
porém ,preciso instanciar o Objeto (player) no pódio ,conforme a ordem do valor da array...
Simplificando...preciso instanciar os players no pódio,do primeiro ao 4 lugar...
porém ,preciso instanciar o Objeto (player) no pódio ,conforme a ordem do valor da array...
Simplificando...preciso instanciar os players no pódio,do primeiro ao 4 lugar...
- Código:
valores[0] = pontosAzul;
valores[1] = pontosAmarelo;
valores[2] = pontosVermelho;
valores[3] = pontosVerde;
OrdenarValores (valores);
...
if (Input.GetKeyDown (KeyCode.Keypad1))
{
//PRECISO INSTANCIAR O OBJETO NA ORDEM DA ARREY...
}
...
void OrdenarValores(int[] vetor){
for (int x = 0; x < vetor.Length; x++) {
for (int i = 0; i < vetor.Length - 1; i++) {
if (vetor [i] < vetor [i + 1]) {
int aux = vetor [i];
vetor [i] = vetor [i + 1];
vetor [i + 1] = aux;
}
}
}
Última edição por dstaroski em Qua Jul 04, 2018 9:02 am, editado 1 vez(es) (Motivo da edição : Resolvido)
Edw223- Membro
- PONTOS : 2914
REPUTAÇÃO : 9
Idade : 27
Áreas de atuação : Programação em C#(C-Sharp)
Respeito as regras :
Re: [RESOLVIDO] Ranking dos jogadores...como ordenar objetos pela ordem do Array
https://mega.nz/#!BIdkkIBC!_rgGT5yLKZFE5r5eVuafyrmOcpq-5EbiPBRoqPMxb_s
Está aí o link do Package q fiz para você. Como nao tem mta informação que vc deixou, fiz o que achei q fosse necessário. No momento que ordena o vertor de pontuação, faço ordenar junto na mesma ordem o vetor de gameObject. Entao lembre-se que o vetor de pontos, inicialmente deve estar declarado na mesma ordem do vetor de players. Criei os podium's na scene para que vc possa deixa-los manualmente aonde vc quer instanciar os players. Os prefabs dos players vc pode substituir dentro do array de gameObjects para player, pelos seus personagens. Qualquer coisa é so falar. Se quiser fazer parceria, so falar tb kkkk flw
Está aí o link do Package q fiz para você. Como nao tem mta informação que vc deixou, fiz o que achei q fosse necessário. No momento que ordena o vertor de pontuação, faço ordenar junto na mesma ordem o vetor de gameObject. Entao lembre-se que o vetor de pontos, inicialmente deve estar declarado na mesma ordem do vetor de players. Criei os podium's na scene para que vc possa deixa-los manualmente aonde vc quer instanciar os players. Os prefabs dos players vc pode substituir dentro do array de gameObjects para player, pelos seus personagens. Qualquer coisa é so falar. Se quiser fazer parceria, so falar tb kkkk flw
Tiago95- Avançado
- PONTOS : 2628
REPUTAÇÃO : 32
Respeito as regras :
Re: [RESOLVIDO] Ranking dos jogadores...como ordenar objetos pela ordem do Array
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class player : MonoBehaviour {
public int pontosAzul, pontosAmarelo,pontosVermelho,pontosVerde;
public int[]valores;
public GameObject[] players; //inserir na scene os players na ordem correta como na ordem declarada nos valores[]
public GameObject[] posicaoPlayr;//inserir na scene gameObject que vai deixar na posiçao exata que for instanciar
// Use this for initialization
void Start () {
valores = new int[4];
valores[0] = pontosAzul;
valores[1] = pontosAmarelo;
valores[2] = pontosVermelho;
valores[3] = pontosVerde;
OrdenarValores (valores,players); //inserido um novo parametro de array dos players
}
// Update is called once per frame
void Update () {
if (Input.GetKeyDown (KeyCode.A)) //subistituido pela tecla A para teste
{
for(int i=0; i<players.Length;i++){
Instantiate (players [i], posicaoPlayr [i].transform.position, posicaoPlayr [i].transform.rotation);
//PRECISO INSTANCIAR O OBJETO NA ORDEM DA ARREY...
}
}
}
void OrdenarValores(int[] vetor, GameObject[] playr){
for (int x = 0; x < vetor.Length; x++) {
for (int i = 0; i < vetor.Length - 1; i++) {
if (vetor [i] < vetor [i + 1]) {
int aux = vetor [i];
vetor [i] = vetor [i + 1];
vetor [i + 1] = aux;
//segue a mesma regra dos pontos porem para ordenar a posicao dos players dentro do array
GameObject auxGobj = playr [i];
playr [i] = playr [i + 1];
playr [i + 1] = auxGobj;
}
}
}
}
}
Tiago95- Avançado
- PONTOS : 2628
REPUTAÇÃO : 32
Respeito as regras :
Re: [RESOLVIDO] Ranking dos jogadores...como ordenar objetos pela ordem do Array
aguardo retorno se deu certo ou se tem alguma duvida
Tiago95- Avançado
- PONTOS : 2628
REPUTAÇÃO : 32
Respeito as regras :
Re: [RESOLVIDO] Ranking dos jogadores...como ordenar objetos pela ordem do Array
Opa ,vlw Tiago ,muito obrigado !
vou testar aqui ...estava dias tentando fazer isso kksksks
GRATIDÃO
vou testar aqui ...estava dias tentando fazer isso kksksks
GRATIDÃO
Edw223- Membro
- PONTOS : 2914
REPUTAÇÃO : 9
Idade : 27
Áreas de atuação : Programação em C#(C-Sharp)
Respeito as regras :
Tiago95- Avançado
- PONTOS : 2628
REPUTAÇÃO : 32
Respeito as regras :
Re: [RESOLVIDO] Ranking dos jogadores...como ordenar objetos pela ordem do Array
DEU CERTO PARA O QUE VC QUERIA?
Tiago95- Avançado
- PONTOS : 2628
REPUTAÇÃO : 32
Respeito as regras :
Re: [RESOLVIDO] Ranking dos jogadores...como ordenar objetos pela ordem do Array
Perfeito ! funcionou sim ,vlw ^^
me tira uma duvida...se empatar dois times no mesmo podio ,como faço ?
eu estava usando isso :
me tira uma duvida...se empatar dois times no mesmo podio ,como faço ?
eu estava usando isso :
- Código:
var meuHashSet = new HashSet<int>(valores);
var valoresRepetidos = valores.Length - meuHashSet.Count;
if (valoresRepetidos == 1 || valoresRepetidos == 2 )
{
print ("EMPATOU !");
}
Edw223- Membro
- PONTOS : 2914
REPUTAÇÃO : 9
Idade : 27
Áreas de atuação : Programação em C#(C-Sharp)
Respeito as regras :
Re: [RESOLVIDO] Ranking dos jogadores...como ordenar objetos pela ordem do Array
vc tem q decidir qual a regra do jogo. Se vai ficar os dois no mesmo lugar no podio, ou se vai ter algum criterio de desempate, ou algum outro detalhe que queira fazer. Qual a sua ideia?
Tiago95- Avançado
- PONTOS : 2628
REPUTAÇÃO : 32
Respeito as regras :
Re: [RESOLVIDO] Ranking dos jogadores...como ordenar objetos pela ordem do Array
É que é jogam 4 times...e tem a possibilidade de empatar até 3 times no mesmo lugar (tipo ,no primeiro lugar...) .
Eu criei um desempate,seria o mais certo...porém ,estou fazendo esse game pra um amigo ,e ele quer que tenha esse empate (infelizmente pra mim kskks)
Eu criei um desempate,seria o mais certo...porém ,estou fazendo esse game pra um amigo ,e ele quer que tenha esse empate (infelizmente pra mim kskks)
Edw223- Membro
- PONTOS : 2914
REPUTAÇÃO : 9
Idade : 27
Áreas de atuação : Programação em C#(C-Sharp)
Respeito as regras :
Re: [RESOLVIDO] Ranking dos jogadores...como ordenar objetos pela ordem do Array
Bem, teria q analisar o projeto mais a fundo, para entender todo o contexto. Como nao sei o comportamento de todo o jogo, e onde ou para quem deve ser informado empate, ou de que forma estaria associado, sugiro: dentro do metodo de ordenação, junto ao if no pode colocar posteriormente um else if para verificar se o valor é igual e dentro dele fazer contagem ou enviar mensagem. fazer contador de qntos iguais tem. visto q esse metodo de ordenaçao passa por todos os indices do vetor para cada elemento que for verificar.
Tiago95- Avançado
- PONTOS : 2628
REPUTAÇÃO : 32
Respeito as regras :
Re: [RESOLVIDO] Ranking dos jogadores...como ordenar objetos pela ordem do Array
Entendi...e para fazer essa verificação de numeros iguais dentro do array ,utilizo o HashSet mesmo ?
Edw223- Membro
- PONTOS : 2914
REPUTAÇÃO : 9
Idade : 27
Áreas de atuação : Programação em C#(C-Sharp)
Respeito as regras :
Re: [RESOLVIDO] Ranking dos jogadores...como ordenar objetos pela ordem do Array
nao precisa. Na vdd tem q fazer uma alteraçao no for do ordenador. vou fazer e te mando aqui. aí sim vc pode fazer o verificador de empate
Tiago95- Avançado
- PONTOS : 2628
REPUTAÇÃO : 32
Respeito as regras :
Re: [RESOLVIDO] Ranking dos jogadores...como ordenar objetos pela ordem do Array
Na vdd nao precisa alterar nao. So tomar cuidado pq como vai passar varias vezes pelo mesmo indice para cada passagem de verificação. Entao pode acontecer de vc fazer contagem a mais ou desnecessaria
Tiago95- Avançado
- PONTOS : 2628
REPUTAÇÃO : 32
Respeito as regras :
Re: [RESOLVIDO] Ranking dos jogadores...como ordenar objetos pela ordem do Array
Se puder me mandar ,vai ser de grande ajuda ...Tiago95 escreveu:nao precisa. Na vdd tem q fazer uma alteraçao no for do ordenador. vou fazer e te mando aqui. aí sim vc pode fazer o verificador de empate
Edw223- Membro
- PONTOS : 2914
REPUTAÇÃO : 9
Idade : 27
Áreas de atuação : Programação em C#(C-Sharp)
Respeito as regras :
Tiago95- Avançado
- PONTOS : 2628
REPUTAÇÃO : 32
Respeito as regras :
Re: [RESOLVIDO] Ranking dos jogadores...como ordenar objetos pela ordem do Array
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class player : MonoBehaviour {
public int pontosAzul, pontosAmarelo,pontosVermelho,pontosVerde;
public int[]valores;
public GameObject[] players;
public GameObject[] posicaoPlayr;
public int[] posicao;
// Use this for initialization
void Start () {
valores = new int[4];
posicao = new int[4];
valores[0] = pontosAzul;
valores[1] = pontosAmarelo;
valores[2] = pontosVermelho;
valores[3] = pontosVerde;
OrdenarValores (valores,players);
int j = 0;
posicao [j] = 0;
for ( j = 1; j < valores.Length; j++) {
if (valores [j] == valores [j - 1]) {
posicao [j] = posicao [j - 1];
} else {
posicao [j] = posicao [j - 1] + 1;
}
}
}
// Update is called once per frame
void Update () {
if (Input.GetKeyDown (KeyCode.A))
{
int deslocamento = 0;
for(int i=0; i<players.Length;i++){
//PRECISO INSTANCIAR O OBJETO NA ORDEM DA ARREY...
if ( i>0 && posicao [i] == posicao [i-1]) {
deslocamento += 2;
Vector3 variacao = new Vector3 (posicaoPlayr [posicao[i]].transform.position.x, (posicaoPlayr [posicao[i]].transform.position.y+deslocamento), posicaoPlayr [posicao[i]].transform.position.z);
Instantiate (players [i], variacao, posicaoPlayr [posicao[i]].transform.rotation);
print (players[i].gameObject.name + " - Posição: " + (posicao[i] + 1) + " EMPATE");
} else {
deslocamento = 0;
Instantiate (players [i], posicaoPlayr [posicao[i]].transform.position, posicaoPlayr [posicao[i]].transform.rotation);
if( i==0 && valores[i]==valores[i+1]){
print (players[i].gameObject.name + " - Posição: " + (posicao[i] + 1) + " EMPATE");
}else {
print (players [i].gameObject.name + " - Posição: " + (posicao [i] + 1));}
}
}
}
}
void OrdenarValores(int[] vetor, GameObject[] playr){
for (int x = 0; x < vetor.Length; x++) {
for (int i = 0; i < vetor.Length - 1; i++) {
if (vetor [i] < vetor [i + 1]) {
int aux = vetor [i];
vetor [i] = vetor [i + 1];
vetor [i + 1] = aux;
GameObject auxGobj = playr [i];
playr [i] = playr [i + 1];
playr [i + 1] = auxGobj;
}
}
}
}
}
nao estou com tempo de comentar agora, mas criei um arrey q salva a posicao. se o valor do player for igual ao do que estava antes dele, entao ele recebe a mesma posicao do anterior. Isso pq o vetor de valor ja vai estar ordenado. a variavel deslocamento vc pode decidir a distancia de um player para o outro, ja que ele vai estar no mesmo podium. e se nao estiver no mesmo podium, o deslocamento retorna a zero.
Tiago95- Avançado
- PONTOS : 2628
REPUTAÇÃO : 32
Respeito as regras :
Re: [RESOLVIDO] Ranking dos jogadores...como ordenar objetos pela ordem do Array
desculpa estar sem comentarios e nao tao bem organizado
Tiago95- Avançado
- PONTOS : 2628
REPUTAÇÃO : 32
Respeito as regras :
Re: [RESOLVIDO] Ranking dos jogadores...como ordenar objetos pela ordem do Array
Show ! ,obrigado ,vou testar aqui
Edw223- Membro
- PONTOS : 2914
REPUTAÇÃO : 9
Idade : 27
Áreas de atuação : Programação em C#(C-Sharp)
Respeito as regras :
Re: [RESOLVIDO] Ranking dos jogadores...como ordenar objetos pela ordem do Array
Deu certo? Entendeu o código? Kk
Tiago95- Avançado
- PONTOS : 2628
REPUTAÇÃO : 32
Respeito as regras :
Re: [RESOLVIDO] Ranking dos jogadores...como ordenar objetos pela ordem do Array
Deu certo sim !
eu entendi um pouco ,mas ainda não sou muito bom em programação kskks
então ainda tenho algumas duvidas ...
Mas o importante é que funcionou hehe...
eu entendi um pouco ,mas ainda não sou muito bom em programação kskks
então ainda tenho algumas duvidas ...
Mas o importante é que funcionou hehe...
Edw223- Membro
- PONTOS : 2914
REPUTAÇÃO : 9
Idade : 27
Áreas de atuação : Programação em C#(C-Sharp)
Respeito as regras :
Re: [RESOLVIDO] Ranking dos jogadores...como ordenar objetos pela ordem do Array
o certo é descrever cada coisa q acontece no codigo. sao boas praticas de programação. mas manda alguma msg p meu email tiagovarmassera@gmail.com que qndo eu tiver mais tempo, comento tudo e mando p vc
Tiago95- Avançado
- PONTOS : 2628
REPUTAÇÃO : 32
Respeito as regras :
Tópicos semelhantes
» [TUTORIAL] Ordenar valores de uma array[] em ordem CRESCENTE OU DECRESCENTE
» [RESOLVIDO] Como spawnar aleatoriamente objetos de uma array
» [RESOLVIDO] Pegar Objetos Filhos e Adicionar em uma Lista ou Array para Usálos como Waypoints
» [RESOLVIDO] Verificar se todos os objetos add em um array de gameobject estão ativos
» como desativar objetos pela tag?
» [RESOLVIDO] Como spawnar aleatoriamente objetos de uma array
» [RESOLVIDO] Pegar Objetos Filhos e Adicionar em uma Lista ou Array para Usálos como Waypoints
» [RESOLVIDO] Verificar se todos os objetos add em um array de gameobject estão ativos
» como desativar objetos pela tag?
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos