Conectar-se
Quem está conectado
27 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 27 Visitantes

Nenhum

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Ranking : Nota B
Notas recebidas : B + A + C
Data de inscrição : 29/10/2010
Número de Mensagens : 1013
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 79

Prêmios
   : 2
   : 0
   : 0
Ver perfil do usuário

Organizando uma Tabela e Dando Critério para Desempate

em Seg 18 Jul 2011, 15:40
Oi. Estou criando uma tabela (com ds_list), consigo adicionar valores à ela, porém não faço ideia de como fazer isso:

1. Existem duas tabelas com dois valores, que são:

teams_tab - Com team[1].name e team[2].name
points_tab - Com team[1].pts e team[2].pts

A segunda tabela eu uso sort e funciona, mas como fazer as Strings team[1].name e team[2].name acompanhá-las? Porque quando dou sort na teams_tab organiza por ordem alfabética.

2. Se existirem dois valores iguais na tabela, como fazer com que a tabela deixe à frente o time que tiver mais de outra variável? (Que está em outra tabela, que seria a goals_tab).

Até e obrigado.
Ranking : Nota C
Notas recebidas : C+B
Data de inscrição : 26/07/2008
Número de Mensagens : 6037
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 288

Prêmios
   :
   :
   :
Ver perfil do usuário

Re: Organizando uma Tabela e Dando Critério para Desempate

em Seg 18 Jul 2011, 15:52
Você precisaria fazer isso:

- Depois de usar sort:
Código:
indice_team1=ds_list_find_index(points_tab, team[1].pts)
indice_team2=ds_list_find_index(points_tab, team[2].pts)
ds_list_replace(teams_tab, indice_team1, team[1].name)
ds_list_replace(teams_tab, indice_team2, team[2].name)

Vou pesquisar sobre a questão 2.

Até mais!
avatar
Ranking : Nota B
Notas recebidas : B + A + C
Data de inscrição : 29/10/2010
Número de Mensagens : 1013
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 79

Prêmios
   : 2
   : 0
   : 0
Ver perfil do usuário

Re: Organizando uma Tabela e Dando Critério para Desempate

em Seg 18 Jul 2011, 18:35
Pô, funcionou não... olha o que eu fiz: (Create)

Código:
team1 = 'Flamengo'
team2 = 'Botafogo'
team3 = 'Fluminense'
team4 = 'Vasco'

pts1 = round(random_range(floor(5),20))
pts2 = round(random_range(floor(5),20))
pts3 = round(random_range(floor(5),20))
pts4 = round(random_range(floor(5),20))


teams_tab = ds_list_create();

ds_list_add(teams_tab,team1);
ds_list_add(teams_tab,team2);
ds_list_add(teams_tab,team3);
ds_list_add(teams_tab,team4);


pts_tab = ds_list_create();

ds_list_add(pts_tab,pts1);
ds_list_add(pts_tab,pts2);
ds_list_add(pts_tab,pts3);
ds_list_add(pts_tab,pts4);

ds_list_sort(pts_tab,true)

indice_team1=ds_list_find_index(pts_tab, team1)
indice_team2=ds_list_find_index(pts_tab, team2)
indice_team3=ds_list_find_index(pts_tab, team3)
indice_team4=ds_list_find_index(pts_tab, team4)

ds_list_replace(teams_tab, indice_team1, pts1)
ds_list_replace(teams_tab, indice_team2, pts2)
ds_list_replace(teams_tab, indice_team3, pts3)
ds_list_replace(teams_tab, indice_team4, pts4)
avatar
Ranking : Sem avaliações
Data de inscrição : 11/10/2009
Número de Mensagens : 2184
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 106

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Organizando uma Tabela e Dando Critério para Desempate

em Seg 18 Jul 2011, 18:40
Já que você quer acompanhá-las, seria correto usar ds_list_insert, o Pedro Henrique usou replace (descuido, acho eu)
Código:
ds_list_insert(teams_tab, indice_team1, pts1)
ds_list_insert(teams_tab, indice_team2, pts2)
ds_list_insert(teams_tab, indice_team3, pts3)
ds_list_insert(teams_tab, indice_team4, pts4)
Vê se funciona agora.
Ranking : Nota C
Notas recebidas : C+B
Data de inscrição : 26/07/2008
Número de Mensagens : 6037
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 288

Prêmios
   :
   :
   :
Ver perfil do usuário

Re: Organizando uma Tabela e Dando Critério para Desempate

em Seg 18 Jul 2011, 18:44
Nessa parte, inverta tudo:
Código:
indice_team1=ds_list_find_index(pts_tab, team1)
indice_team2=ds_list_find_index(pts_tab, team2)
indice_team3=ds_list_find_index(pts_tab, team3)
indice_team4=ds_list_find_index(pts_tab, team4)

