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
» Retorno da GMBR!!!
por theguitarmester Ter 19 Mar 2024, 22:38

» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Mudar cor de apenas uma palavra
por lunalol Sex 01 Mar 2024, 13:42

» 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

» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18

» 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

» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56

» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49

» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21

» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21

» Asteroid Core - Early Acesse Update [0.2.0.0]
por JOZ. Seg 08 Jan 2024, 14:39

» Versionamento de código com GitHub
por GabrielXavier Seg 08 Jan 2024, 07:32

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por kolesovsup Sex 29 Dez 2023, 07:16

» a funçao approach ainda existe?
por PEDRINDEV Ter 26 Dez 2023, 20:05

» Inimigo ataca até por trás! >:(
por saim Sex 22 Dez 2023, 08:55

» [RESOLVIDO]Spawn após morte
por Deception_1999 Dom 17 Dez 2023, 16:39

» Remunerado $$$ - Procuro programador para ajudar a "montar" um jogo
por theguitarmester Sáb 02 Dez 2023, 16:28

» Game maker nao abre
por Cerf Dom 26 Nov 2023, 12:01


Organizando uma Tabela e Dando Critério para Desempate

4 participantes

Ir para baixo

Organizando uma Tabela e Dando Critério para Desempate Empty Organizando uma Tabela e Dando Critério para Desempate

Mensagem por Gonçalves 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.
Gonçalves
Gonçalves

Games Ranking : Nota B

Notas recebidas : B + A + C
Data de inscrição : 29/10/2010
Reputação : 79
Número de Mensagens : 1013
Prêmios : Organizando uma Tabela e Dando Critério para Desempate Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 2 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

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

Mensagem por PedroX 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!

_________________


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 : 6086
Prêmios : Organizando uma Tabela e Dando Critério para Desempate 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

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

Mensagem por Gonçalves 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)
Gonçalves
Gonçalves

Games Ranking : Nota B

Notas recebidas : B + A + C
Data de inscrição : 29/10/2010
Reputação : 79
Número de Mensagens : 1013
Prêmios : Organizando uma Tabela e Dando Critério para Desempate Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 2 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

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

Mensagem por Markituh 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.
Markituh
Markituh

Games Ranking : Sem avaliações

Data de inscrição : 11/10/2009
Reputação : 106
Número de Mensagens : 2184
Prêmios : Organizando uma Tabela e Dando Critério para Desempate 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

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

Mensagem por PedroX 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!

_________________


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 : 6086
Prêmios : Organizando uma Tabela e Dando Critério para Desempate 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

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

Mensagem por Gonçalves 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é.
Gonçalves
Gonçalves

Games Ranking : Nota B

Notas recebidas : B + A + C
Data de inscrição : 29/10/2010
Reputação : 79
Número de Mensagens : 1013
Prêmios : Organizando uma Tabela e Dando Critério para Desempate Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 2 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

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

Mensagem por PedroX 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!

_________________


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 : 6086
Prêmios : Organizando uma Tabela e Dando Critério para Desempate 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

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

Mensagem por Gonçalves Ter 19 Jul 2011, 19:01

Tentei desenhar aqui porém sem sucesso... Nunca mexi com ds_map. Pode dar uma mãozinha?
Gonçalves
Gonçalves

Games Ranking : Nota B

Notas recebidas : B + A + C
Data de inscrição : 29/10/2010
Reputação : 79
Número de Mensagens : 1013
Prêmios : Organizando uma Tabela e Dando Critério para Desempate Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 2 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

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

Mensagem por vinians 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!
vinians
vinians

Games Ranking : Nota B

Notas recebidas : B-C-A-C
Data de inscrição : 18/09/2008
Reputação : 90
Número de Mensagens : 2715
Prêmios : Organizando uma Tabela e Dando Critério para Desempate Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 0 Prata x 2 Bronze x 1

Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4
  • Game Maker Studio 2.0
  • Construct 2
  • Java
  • C#
  • Javascript
  • C ou C++
  • Outros


https://vinians.itch.io

Ir para o topo Ir para baixo

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

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo


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