Aumentando o tamanho da array

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

Aumentando o tamanho da array

Mensagem por elicray em Qui 03 Fev 2011, 15:16

Bem, dei uma pesquisa sobre arrays pelo fórum e encontrei apenas tutoriais muito básicos que só diziam como criar, o que eram e como as escrever na tela --\' Nenhum deles respondia à minha dúvida...

1º No meu jogo tenho uma array que vai armazenar o id de todos os objectos raios (até que eles sejam destruidos) criados para que depois o inimigo cheque as posições de todos.

Neste caso, eu tenho um "problema" meio chato... Caso os objectos excedam o tamanho da array, o GM apresenta um erro... Como a uma certa parte do jogo as explosões vão ser grandes, criando cerca de 30 raios, e poderei por por exemplo 7 bombas, iria ter de criar uma array com 210 "secções"... Agora imagine isto para 4 tipos de explosões... Daria cerca de 840 "secções" ressaca

A minha pergunta é se não há forma de o GM ir criando mais "secções" conforme o necessário???

Tenho mais algumas dúvidas sobre arrays, mas nada de que esteja a precisar usar...

elicray

Número de Mensagens : 109
Data de inscrição : 20/12/2010
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Aumentando o tamanho da array

Mensagem por GameMakerTutoriais em Sex 04 Fev 2011, 09:33

1º No meu jogo tenho uma array que vai armazenar o id de todos os objectos raios (até que eles sejam destruidos) criados para que depois o inimigo cheque as posições de todos.

Alternativamente, você poderia checar sem o array:

Código:
for (n = 0; n < instance_count; n += 1)
{
      if object_get_name(instance_id[n].object_index) = 'nome_do_objeto'
      {
              pega_posicao_x := instance_id[n].x;
              pega_posicao_y := instance_id[n].y;
      }
}

Neste caso, eu tenho um "problema" meio chato... Caso os objectos excedam o tamanho da array, o GM apresenta um erro...

Ele pode exceder de duas formas. A primeira é não econtrando o máximo exato de objetos e a segunda é excedendo o limite de 31999.

A minha pergunta é se não há forma de o GM ir criando mais "secções" conforme o necessário???

Você pode usar um array bidimensional, ou seja, com dois índices. O primeiro índice para o tipo de explosão e o segundo para os raios, por exemplo:

Código:
guarda_raio[tipo, raio_id];

Outros exemplos de array bidimensional:

Código:
chave[10, 20];
vida[80, 128];
cor[cor_id, r];
cor[cor_id, g];
cor[cor_id, b];

Outra dica é usar a variável interna instance_count que retorna o número de instâncias na room. Isso pode te ajudar a controlar o array com mais facilidade. Veja o exemplo de como eu usei ele aí em cima. Boa sorte.

GameMakerTutoriais

Número de Mensagens : 800
Data de inscrição : 29/01/2011
Reputação : 26
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Aumentando o tamanho da array

Mensagem por itallo em Sex 04 Fev 2011, 12:23

cara você pode usar listas
//create
//raios = ds_list_create()///raios

//bombas[0] = ds_list_create()///bombas

//explo[0] = ds_list_create()/*

//na hora de criar o raio vc coloca isso:

nnn = instance_create(x,y,raio)
ds_list_add(raios[0],nnn.id) //adiociona id do raio na lista raios[0]

nnn = instance_create(x,y,choose(bomba1,bomba2,bomba3....))
ds_list_add(bombas[0],nnn.id)//adiociona id da bomba na lista bombas[0]

nnn = instance_create(x,y,choose(explo1,explo2,explo3,explo4))
ds_list_add(explo[0],nnn.id)//adiociona id da explosão na lista explo[0]

fica mais ou menos assim.

procure tutos a relacionados a isso.
eu particularmente prefiro usar lists que arrays, mesmo sendo um pouco mais complexo, mas não tem limite de valor, que eu saiba.

a array[0] pega apenas o valor numerico que indica qual é a lista, na ordem criar.


itallo

Ranking : Sem avaliações
Número de Mensagens : 969
Idade : 24
Data de inscrição : 26/08/2009
Reputação : 12
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   :
   :

http://www.zuluhotel.com.br

Voltar ao Topo Ir em baixo

Re: Aumentando o tamanho da array

Mensagem por saim em Sex 04 Fev 2011, 15:05

na hora de criar o raio, adiciona 1 à variável que contém o índice da array.
>create<
Código:
tamanho_da_array=0
>evento que cria o raio<
Código:
instance_create(x,y,obj_raio)
raio_x[tamanho_da_array]=x
raio_y[tamanho_da_array]=y
tamanho_da_array+=1

No fim, o tamanho_da_array será 1 unidade maior que o maior índice e conterá o número de elementos da array (já que o primeiro elemento é 0).

Mas não entendi o que você quer fazer. Uma vez que o objeto for destruído, a id não te dá mais informação nenhuma de posição (por isso sugeri armazenar as posições x/y em duas arrays).

Se for algo que você vai usar só em determinado momento, tipo só depois que os raios forem destruídos, você pode armazenar tudo na mesma array, tipo o raio_x[0] pode ter um valor num momento e depois mudar de valor.


saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: Aumentando o tamanho da array

Mensagem por Conteúdo patrocinado Hoje à(s) 07:51


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