ds_list_replace(teams_tab, indice_team1, pts1)
ds_list_replace(teams_tab, indice_team2, pts2)
ds_list_replace(teams_tab, indice_team3, pts3)
ds_list_replace(teams_tab, indice_team4, pts4)
Ficando assim:
Código:
indice_team1=ds_list_find_index(pts_tab, pts1)
indice_team2=ds_list_find_index(pts_tab, pts2)
indice_team3=ds_list_find_index(pts_tab, pts3)
indice_team4=ds_list_find_index(pts_tab, pts4)

ds_list_replace(teams_tab, indice_team1, team1)
ds_list_replace(teams_tab, indice_team2, team2)
ds_list_replace(teams_tab, indice_team3, team3)
ds_list_replace(teams_tab, indice_team4, team4)

Até mais!
avatar
Ranking : Nota B
Notas recebidas : B + A + C
Data de inscrição : 29/10/2010
Número de Mensagens : 1013
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 79

Prêmios
   : 2
   : 0
   : 0
Ver perfil do usuário

Re: Organizando uma Tabela e Dando Critério para Desempate

em Seg 18 Jul 2011, 19:31
Nenhuma das duas funcionou... Será que está no Draw o problema?

Draw:

Código:
for(i=0;i<ds_list_size(teams_tab);i+=1) {draw_text(60,16+(16*i),ds_list_find_value(teams_tab,i));}

for(i=0;i<ds_list_size(pts_tab);i+=1){draw_text(160,16+(16*i),ds_list_find_value(pts_tab,i));}

Até.
Ranking : Nota C
Notas recebidas : C+B
Data de inscrição : 26/07/2008
Número de Mensagens : 6037
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 288

Prêmios
   :
   :
   :
Ver perfil do usuário

Re: Organizando uma Tabela e Dando Critério para Desempate

em Seg 18 Jul 2011, 20:04
Você poderia fazer com ds_map.

Código:
team1 = 'Flamengo'
team2 = 'Botafogo'
team3 = 'Fluminense'
team4 = 'Vasco'
pts1 = round(random_range(5,20))
pts2 = round(random_range(5,20))
pts3 = round(random_range(5,20))
pts4 = round(random_range(5,20))

teams_tab = ds_map_create();
ds_map_add(teams_tab, pts1, team1)
ds_map_add(teams_tab, pts2, team2)
ds_map_add(teams_tab, pts3, team3)
ds_map_add(teams_tab, pts4, team4)
//ordenar
maior[0]=ds_map_find_last(teams_tab);
time[0]=ds_map_find_value(teams_tab, maior[0]);
for(i=1;i<ds_map_size(teams_tab);i+=1){
maior[i]=ds_map_find_previous(teams_tab, maior[i-1]);
time[i]=ds_map_find_value(teams_tab, maior[i]);
}
O maior[0] é a maior pontuação.
O time[0] é o time mais pontuado.
É só você desenhar de tras para frente agora.
Essa é sua tarefa. Tudo está em ordem, basta desenhar agora.

Até mais!
avatar
Ranking : Nota B
Notas recebidas : B + A + C
Data de inscrição : 29/10/2010
Número de Mensagens : 1013
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 79

Prêmios
   : 2
   : 0
   : 0
Ver perfil do usuário

Re: Organizando uma Tabela e Dando Critério para Desempate

em Ter 19 Jul 2011, 19:01
Tentei desenhar aqui porém sem sucesso... Nunca mexi com ds_map. Pode dar uma mãozinha?
avatar
Ranking : Nota B
Notas recebidas : B-C-A-C
Data de inscrição : 18/09/2008
Número de Mensagens : 2490
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 1 Insignia 3x 0
Reputação : 52

Prêmios
   : 0
   : 2
   : 1
Ver perfil do usuáriohttp://xcreatorgames.weebly.com/

Re: Organizando uma Tabela e Dando Critério para Desempate

em Ter 19 Jul 2011, 19:26
Amigo, a maneira mais simples de fazer isso resolvendo os 2 problemas ao mesmo tempo é a seguinte:
Veja:
Código:

lista_geral = ds_list_create();
//adicionar na lista assim:
ds_list_add(lista_geral, team[1].pts "|" + team[1].name + "|" + goals_tab[1] + "|";
ds_list_add(lista_geral, team[2].pts "|" + team[2].name + "|" + goals_tab[2] + "|";
//etc
ds_list_sort(lista_geral);
//agora basta separa cada item ordenado
for (i = 0; i < ds_list_size(lista_geral); i += 1)
{
  str = ds_list_find_value(lista_geral, i);
  p = string_pos("|", str);
  time = string_copy(str, 1, p - 1);str = string_delete(str, 1, p);
  p = string_pos("|", str);
  pontos = string_copy(str, 1, p - 1);str = string_delete(str, 1, p);
  p = string_pos("|", str);
  goal = string_copy(str, 1, p - 1);str = string_delete(str, 1, p);
  //Viu retiramos todos os dados devidamente ordenados
}
Basicamente é isso. Esse é o código, funciona mas eu nao testei no GM pode ter algum erro de sintaxe. Mas a idéia funciona.
FlwS!
Conteúdo patrocinado

Re: Organizando uma Tabela e Dando Critério para Desempate

Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum