[RESOLVIDO]Pegar 2 maiores numeros de uma array
4 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO]Pegar 2 maiores numeros de uma array
Eu preciso no meu jogo pegar dentro de uma array as posições com as 2 maiores pontuação de 4 times para assim eu saber qual time é o primeiro e segundo colocados. Eu até consegui fazer um código que pega a posição da array em primeiro lugar mas eu não consegui fazer a do segundo time.
- Código:
void VerifyGroupWinners()
{
int x = 0;
for (int i = 0; i < timesPtt.Length; i++)
{
if (timesPtt[i] > timesPtt[x])
{
maior1 = i;
x = i;
}
else if (timesPtt[i] < timesPtt[x])
{
maior1 = x;
}
else if (timesPtt[i] == timesPtt[x])
if (timesSaldo[x] > timesSaldo[i])
maior1 = x;
else if (timesSaldo[x] < timesSaldo[i])
{
maior1 = i;
x = i;
}
else if (timesSaldo[x] == timesSaldo[i])
if (Random.Range(1, 2) == 1)
maior1 = x;
else
{
maior1 = i;
x = i;
}
}
Feromark2013- Membro
- PONTOS : 2989
REPUTAÇÃO : 4
Idade : 20
Áreas de atuação : C##
Respeito as regras :
Re: [RESOLVIDO]Pegar 2 maiores numeros de uma array
Tem um jeito mais rápido de fazer que é com LINQ.
Primeiro vc referencia a biblioteca: using System.Linq;
Daí é só vc usar o método "OrderByDescending" que vai organizar os elementos da sua array em ordem decrescente.
Então ao fazer isso, o elemento 0 da array vai ser o maior valor, e o elemento 1 vai ser o segundo maior, e assim sucessivamente (dessa forma vc também pode pegar o 3º lugar e etc).
Para fazer isso basta escrever esse código:
Em caso de empates, ele ordena aleatoriamente pra vc os empatados. :D
Primeiro vc referencia a biblioteca: using System.Linq;
Daí é só vc usar o método "OrderByDescending" que vai organizar os elementos da sua array em ordem decrescente.
Então ao fazer isso, o elemento 0 da array vai ser o maior valor, e o elemento 1 vai ser o segundo maior, e assim sucessivamente (dessa forma vc também pode pegar o 3º lugar e etc).
Para fazer isso basta escrever esse código:
- Código:
timesPtt = timesPtt.OrderByDescending(a => a).ToArray();
Em caso de empates, ele ordena aleatoriamente pra vc os empatados. :D
Re: [RESOLVIDO]Pegar 2 maiores numeros de uma array
Muito obrigado cara ajudou muitoMayLeone escreveu:Tem um jeito mais rápido de fazer que é com LINQ.
Primeiro vc referencia a biblioteca: using System.Linq;
Daí é só vc usar o método "OrderByDescending" que vai organizar os elementos da sua array em ordem decrescente.
Então ao fazer isso, o elemento 0 da array vai ser o maior valor, e o elemento 1 vai ser o segundo maior, e assim sucessivamente (dessa forma vc também pode pegar o 3º lugar e etc).
Para fazer isso basta escrever esse código:
- Código:
timesPtt = timesPtt.OrderByDescending(a => a).ToArray();
Em caso de empates, ele ordena aleatoriamente pra vc os empatados. :D
Feromark2013- Membro
- PONTOS : 2989
REPUTAÇÃO : 4
Idade : 20
Áreas de atuação : C##
Respeito as regras :
Re: [RESOLVIDO]Pegar 2 maiores numeros de uma array
Mas tem um problema que só reparei na hora de editar o código, o meu código funciona da seguinte forma timesPtt[0] é o time 1, timesPtt[1] e assim por diante. Eu posso até saber qual a maior pontuação mas assim eu não sei qual dos times tem a maior pontuação. Se alguém tiver uma ideia porque não achei nada na internet eu agradeço.Feromark2013 escreveu:Muito obrigado cara ajudou muitoMayLeone escreveu:Tem um jeito mais rápido de fazer que é com LINQ.
Primeiro vc referencia a biblioteca: using System.Linq;
Daí é só vc usar o método "OrderByDescending" que vai organizar os elementos da sua array em ordem decrescente.
Então ao fazer isso, o elemento 0 da array vai ser o maior valor, e o elemento 1 vai ser o segundo maior, e assim sucessivamente (dessa forma vc também pode pegar o 3º lugar e etc).
Para fazer isso basta escrever esse código:
- Código:
timesPtt = timesPtt.OrderByDescending(a => a).ToArray();
Em caso de empates, ele ordena aleatoriamente pra vc os empatados. :D
Feromark2013- Membro
- PONTOS : 2989
REPUTAÇÃO : 4
Idade : 20
Áreas de atuação : C##
Respeito as regras :
Re: [RESOLVIDO]Pegar 2 maiores numeros de uma array
timesPtt[resultado - 1] ?
Aliás, você armazena os seus jogadores em uma lista?
Aliás, você armazena os seus jogadores em uma lista?
NKKF- ProgramadorMaster
- PONTOS : 4817
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: [RESOLVIDO]Pegar 2 maiores numeros de uma array
Existe oito grupos, cada grupo possui quatro times e cada time tem suas informações que são nome, id, poder, bandeira.NKKF escreveu:timesPtt[resultado - 1] ?
Aliás, você armazena os seus jogadores em uma lista?
Dentro da fase de grupos que é aonde apenas 2 times dos 4 do grupo passam para próxima fase, guardo apenas as pontuações do grupo do player já que é o único mostrado (timePtt[0],timePtt[1], timePtt[2], timePtt[3]). O problema é que como não são 2 times eu não posso simplesmente fazer um if para decidir qual time tem mais pontos, eu preciso comparar os 4 e retornar se foi time 1,2,3 ou 4 que estão em primeiro lugar.
Acabei de descobrir oque são listas ;-;
Feromark2013- Membro
- PONTOS : 2989
REPUTAÇÃO : 4
Idade : 20
Áreas de atuação : C##
Respeito as regras :
Re: [RESOLVIDO]Pegar 2 maiores numeros de uma array
A parte da gameplay do jogo está pronta o problema é isso e o sistema de simular jogos que não são do player.Feromark2013 escreveu:Existe oito grupos, cada grupo possui quatro times e cada time tem suas informações que são nome, id, poder, bandeira.NKKF escreveu:timesPtt[resultado - 1] ?
Aliás, você armazena os seus jogadores em uma lista?
Dentro da fase de grupos que é aonde apenas 2 times dos 4 do grupo passam para próxima fase, guardo apenas as pontuações do grupo do player já que é o único mostrado (timePtt[0],timePtt[1], timePtt[2], timePtt[3]). O problema é que como não são 2 times eu não posso simplesmente fazer um if para decidir qual time tem mais pontos, eu preciso comparar os 4 e retornar se foi time 1,2,3 ou 4 que estão em primeiro lugar.
Acabei de descobrir oque são listas ;-;
Feromark2013- Membro
- PONTOS : 2989
REPUTAÇÃO : 4
Idade : 20
Áreas de atuação : C##
Respeito as regras :
Re: [RESOLVIDO]Pegar 2 maiores numeros de uma array
Ok, mas isso vc não tinha especificado no tópico.
Vamos lá, aonde vc guarda essas informações extras? Poste o script completo para que possamos analisar, porém acredito que com o código que te passei, ainda dê para fazer isso.
Vamos lá, aonde vc guarda essas informações extras? Poste o script completo para que possamos analisar, porém acredito que com o código que te passei, ainda dê para fazer isso.
Re: [RESOLVIDO]Pegar 2 maiores numeros de uma array
- Spoiler:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TeamInfo : MonoBehaviour {
public string[] frasesVitoria;
public string[] frasesDerrota;
public string[] frasesCampeao;
public int[] poderTimes;
public string[] nomeTimes;
public Sprite[] bandeiras;
public int[] teamPosInGroup;
private static TeamInfo teamInfo;
public int[] groupA, groupB, groupC, groupD, groupE, groupF, groupG, groupH;
private void Awake()
{
DontDestroyOnLoad(this);
if (teamInfo == null)
{
teamInfo = this;
}
else
{
Destroy(gameObject);
}
}
private void Start()
{
SetPower();
SetNames();
SetGroups();
}
void SetPower()
{
//Grupo A
poderTimes[1] = 2;
poderTimes[2] = 1;
poderTimes[3] = 3;
poderTimes[4] = 5;
//Grupo B
poderTimes[5] = 5;
poderTimes[6] = 5;
poderTimes[7] = 1;
poderTimes[8] = 1;
//Grupo C
poderTimes[9] = 6;
poderTimes[10] = 2;
poderTimes[11] = 2;
poderTimes[12] = 3;
//Grupo D
poderTimes[13] = 5;
poderTimes[14] = 3;
poderTimes[15] = 3;
poderTimes[16] = 2;
//Grupo E
poderTimes[17] = 6;
poderTimes[18] = 4;
poderTimes[19] = 3;
poderTimes[20] = 3;
//Grupo F
poderTimes[21] = 6;
poderTimes[22] = 3;
poderTimes[23] = 3;
poderTimes[24] = 2;
//Grupo G
poderTimes[25] = 5;
poderTimes[26] = 1;
poderTimes[27] = 1;
poderTimes[28] = 5;
//Grupo H
poderTimes[29] = 4;
poderTimes[30] = 1;
poderTimes[31] = 4;
poderTimes[32] = 2;
}
void SetNames()
{
nomeTimes[1] = "Russia";
nomeTimes[2] = "Arabia Saudita";
nomeTimes[3] = "Egito";
nomeTimes[4] = "Uruguai";
nomeTimes[5] = "Portugal";
nomeTimes[6] = "Espanha";
nomeTimes[7] = "Marrocos";
nomeTimes[8] = "Ira";
nomeTimes[9] = "França";
nomeTimes[10] = "Australia";
nomeTimes[11] = "Peru";
nomeTimes[12] = "Dinamarca";
nomeTimes[13] = "Argentina";
nomeTimes[14] = "Islandia";
nomeTimes[15] = "Croacia";
nomeTimes[16] = "Nigeria";
nomeTimes[17] = "Brasil";
nomeTimes[18] = "Suiça";
nomeTimes[19] = "Costa Rica";
nomeTimes[20] = "Servia";
nomeTimes[21] = "Alemanha";
nomeTimes[22] = "Mexico";
nomeTimes[23] = "Suecia";
nomeTimes[24] = "Coreia Do Sul";
nomeTimes[25] = "Belgica";
nomeTimes[26] = "Panama";
nomeTimes[27] = "Tunisia";
nomeTimes[28] = "Inglaterra";
nomeTimes[29] = "Polonia";
nomeTimes[30] = "Senegal";
nomeTimes[31] = "Colombia";
nomeTimes[32] = "Japao";
}
void SetGroups()
{
groupA[1] = 1;
groupA[2] = 2;
groupA[3] = 3;
groupA[4] = 4;
groupB[1] = 5;
groupB[2] = 6;
groupB[3] = 7;
groupB[4] = 8;
groupC[1] = 9;
groupC[2] = 10;
groupC[3] = 11;
groupC[4] = 12;
groupD[1] = 13;
groupD[2] = 14;
groupD[3] = 15;
groupD[4] = 16;
groupE[1] = 17;
groupE[2] = 18;
groupE[3] = 19;
groupE[4] = 20;
groupF[1] = 21;
groupF[2] = 22;
groupF[3] = 23;
groupF[4] = 24;
groupG[1] = 25;
groupG[2] = 26;
groupG[3] = 27;
groupG[4] = 28;
groupH[1] = 29;
groupH[2] = 30;
groupH[3] = 31;
groupH[4] = 32;
}
}
Eu guardo ai mais informações do que apenas dos times (eu sei está uma bagunça) inclusive uma parte não é definida direto por código
MayLeone escreveu:Ok, mas isso vc não tinha especificado no tópico.
Vamos lá, aonde vc guarda essas informações extras? Poste o script completo para que possamos analisar, porém acredito que com o código que te passei, ainda dê para fazer isso.
Feromark2013- Membro
- PONTOS : 2989
REPUTAÇÃO : 4
Idade : 20
Áreas de atuação : C##
Respeito as regras :
Re: [RESOLVIDO]Pegar 2 maiores numeros de uma array
Só para ficar mais facil de entender eu organizo os times por ID de vez de nome, que vai de 1 até 32. Por exemplo com isso eu sei que nomeTimes[32] representa o nome do time 32.
Feromark2013- Membro
- PONTOS : 2989
REPUTAÇÃO : 4
Idade : 20
Áreas de atuação : C##
Respeito as regras :
Re: [RESOLVIDO]Pegar 2 maiores numeros de uma array
- Spoiler:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System.Linq;
using UnityEngine.SceneManagement;
public class GroupPhase : MonoBehaviour {
public int[] groupA, groupB, groupC, groupD, groupE, groupF, groupG, groupH;
private int playerTeamGroup;
public GameObject lose, normal;
public int[] gamesToPlay, gamesToPlay2, gamesToPlay3, gamesToPlay4;
private int teamOneId, teamTwoId, teamThreeId, teamFourId;
int groupGamesOfPlayer;
private int col;
public Sprite proximaFase;
public SimOtherGamesGroupPhase simOGP;
public GroupPhaseUI ui;
private int[] timesPtt = new int[4];
private int[] timesSaldo = new int[4];
int maior1, maior2;
int[] previousGames = new int[6];
TeamInfo info;
private void Start()
{
PlayerPrefs.SetInt("simulatedFirst", 0);
PlayerPrefs.SetInt("simulatedSecond", 0);
info = GameObject.FindWithTag("Info").GetComponent<TeamInfo>();
col = 1;
PlayerPrefs.SetInt("currentPhase", 0);
if (PlayerPrefs.GetInt("teamOnePtt") < 0)
PlayerPrefs.SetInt("teamOnePtt", 0);
if (PlayerPrefs.GetInt("teamTwoPtt") < 0)
PlayerPrefs.SetInt("teamTwoPtt", 0);
if (PlayerPrefs.GetInt("teamThreePtt") < 0)
PlayerPrefs.SetInt("teamThreePtt", 0);
if (PlayerPrefs.GetInt("teamFourPtt") < 0)
PlayerPrefs.SetInt("teamFourPtt", 0);
timesPtt[0] = PlayerPrefs.GetInt("teamOnePtt");
timesPtt[1] = PlayerPrefs.GetInt("teamTwoPtt");
timesPtt[2] = PlayerPrefs.GetInt("teamThreePtt");
timesPtt[3] = PlayerPrefs.GetInt("teamFourPtt");
timesSaldo[0] = PlayerPrefs.GetInt("teamOneSaldo");
timesSaldo[1] = PlayerPrefs.GetInt("teamTwoSaldo");
timesSaldo[2] = PlayerPrefs.GetInt("teamThreeSaldo");
timesSaldo[3] = PlayerPrefs.GetInt("teamFourSaldo");
}
private void Update()
{
if (col == 1 || col == 2)
{
SimGroups();
}
else if (col == 3)
{
col++;
SaveInSmartPhone();
NullPlayerGroup();
SetAllGames();
VerifyNextGames();
if (PlayerPrefs.GetInt("simulate") == 1)
{
PlayOtherTeamGames();
}
if (PlayerPrefs.GetInt("playedGame") == 4)
{
VerifyGroupWinners();
SavePlayerGroupWin();
}
}
}
void NullPlayerGroup()
{
switch (playerTeamGroup)
{
case 1:
groupA = null;
break;
case 2:
groupB = null;
break;
case 3:
groupC = null;
break;
case 4:
groupD = null;
break;
case 5:
groupE = null;
break;
case 6:
groupF = null;
break;
case 7:
groupG = null;
break;
case 8:
groupH = null;
break;
}
}
void SetAllGames()
{
if (PlayerPrefs.GetInt("PlayerGroup") == 1)
{
gamesToPlay[0] = 2;
gamesToPlay[1] = 3;
gamesToPlay[2] = 4;
gamesToPlay2[0] = 1;
gamesToPlay2[1] = 4;
gamesToPlay2[2] = 3;
gamesToPlay3[0] = 4;
gamesToPlay3[1] = 1;
gamesToPlay3[2] = 2;
gamesToPlay4[0] = 3;
gamesToPlay4[1] = 2;
gamesToPlay4[2] = 1;
teamOneId = 1;
teamTwoId = 2;
teamThreeId = 3;
teamFourId = 4;
}
if (PlayerPrefs.GetInt("PlayerGroup") == 2)
{
gamesToPlay[0] = 6;
gamesToPlay[1] = 7;
gamesToPlay[2] = 8;
gamesToPlay2[0] = 5;
gamesToPlay2[1] = 8;
gamesToPlay2[2] = 7;
gamesToPlay3[0] = 8;
gamesToPlay3[1] = 5;
gamesToPlay3[2] = 6;
gamesToPlay4[0] = 7;
gamesToPlay4[1] = 6;
gamesToPlay4[2] = 5;
teamOneId = 5;
teamTwoId = 6;
teamThreeId = 7;
teamFourId = 8;
}
if (PlayerPrefs.GetInt("PlayerGroup") == 3)
{
gamesToPlay[0] = 10;
gamesToPlay[1] = 12;
gamesToPlay[2] = 11;
gamesToPlay2[0] = 9;
gamesToPlay2[1] = 12;
gamesToPlay2[2] = 11;
gamesToPlay3[0] = 12;
gamesToPlay3[1] = 9;
gamesToPlay3[2] = 10;
gamesToPlay4[0] = 11;
gamesToPlay4[1] = 10;
gamesToPlay4[2] = 9;
teamOneId = 9;
teamTwoId = 10;
teamThreeId = 11;
teamFourId = 12;
}
if (PlayerPrefs.GetInt("PlayerGroup") == 4)
{
gamesToPlay[0] = 14;
gamesToPlay[1] = 15;
gamesToPlay[2] = 16;
gamesToPlay2[0] = 13;
gamesToPlay2[1] = 16;
gamesToPlay2[2] = 15;
gamesToPlay3[0] = 16;
gamesToPlay3[1] = 13;
gamesToPlay3[2] = 14;
gamesToPlay4[0] = 15;
gamesToPlay4[1] = 14;
gamesToPlay4[2] = 13;
teamOneId = 13;
teamTwoId = 14;
teamThreeId = 15;
teamFourId = 16;
}
if (PlayerPrefs.GetInt("PlayerGroup") == 5)
{
gamesToPlay[0] = 18;
gamesToPlay[1] = 19;
gamesToPlay[2] = 20;
gamesToPlay2[0] = 17;
gamesToPlay2[1] = 20;
gamesToPlay2[2] = 19;
gamesToPlay3[0] = 20;
gamesToPlay3[1] = 17;
gamesToPlay3[2] = 18;
gamesToPlay4[0] = 19;
gamesToPlay4[1] = 18;
gamesToPlay4[2] = 17;
teamOneId = 17;
teamTwoId = 18;
teamThreeId = 19;
teamFourId = 20;
}
if (PlayerPrefs.GetInt("PlayerGroup") == 6)
{
gamesToPlay[0] = 22;
gamesToPlay[1] = 23;
gamesToPlay[2] = 24;
gamesToPlay2[0] = 21;
gamesToPlay2[1] = 24;
gamesToPlay2[2] = 23;
gamesToPlay3[0] = 23;
gamesToPlay3[1] = 21;
gamesToPlay3[2] = 24;
gamesToPlay4[0] = 23;
gamesToPlay4[1] = 21;
gamesToPlay4[2] = 22;
teamOneId = 21;
teamTwoId = 22;
teamThreeId = 23;
teamFourId =24;
}
if (PlayerPrefs.GetInt("PlayerGroup") == 7)
{
gamesToPlay[0] = 26;
gamesToPlay[1] = 27;
gamesToPlay[2] = 28;
gamesToPlay2[0] = 25;
gamesToPlay2[1] = 28;
gamesToPlay2[2] = 27;
gamesToPlay3[0] = 28;
gamesToPlay3[1] = 25;
gamesToPlay3[2] = 26;
gamesToPlay4[0] = 27;
gamesToPlay4[1] = 26;
gamesToPlay4[2] = 25;
teamOneId =25;
teamTwoId = 26;
teamThreeId = 27;
teamFourId = 28;
}
if (PlayerPrefs.GetInt("PlayerGroup") ==
{
gamesToPlay[0] = 30;
gamesToPlay[1] = 31;
gamesToPlay[2] = 32;
gamesToPlay2[0] = 29;
gamesToPlay2[1] = 32;
gamesToPlay2[2] = 31;
gamesToPlay3[0] = 32;
gamesToPlay3[1] = 29;
gamesToPlay3[2] = 30;
gamesToPlay4[0] = 31;
gamesToPlay4[1] = 30;
gamesToPlay4[2] = 29;
teamOneId = 29;
teamTwoId = 30;
teamThreeId = 31;
teamFourId = 32;
}
} //
void VerifyNextGames()
{
switch (info.teamPosInGroup[PlayerPrefs.GetInt("PlayerTeamId")]){
case 1:
switch (PlayerPrefs.GetInt("playedGame"))
{
case 1:
PlayerPrefs.SetInt("EnemyTeamId", gamesToPlay[0]);
break;
case 2:
PlayerPrefs.SetInt("EnemyTeamId", gamesToPlay[1]);
break;
case 3:
PlayerPrefs.SetInt("EnemyTeamId", gamesToPlay[2]);
break;
}
break;
case 2:
switch (PlayerPrefs.GetInt("playedGame"))
{
case 1:
PlayerPrefs.SetInt("EnemyTeamId", gamesToPlay2[0]);
break;
case 2:
PlayerPrefs.SetInt("EnemyTeamId", gamesToPlay2[1]);
break;
case 3:
PlayerPrefs.SetInt("EnemyTeamId", gamesToPlay2[2]);
break;
}
break;
case 3:
switch (PlayerPrefs.GetInt("playedGame"))
{
case 1:
PlayerPrefs.SetInt("EnemyTeamId", gamesToPlay3[0]);
break;
case 2:
PlayerPrefs.SetInt("EnemyTeamId", gamesToPlay3[1]);
break;
case 3:
PlayerPrefs.SetInt("EnemyTeamId", gamesToPlay3[2]);
break;
}
break;
case 4:
switch (PlayerPrefs.GetInt("playedGame"))
{
case 1:
PlayerPrefs.SetInt("EnemyTeamId", gamesToPlay4[0]);
break;
case 2:
PlayerPrefs.SetInt("EnemyTeamId", gamesToPlay4[1]);
break;
case 3:
PlayerPrefs.SetInt("EnemyTeamId", gamesToPlay4[2]);
break;
}
break;
}
} // IGNORAR
void PlayOtherTeamGames()
{
if(1 != info.teamPosInGroup[PlayerPrefs.GetInt("PlayerTeamId")])
{
switch (PlayerPrefs.GetInt("playedGame"))
{
case 1:
if (gamesToPlay[0] != PlayerPrefs.GetInt("PlayerTeamId"))
{
previousGames[0] = teamOneId;
previousGames[1] = gamesToPlay[0];
simOGP.DeterminateChance(teamOneId, gamesToPlay[0]);
}
break;
case 2:
if (gamesToPlay[1] != PlayerPrefs.GetInt("PlayerTeamId"))
{
simOGP.DeterminateChance(teamOneId, gamesToPlay[1]);
}
break;
case 3:
if (gamesToPlay[2] != PlayerPrefs.GetInt("PlayerTeamId"))
{
simOGP.DeterminateChance(teamOneId, gamesToPlay[2]);
}
break;
}
}
if (2 != info.teamPosInGroup[PlayerPrefs.GetInt("PlayerTeamId")])
{
switch (PlayerPrefs.GetInt("playedGame"))
{
case 1:
{
if(PlayerPrefs.GetInt("PlayerTeamId") != 1)
if (PlayerPrefs.GetInt("PlayerTeamId") != 1 || previousGames[0] != teamTwoId && previousGames[0] != gamesToPlay2[0] && previousGames[1] != gamesToPlay2[0] && previousGames[1] != teamTwoId)
{
print("test");
simOGP.DeterminateChance(teamTwoId, gamesToPlay2[0]);
previousGames[2] = teamTwoId;
previousGames[3] = gamesToPlay2[0];
}
}
break;
case 2:
if (gamesToPlay2[1] != PlayerPrefs.GetInt("PlayerTeamId"))
{
simOGP.DeterminateChance(teamTwoId, gamesToPlay2[1]);
}
break;
case 3:
if (gamesToPlay2[2] != PlayerPrefs.GetInt("PlayerTeamId"))
{
simOGP.DeterminateChance(teamTwoId, gamesToPlay2[2]);;
}
break;
}
}
if (3 != info.teamPosInGroup[PlayerPrefs.GetInt("PlayerTeamId")])
{
switch (PlayerPrefs.GetInt("playedGame"))
{
case 1:
if (gamesToPlay3[0] != PlayerPrefs.GetInt("PlayerTeamId") )
{
if (previousGames[0] != teamThreeId && previousGames[0] != gamesToPlay3[0] && previousGames[1] != gamesToPlay3[0] && previousGames[1] != teamThreeId && previousGames[2] != teamThreeId && previousGames[2] != gamesToPlay3[0] && previousGames[3] != gamesToPlay3[0] && previousGames[3] != teamThreeId)
{
simOGP.DeterminateChance(teamThreeId, gamesToPlay3[0]);
previousGames[4] = teamThreeId;
previousGames[5] = gamesToPlay3[0];
}
}
break;
case 2:
if (gamesToPlay3[1] != PlayerPrefs.GetInt("PlayerTeamId"))
{
simOGP.DeterminateChance(teamThreeId, gamesToPlay3[1]);;
}
break;
case 3:
if (gamesToPlay3[2] != PlayerPrefs.GetInt("PlayerTeamId"))
{
simOGP.DeterminateChance(teamThreeId, gamesToPlay3[2]);
}
break;
}
}
if (4 != info.teamPosInGroup[PlayerPrefs.GetInt("PlayerTeamId")])
{
switch (PlayerPrefs.GetInt("playedGame"))
{
case 1:
if (gamesToPlay4[0] != PlayerPrefs.GetInt("PlayerTeamId"))
{
if (previousGames[0] != teamFourId && previousGames[0] != gamesToPlay4[0] && previousGames[1] != gamesToPlay4[0] && previousGames[1] != teamFourId && previousGames[2] != teamFourId && previousGames[2] != gamesToPlay4[0] && previousGames[3] != gamesToPlay4[0] && previousGames[3] != teamFourId && previousGames[4] != gamesToPlay4[0] && previousGames[4] != teamFourId && previousGames[5] != gamesToPlay4[0] && previousGames[5] != teamFourId)
simOGP.DeterminateChance(teamFourId, gamesToPlay4[0]);
else
return;
}
break;
case 2:
if (gamesToPlay4[1] != PlayerPrefs.GetInt("PlayerTeamId"))
{
simOGP.DeterminateChance(teamFourId, gamesToPlay4[1]);
}
break;
case 3:
if (gamesToPlay4[2] != PlayerPrefs.GetInt("PlayerTeamId"))
{
simOGP.DeterminateChance(teamFourId, gamesToPlay4[2]);
}
break;
}
}
} //
void SaveInSmartPhone()
{
PlayerPrefs.SetInt("groupA1", groupA[0]);
PlayerPrefs.SetInt("groupA2", groupA[1]);
PlayerPrefs.SetInt("groupB1", groupB[0]);
PlayerPrefs.SetInt("groupB2", groupB[1]);
PlayerPrefs.SetInt("groupC1", groupC[0]);
PlayerPrefs.SetInt("groupC2", groupC[1]);
PlayerPrefs.SetInt("groupD1", groupD[0]);
PlayerPrefs.SetInt("groupD2", groupD[1]);
PlayerPrefs.SetInt("groupE1", groupE[0]);
PlayerPrefs.SetInt("groupE2", groupE[1]);
PlayerPrefs.SetInt("groupF1", groupF[0]);
PlayerPrefs.SetInt("groupF2", groupF[1]);
PlayerPrefs.SetInt("groupG1", groupG[0]);
PlayerPrefs.SetInt("groupG2", groupG[1]);
PlayerPrefs.SetInt("groupH1", groupH[0]);
PlayerPrefs.SetInt("groupH2", groupH[1]);
PlayerPrefs.SetInt("playerGroup", playerTeamGroup);
}
void SavePlayerGroupWin()
{
switch (playerTeamGroup)
{
case 1:
PlayerPrefs.SetInt("groupA1", info.groupA[maior1 + 1]);
PlayerPrefs.SetInt("groupA2", info.groupA[maior2 + 1]);
PlayerPrefs.SetInt("PlayerGroup", 1);
break;
case 2:
PlayerPrefs.SetInt("groupB1", info.groupB[maior1 + 1]);
PlayerPrefs.SetInt("groupB2", info.groupB[maior2 + 1]);
PlayerPrefs.SetInt("PlayerGroup", 2);
break;
case 3:
PlayerPrefs.SetInt("groupC1", info.groupC[maior1 + 1]);
PlayerPrefs.SetInt("groupC2", info.groupC[maior2 + 1]);
PlayerPrefs.SetInt("PlayerGroup", 3);
break;
case 4:
PlayerPrefs.SetInt("groupD1", info.groupD[maior1 + 1]);
PlayerPrefs.SetInt("groupD2", info.groupD[maior2 + 1]);
PlayerPrefs.SetInt("PlayerGroup", 4);
break;
case 5:
PlayerPrefs.SetInt("groupE1", info.groupE[maior1 + 1]);
PlayerPrefs.SetInt("groupE2", info.groupE[maior2 + 1]);
PlayerPrefs.SetInt("PlayerGroup", 5);
break;
case 6:
PlayerPrefs.SetInt("groupF1", info.groupF[maior1 + 1]);
PlayerPrefs.SetInt("groupF2", info.groupF[maior2 + 1]);
PlayerPrefs.SetInt("PlayerGroup", 6);
break;
case 7:
PlayerPrefs.SetInt("groupG1", info.groupG[maior1 + 1]);
PlayerPrefs.SetInt("groupG2", info.groupG[maior2 + 1]);
PlayerPrefs.SetInt("PlayerGroup", 7);
break;
case 8:
PlayerPrefs.SetInt("groupH1", info.groupH[maior1 + 1]);
PlayerPrefs.SetInt("groupH2", info.groupH[maior2 + 1]);
PlayerPrefs.SetInt("PlayerGroup",8);
break;
}
}
void SimGroups()
{
GroupASim();
GroupBSim();
GroupCSim();
GroupDSim();
GroupESim();
GroupFSim();
GroupGSim();
GroupHSim();
col++;
}
void GroupASim()
{
int temp = Random.Range(0, 100);
if(temp <= 50)
groupA[col-1] = 4;
if (temp > 50 && temp < 60)
groupA[col - 1] = 2;
if (temp > 60 && temp < 75)
groupA[col - 1] = 1;
if (temp > 75)
groupA[col - 1] = 3;
if(col == 2)
{
while (groupA[0] == groupA[1])
groupA[1] = Random.Range(1, 4);
}
}
void GroupBSim()
{
int temp = Random.Range(0, 100);
if (temp <= 50)
groupB[col - 1] = 6;
if (temp > 50 && temp <= 90)
groupB[col - 1] = 5;
if (temp > 90 && temp <= 95)
groupB[col - 1] = 7;
if (temp > 95)
groupB[col - 1] = 8;
if (col == 2)
{
while (groupB[0] == groupB[1])
groupB[1] = Random.Range(5, 8);
}
}
void GroupCSim()
{
int temp = Random.Range(0, 100);
if (temp <= 50)
groupC[col - 1] = 9;
if (temp > 50 && temp <= 70)
groupC[col - 1] = 12;
if (temp > 70 && temp <= 85)
groupC[col - 1] = 11;
if (temp > 85)
groupC[col - 1] = 10;
if (col == 2)
{
while (groupC[0] == groupC[1])
groupC[1] = Random.Range(9, 12);
}
}
void GroupDSim()
{
int temp = Random.Range(0, 100);
if (temp <= 50)
groupD[col - 1] = 13;
if (temp > 50 && temp <= 70)
groupD[col - 1] = 14;
if (temp > 70 && temp <= 90)
groupD[col - 1] = 15;
if (temp > 90)
groupD[col - 1] = 16;
if (col == 2)
{
while (groupD[0] == groupD[1])
groupD[1] = Random.Range(13, 16);
}
}
void GroupESim()
{
int temp = Random.Range(0, 100);
if (temp <= 50)
groupE[col - 1] = 17;
if (temp > 50 && temp <= 70)
groupE[col - 1] = 18;
if (temp > 70 && temp <= 90)
groupE[col - 1] = 19;
if (temp > 90)
groupE[col - 1] = 20;
if (col == 2)
{
while (groupE[0] == groupE[1])
groupE[1] = Random.Range(17, 20);
}
}
void GroupFSim()
{
int temp = Random.Range(0, 100);
if (temp <= 50)
groupF[col - 1] = 21;
if (temp > 50 && temp <= 70)
groupF[col - 1] = 22;
if (temp > 70 && temp <= 90)
groupF[col - 1] = 23;
if (temp > 90)
groupF[col - 1] = 24;
if (col == 2)
{
while (groupF[0] == groupF[1])
groupF[1] = Random.Range(21, 24);
}
}
void GroupGSim()
{
int temp = Random.Range(0, 100);
if (temp <= 40)
groupG[col - 1] = 25;
if (temp > 40 && temp <= 80)
groupG[col - 1] = 28;
if (temp > 80 && temp <= 90)
groupG[col - 1] = 27;
if (temp > 90)
groupG[col - 1] = 26;
if (col == 2)
{
while (groupG[0] == groupG[1])
groupG[1] = Random.Range(25, 28);
}
}
void GroupHSim()
{
int temp = Random.Range(0, 100);
if (temp <= 40)
groupH[col - 1] = 29;
if (temp > 40 && temp <= 80)
groupH[col - 1] = 31;
if (temp > 80 && temp <= 95)
groupH[col - 1] = 30;
if (temp > 95)
groupH[col - 1] = 32;
if (col == 2)
{
while (groupH[0] == groupH[1])
groupH[1] = Random.Range(29, 32);
}
}
}
Esse é o resto do código que postei no inicio do tópico
Feromark2013- Membro
- PONTOS : 2989
REPUTAÇÃO : 4
Idade : 20
Áreas de atuação : C##
Respeito as regras :
Re: [RESOLVIDO]Pegar 2 maiores numeros de uma array
Ixi. :affraid:
Pelo oq eu notei, seu maior problema está em separar as informações de cada um em arrays separadas.
Vc poderia cria uma classe que tem como propriedades cada informação q vc precisa, daí quando criar um novo time, basta setar essas informações dentro de um objeto, utilizando os velhos princípios da POO:
Daí nesse outro script vc instancia esses valores com as informações de cada time dentro de um array:
Adiciona aí todos os times q vc quer.
Daí para colocá-los no grupo, vc faz:
E assim sucessivamente...
Daí para verificar alguma informação fica mais fácil, por exemplo, quais times do grupo A tem maior valor de poder:
Então dentro do array "maioresGrupoA" vc irá armazenar os dois times que tem mais 'poder' do grupo A, para acessar esses valores, basta fazer:
E assim vc poderá verificar se são os 2 maiores mesmo, sendo o maior estando na posição 0 do array e o segundo maior na posição 1.
Se fizer isso com os outros grupos da mesma forma, vc consegue ter todos os valores que desejar usando POO.
Pelo oq eu notei, seu maior problema está em separar as informações de cada um em arrays separadas.
Vc poderia cria uma classe que tem como propriedades cada informação q vc precisa, daí quando criar um novo time, basta setar essas informações dentro de um objeto, utilizando os velhos princípios da POO:
- Código:
public class Times{
public int poder;
public Sprite bandeira;
public string nome;
public Times (int p, Sprite b, string n){
poder = p;
bandeira = b;
nome = n;
}
}
Daí nesse outro script vc instancia esses valores com as informações de cada time dentro de um array:
- Código:
Times[] times = {new Times(1, sprite.Bandeira, "Brasil"),
new Times(2, sprite.Bandeira, "EUA")} ;
Adiciona aí todos os times q vc quer.
Daí para colocá-los no grupo, vc faz:
- Código:
Times[] grupoA = {times[0], times[1]};
E assim sucessivamente...
Daí para verificar alguma informação fica mais fácil, por exemplo, quais times do grupo A tem maior valor de poder:
- Código:
int[] maioresGrupoA = new int [2];
maioresGrupoA = grupoA.OrderByDescending(g => g.poder).ToArray();
Então dentro do array "maioresGrupoA" vc irá armazenar os dois times que tem mais 'poder' do grupo A, para acessar esses valores, basta fazer:
- Código:
Debug.Log(maioresGrupoA[0], maioresGrupoA[1]);
E assim vc poderá verificar se são os 2 maiores mesmo, sendo o maior estando na posição 0 do array e o segundo maior na posição 1.
Se fizer isso com os outros grupos da mesma forma, vc consegue ter todos os valores que desejar usando POO.
Re: [RESOLVIDO]Pegar 2 maiores numeros de uma array
Depois vou ter que fazer isso, vou ter que reescrever um monte de coisas mais não tem problema. Esse método fica mais leve também?
Obrigado pela ajuda cara
Obrigado pela ajuda cara
Feromark2013- Membro
- PONTOS : 2989
REPUTAÇÃO : 4
Idade : 20
Áreas de atuação : C##
Respeito as regras :
Re: [RESOLVIDO]Pegar 2 maiores numeros de uma array
mas por exemplo eu quiser ver o poder do time que tem o id x como eu faço nesse caso?
Feromark2013- Membro
- PONTOS : 2989
REPUTAÇÃO : 4
Idade : 20
Áreas de atuação : C##
Respeito as regras :
Re: [RESOLVIDO]Pegar 2 maiores numeros de uma array
- Spoiler:
- poiler]][/quote]
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Linq;
public class TeamInfo : MonoBehaviour {
public string[] frasesVitoria;
public string[] frasesDerrota;
public string[] frasesCampeao;
public int[] poderTimes;
public string[] nomeTimes;
public Sprite[] bandeiras;
public int[] teamPosInGroup;
private static TeamInfo teamInfo;
public int[] groupA, groupB, groupC, groupD, groupE, groupF, groupG, groupH;
private Times[] times;
private void Awake()
{
DontDestroyOnLoad(this);
if (teamInfo == null)
{
teamInfo = this;
}
else
{
Destroy(gameObject);
}
}
private void Start()
{
SetPower();
SetNames();
SetGroups();
SetTimes();
print(times[1].nome);
}
private void SetTimes()
{
Times[] times = {
new Times("Russia", 2,bandeiras[1]),
new Times("Arabia Saudita", 1, bandeiras[2]),
new Times("Egito", 3, bandeiras[3]),
new Times("Uruguai", 5, bandeiras[4]),
new Times("Portugal", 5, bandeiras[5]),
new Times("Espanha", 5, bandeiras[6]),
new Times("Marrocos", 1, bandeiras[7]),
new Times("Ira", 1, bandeiras[8]),
new Times("França",6,bandeiras[9]),
new Times("Australia", 2, bandeiras[10]),
new Times("Peru", 2, bandeiras[11]),
new Times("Dinamarca", 3, bandeiras[12]),
new Times("Argentina", 5, bandeiras[13]),
new Times("Islandia", 3, bandeiras[14]),
new Times("Croacia", 3, bandeiras[15]),
new Times("Nigeria",2, bandeiras[16]),
new Times("Brasil", 6, bandeiras[17]),
new Times("Suiça", 4, bandeiras[18]),
new Times("Costa Rica", 3, bandeiras[19]),
new Times("Servia", 3, bandeiras[20]),
new Times("Alemanha",6, bandeiras[21]),
new Times("Mexico", 3, bandeiras[22]),
new Times("Suecia", 3, bandeiras[23]),
new Times("Coreia do Sul", 2, bandeiras[24]),
new Times("Belgica", 5, bandeiras[25]),
new Times("Panama", 1, bandeiras[26]),
new Times("Tunisia", 1, bandeiras[27]),
new Times("Inglaterra",5,bandeiras[28]),
new Times("Polonia", 4, bandeiras[29]),
new Times("Senegal", 1, bandeiras[30]),
new Times("Colombia", 4, bandeiras[31]),
new Times("Japão", 2,bandeiras[32]),
};
}
void SetPower()
{
//Grupo A
poderTimes[1] = 2;
poderTimes[2] = 1;
poderTimes[3] = 3;
poderTimes[4] = 5;
//Grupo B
poderTimes[5] = 5;
poderTimes[6] = 5;
poderTimes[7] = 1;
poderTimes[8] = 1;
//Grupo C
poderTimes[9] = 6;
poderTimes[10] = 2;
poderTimes[11] = 2;
poderTimes[12] = 3;
//Grupo D
poderTimes[13] = 5;
poderTimes[14] = 3;
poderTimes[15] = 3;
poderTimes[16] = 2;
//Grupo E
poderTimes[17] = 6;
poderTimes[18] = 4;
poderTimes[19] = 3;
poderTimes[20] = 3;
//Grupo F
poderTimes[21] = 6;
poderTimes[22] = 3;
poderTimes[23] = 3;
poderTimes[24] = 2;
//Grupo G
poderTimes[25] = 5;
poderTimes[26] = 1;
poderTimes[27] = 1;
poderTimes[28] = 5;
//Grupo H
poderTimes[29] = 4;
poderTimes[30] = 1;
poderTimes[31] = 4;
poderTimes[32] = 2;
}
void SetNames()
{
nomeTimes[1] = "Russia";
nomeTimes[2] = "Arabia Saudita";
nomeTimes[3] = "Egito";
nomeTimes[4] = "Uruguai";
nomeTimes[5] = "Portugal";
nomeTimes[6] = "Espanha";
nomeTimes[7] = "Marrocos";
nomeTimes[8] = "Ira";
nomeTimes[9] = "França";
nomeTimes[10] = "Australia";
nomeTimes[11] = "Peru";
nomeTimes[12] = "Dinamarca";
nomeTimes[13] = "Argentina";
nomeTimes[14] = "Islandia";
nomeTimes[15] = "Croacia";
nomeTimes[16] = "Nigeria";
nomeTimes[17] = "Brasil";
nomeTimes[18] = "Suiça";
nomeTimes[19] = "Costa Rica";
nomeTimes[20] = "Servia";
nomeTimes[21] = "Alemanha";
nomeTimes[22] = "Mexico";
nomeTimes[23] = "Suecia";
nomeTimes[24] = "Coreia Do Sul";
nomeTimes[25] = "Belgica";
nomeTimes[26] = "Panama";
nomeTimes[27] = "Tunisia";
nomeTimes[28] = "Inglaterra";
nomeTimes[29] = "Polonia";
nomeTimes[30] = "Senegal";
nomeTimes[31] = "Colombia";
nomeTimes[32] = "Japao";
}
void SetGroups()
{
groupA[1] = 1;
groupA[2] = 2;
groupA[3] = 3;
groupA[4] = 4;
groupB[1] = 5;
groupB[2] = 6;
groupB[3] = 7;
groupB[4] = 8;
groupC[1] = 9;
groupC[2] = 10;
groupC[3] = 11;
groupC[4] = 12;
groupD[1] = 13;
groupD[2] = 14;
groupD[3] = 15;
groupD[4] = 16;
groupE[1] = 17;
groupE[2] = 18;
groupE[3] = 19;
groupE[4] = 20;
groupF[1] = 21;
groupF[2] = 22;
groupF[3] = 23;
groupF[4] = 24;
groupG[1] = 25;
groupG[2] = 26;
groupG[3] = 27;
groupG[4] = 28;
groupH[1] = 29;
groupH[2] = 30;
groupH[3] = 31;
groupH[4] = 32;
}
}
quando tento dar um debug no nome do item da primeira posição da array diz que "Object Reference Not Set To Instance o Object"
Feromark2013- Membro
- PONTOS : 2989
REPUTAÇÃO : 4
Idade : 20
Áreas de atuação : C##
Respeito as regras :
Feromark2013- Membro
- PONTOS : 2989
REPUTAÇÃO : 4
Idade : 20
Áreas de atuação : C##
Respeito as regras :
Re: [RESOLVIDO]Pegar 2 maiores numeros de uma array
@Feromark2013 Quando o código for muito grande, coloque dentro de um spoiler, porque não há scroll que aguente... Tópico resolvido.
Tópicos semelhantes
» [RESOLVIDO] Pegar números diferentes de uma int
» [RESOLVIDO] Pegar Objetos Filhos e Adicionar em uma Lista ou Array para Usálos como Waypoints
» [RESOLVIDO] Array, colocar varios vector3 em uma array por script
» Pegar Componentes de uma array!
» [RESOLVIDO] Som nos números na contagem regressiva
» [RESOLVIDO] Pegar Objetos Filhos e Adicionar em uma Lista ou Array para Usálos como Waypoints
» [RESOLVIDO] Array, colocar varios vector3 em uma array por script
» Pegar Componentes de uma array!
» [RESOLVIDO] Som nos números na contagem regressiva
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos