Problemas com arrays

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Problemas com arrays

Mensagem por Felipe Reis Magno 2 em Sex 08 Ago 2014, 13:55

Olá a todos, já tive uma conta neste fórum, porém eu perdi a senha... Enfim, estou de volta agora e tenho uma dúvida em relação a ARRAYS.
minha intenção inicial era selecionar cartas aleatórias do baralho, e continuar as comprando, mas sem repetições.
Estudei alguns tutoriais sobre arrays (por enquanto não entrarei no estudo de ds_list) e consegui fazer uma engine, porém as cartas se repetem quando eu clico no obj_baralho para cria-las... Vejam:

Código:

image_speed=0;

var i;
i=0;
cartas[i]=0;i+=1
cartas[i]=1;i+=1
cartas[i]=2;i+=1
cartas[i]=3;i+=1
cartas[i]=4;i+=1
cartas[i]=5;i+=1
cartas[i]=6;i+=1
cartas[i]=7;i+=1
cartas[i]=8;i+=1
cartas[i]=9;i+=1
cartas[i]=10;i+=1
cartas[i]=11;i+=1
cartas[i]=12;i+=1
cartas[i]=13;i+=1
cartas[i]=14;i+=1
cartas[i]=15;i+=1
cartas[i]=16;i+=1
cartas[i]=17;i+=1
cartas[i]=18;i+=1
cartas[i]=19;i+=1
cartas[i]=20;i+=1
cartas[i]=21;i+=1
cartas[i]=22;i+=1
cartas[i]=23;i+=1
cartas[i]=24;i+=1
cartas[i]=25;i+=1
cartas[i]=26;i+=1
cartas[i]=27;i+=1
cartas[i]=28;i+=1
cartas[i]=29;i+=1
cartas[i]=30;i+=1
cartas[i]=31;i+=1
cartas[i]=32;i+=1
cartas[i]=33;i+=1
cartas[i]=34;i+=1
cartas[i]=35;i+=1
cartas[i]=36;i+=1
cartas[i]=37;i+=1
cartas[i]=38;i+=1
cartas[i]=39;i+=1
cartas[i]=40;i+=1
cartas[i]=41;i+=1
cartas[i]=42;i+=1
cartas[i]=43;i+=1
cartas[i]=44;i+=1
cartas[i]=45;i+=1
cartas[i]=46;i+=1
cartas[i]=47;i+=1
cartas[i]=48;i+=1
cartas[i]=49;i+=1

cartas[i]=49;

cartas[i]=image_index||i==49;

image_index=random(49);

for (i=0; i<=49 i+=1)
cartas[i]=0;


Este código eu coloquei no evento Create do obj_carta.
Eu sinceramente entendi muito pouco sobre como aplicar arrays, apesar de já entender bem as suas variadas utilidades.
Por favor, se alguém poder me dar um help, eu já agradeço!!!

Felipe Reis Magno 2

Ranking : Nota E
Número de Mensagens : 43
Data de inscrição : 08/08/2014
Notas recebidas : E
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Problemas com arrays

Mensagem por Isaque Onix em Sex 08 Ago 2014, 15:12

cartas[i]=8 // guarda a indentificaçao da carta... certo?
tente:

cartas[i,0]=8//id da carta
cartas[i,1]=false//comprada  true = comprada false = nao comprada

dai so fazer com que cartas[i,1]=true quando comprar...

sei que nao pediu ajuda com isso, mais e mais facil se iniciar assim:

Código:
i=0//inicia a contagem das cartas
repeat(49){
cartas[i,0]=i//id da carta
cartas[i,1]=false//comprada  true = comprada false = nao comprada
i+=1//aumenta a contagem das cartas
}

ou

Código:

for(i=0; i<50; i+=1){
cartas[i,0]=i//id da carta
cartas[i,1]=false//comprada  true = comprada false = nao comprada
}

Isaque Onix

Número de Mensagens : 1597
Idade : 23
Data de inscrição : 15/08/2010
Reputação : 147
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://spyreserver.16mb.com

Voltar ao Topo Ir em baixo

Re: Problemas com arrays

Mensagem por Alex FC em Sex 08 Ago 2014, 15:24

Isaque Foi mais rápido.

Na programação você encontrará mais sobre isso procurando por "Vetores". O modo mais confortável e otimizado de fazer isso é utilizando ds_lists. Se usássemos vetores, teríamos um trabalho 'braçal' muito maior e possivelmente um código confuso.

O baralho que está usando é um baralho comum (Francês)? Como não disse, vamos supor que seja. Ele tem 52 cartas, vamos dizer que tu tem ai uma sprite com 52 frames, uma carta de cada. No create do obj_baralho coloque:

Código:
//Cria lista vazia para as cartas
cartas = ds_list_create();

//Preenche lista com valores de 0 a 51 - Caso a quantidade de cartas for menor troque o 52 pela quantia certa
for (var i = 0; i < 52; i++)
{
    ds_list_add(cartas, i);
}

Essa lista vai guardar as cartas que não foram usados. No caso, todos. Agora a usaremos para criar as cartas. Vá até o evento de clique no obj_baralho e coloque:

Código:
//Se tem cartas no baralho
if ds_list_size(cartas) > 0
{
    //Embaralha baralho -_-
    ds_list_shuffle(cartas);
    
    //Pega a primeira carta da lista e armazena na variável n
    var n = ds_list_find_value(cartas,0);
    
    //Cria uma carta e armazena sua referência (id) na variável i
    var i = instance_create(mouse_x, mouse_y, obj_card);
    
    //Seleciona subimagem da carta criada
    i.image_index = n;
    
    //Deleta essa carta do baralho para que não apareça na próxima
    ds_list_delete(cartas,0);
}

E por último não esqueça de colocar isso na carta:

Código:
image_speed = 0;

Não esquecendo de remover seus códigos de vetores.

Testado, qualquer dúvida estamos ai.

FLWS!

Alex FC

Ranking : Nota A
Número de Mensagens : 2503
Idade : 23
Data de inscrição : 20/12/2008
Notas recebidas : B A
Reputação : 174
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://redscreensoft.blogspot.com

Voltar ao Topo Ir em baixo

Re: Problemas com arrays

Mensagem por Felipe Reis Magno 2 em Sab 09 Ago 2014, 07:52

Poxa, vlw gente, testarei os 2 códigos no inicio da semana e logo responderei se deu certo!

Felipe Reis Magno 2

Ranking : Nota E
Número de Mensagens : 43
Data de inscrição : 08/08/2014
Notas recebidas : E
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Problemas com arrays

Mensagem por Conteúdo patrocinado Hoje à(s) 18:25


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum