Coleção de objetos

28/10/2009

0

Primeiramente não vi nada de novo no novo forum, retirando as novas ferramentas incluídas no editor, mas se dizem que vai ser melhor, acreditar que a equipe devmedia fará um bom trabalho.

A razão pelo tópico, é saber modos de se construir uma coleção de objetos.
No desenvolver de um jogo de estratégia, estou criando as classes das unidades.
(Cade a tag CODE?)

| TShip = Class
| private
|   FNome:  String;
|   FAvail: Boolean; //se esta habilitada
|   FAtk:   Integer;
|   FDef:   Integer;
|   FLife:  Integer;
| public
|   property Nome:  String  read FNome  write FNome;
|   property Avail: Boolean read FAvail write FAvail;
|   property Atk:   Integer read FAtk   write FAtk;
|   property Def:   Integer read FDef   write FDef;
|   property Life:  Integer read FLife  write FLife;
| end;
|
| TCacaPT = Class(TShip)
| end;

Pensei que num jogo de estratégia vc pode construir quantas unidades você quisesse.
Pensei que uma Array dinâmica adiantaria, mas daria estouro de memoria. Onde poderia se ter um indice de 1 a 200.000 (200 mil) ou mais, de acordo com o tempo de jogo.
"Poxa 200mil é um numero grande..." R: sim.

Gostaria de saber aonde consigo matéria sobre coleção de objetos!?
Como eu poderia fazer nesse meu caso!? Alguem tem um exemplo de como eu poderia usar um sistema de coleção que não dê um estouro de memória!?

Informações:
Plataforma: WinXP/WinVista
IDE:        Delphi 2010
Memoria:    1GB (WinXP) / 2GB (WinVista)

Att,
PJRM1470.
Pjrm1470

Pjrm1470

Responder

Posts

28/10/2009

Guinther Pauli

Olá Plinio Como você está usando Delphi 2010, você tem um grande recurso nas mãos, generics. Você pode usar generics com listas. Além de ter uma coleção que aloca dados dinamicamente, os dados lá colocados são fortemente tipados, diferentes de arrays de objetos, pointers ou mesmo TObjectList. Aqui vai um exemplo: // uses Generics.Collections; var Col: TList; Ship1,Ship2: TShip; begin Col := TList.Create(); Ship1 := TShip.Create(); Ship2 := TShip.Create(); Col.Add(Ship1); Col.Add(Ship2); end; Att, Guinther Pauli Editor Geral Revista ClubeDelphi http://twitter.com/guintherpauli
Responder

28/10/2009

Guinther Pauli

Olá Plinio

Como você está usando Delphi 2010, você tem um grande recurso nas mãos, generics. Você pode usar generics com listas. Além de ter uma coleção que aloca dados dinamicamente, os dados lá colocados são fortemente tipados, diferentes de arrays de objetos, pointers ou mesmo TObjectList.

Aqui vai um exemplo:

// uses Generics.Collections;
var
Col: TList<TShip>;
Ship1,Ship2: TShip;
begin
Col := TList<TShip>.Create();
Ship1 := TShip.Create();
Ship2 := TShip.Create();
Col.Add(Ship1);
Col.Add(Ship2);
end;

Att,

Guinther Pauli
Editor Geral Revista ClubeDelphi
http://twitter.com/guintherpauli
Responder

28/10/2009

Pjrm1470

Mas de qualquer forma, mesmo usando Generics, isso pelo que me recordo, me permitiria ter minha TList guardando os objetos sem que eu precise me preocupar com Cast.

So para entendimento, O generics diminui a possiblidade de causar um estouro de memória de acordo com a minha situação!? Eu não irei colocar limite na minha aplicação. Pretendo deixar o usuário ter uma coleção ilimitada do tipo daquela variavel.
Responder

30/10/2009

Pjrm1470

Fiquei no vaco. xD rsrs.
So me tira a minha duvida e ta de boa. Eu teria fechado o topico, mas somete isso não me diz se realmente irá diminuir o impacto na memoria.

Att,
Plínio.
Responder

30/10/2009

Guinther Pauli

Olá Plinio Não se precupe quanto ao uso de memória de List, é alocado dinamicamente ;) Abs GP
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar