Como criar um vetor de objetos?

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

Como criar um vetor de objetos?

Mensagem por Mikasuki em Qua 31 Jul 2013, 20:43

Boa noite a todos. Me desculpem se esta já estiver respondida, mas não encontrei nada a respeito nem na net e nem aqui no forúm.

Pessoal, seguinte: alguém sabe se é possível e como se cria um vetor de objetos? Preciso de um vetor que tenha vários objetos nos seus índices e que eu possa chamar alguma variável de qualquer um desses objetos apenas apontando o vetor e o indíce. Por exemplo:

for x=1 to 10{
vetorDeObjetos[x].variavelDoObjeto=valor
}

Alguém sabe?

Mikasuki

Número de Mensagens : 33
Data de inscrição : 28/01/2010
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Como criar um vetor de objetos?

Mensagem por GameMakerTutoriais em Qua 31 Jul 2013, 23:21


Objetos mesmo? Porque se for instância, o Game Maker já tem um vetor interno, que é chamado por "instance_id":

Código:
instance_id[numero]

O comprimento do vetor vai depender da quantidade de instâncias, lógico. Isso você consegue com a variável "instance_count". Dê uma olhada no help, porque de cabeça eu não lembro 100%.

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: Como criar um vetor de objetos?

Mensagem por saim em Qua 31 Jul 2013, 23:33

Eu faço isso direto. Mas chamo "vetor" de "array". Se fizer isso durante a explicação, já sabe.

Bom, na verdade, o que eu costuma fazer são vetores de INSTÂNCIAS, não de objetos, mas acho que é o que você quer.
Normalmente, quando eu faço isso, eu uso um objeto-controle pra criar as instâncias. No mesmo instante em que cria, ele popula o vetor. Assim:
Código:
var i, nInstancias;
nInstancias := 20; // por exemplo
for (i := 0; i < nInstancias; i += 1){
vetorDeInstancias[i] := instance_create(10, 10 + 10*i, objeto);
}
Isso funciona assim: a função "instance_create", além de criar uma instância, retorna a id da instância. Fazer o código assim armazena um monte de ids no vetor.

Claro que você não precisa fazer isso na hora de criar as instâncias. Pode alimentar o vetor ao longo do jogo. Só precisa dar seu jeito de descobrir as ids.
Pra pegar as variáveis, do jeito que você está pensando está ok. Como o índice tem a id, é como chamar diretamente a instância.

Bom, nesse exemplo que eu dei, todas as instâncias são do mesmo objeto. Dá pra misturar numa boa com outros. Mas tem um inconveniente: se você tentar chamar uma variável, ela pode não existir. Eu ia escrever um exemplo, mas acho que isso é bem óbvio, como pode acontecer. Você confunde os índices e - bum - variável inexistente.

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: Como criar um vetor de objetos?

Mensagem por Mikasuki em Qui 01 Ago 2013, 13:59

Sim Brendan, são objetos mesmo Happy

saim, acho que entendei sim! quer dizer que se eu usar a id ao invés do nome que eu atribui o objeto eu posso alimentar o vetor com estas ids? gostei da sua idéia, pode me ajudar depois, mas eu por hora estou usando vários objetos.

Muito obrigado por terem respondido!! Happy

Editando: saim, se este for o caso, por que eu precisaria do id se eu posso fazer algo assim: vetor[x]=objeto ? Não funciona se eu alimentar o vetor direto com a variável que representa o nome do objeto? o game_maker não entende como um objeto e não como uma variável qualquer? Ou eu to viajando muito? =P

Mikasuki

Número de Mensagens : 33
Data de inscrição : 28/01/2010
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Como criar um vetor de objetos?

Mensagem por Rodrigo Santiago em Qui 01 Ago 2013, 18:02

Sim está...
o nome do objeto REPRESENTA O OBJETO, já o id representa a CÓPIA.
Ou seja, todas as cópias são o mesmo objeto, com ids diferentes. Se você usar o nome estará assesando a TODAS as cópias do objeto.

Rodrigo Santiago

Ranking : Nota B
Número de Mensagens : 1281
Idade : 20
Data de inscrição : 28/07/2012
Notas recebidas : C + C + B
Reputação : 73
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 3
   : 1
   : 3

Voltar ao Topo Ir em baixo

Re: Como criar um vetor de objetos?

Mensagem por Conteúdo patrocinado Hoje à(s) 11:48


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