Entrar
Últimos assuntos
» Preciso de ajudapor AftonDuGrau Dom 21 Abr 2024, 20:18
» Como faz o evento drawn GUI, não se repetir?
por aminaro Sex 19 Abr 2024, 20:30
» Como ajustar velocidade de cada frame da animação no game maker
por Ralphed Qui 18 Abr 2024, 18:28
» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07
» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45
» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51
» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31
» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11
» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39
» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27
» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30
» 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
Aumentando o tamanho da array
4 participantes
Página 1 de 1
Aumentando o tamanho da array
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"
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...
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"
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- Data de inscrição : 20/12/2010
Reputação : 0
Número de Mensagens : 109
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Aumentando o tamanho da array
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- Data de inscrição : 29/01/2011
Reputação : 26
Número de Mensagens : 800
Prêmios :
x 0 x 4 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Aumentando o tamanho da array
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.
//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- Games Ranking :
Notas recebidas : B - D
Data de inscrição : 26/08/2009
Reputação : 12
Número de Mensagens : 970
Prêmios :
x 0 x 0 x 0
x 1 x 0 x 0
x 0 x 0 x 0
Re: Aumentando o tamanho da array
na hora de criar o raio, adiciona 1 à variável que contém o índice da array.
>create<
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.
>create<
- Código:
tamanho_da_array=0
- 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- Games Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios :
x 1 x 6 x 0
x 1 x 0 x 3
x 0 x 0 x 0
Tópicos semelhantes
» aumentando sprites, so em codigo
» Memoria Usada Aumentando Com Game_Restart()
» Aumentando hspeed perseguindo jogador
» array
» Array 3D
» Memoria Usada Aumentando Com Game_Restart()
» Aumentando hspeed perseguindo jogador
» array
» Array 3D
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|