Coleção de objetos
28/10/2009
0
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
Posts
28/10/2009
Guinther Pauli
28/10/2009
Guinther Pauli
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
28/10/2009
Pjrm1470
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.
30/10/2009
Pjrm1470
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.
30/10/2009
Guinther Pauli
Clique aqui para fazer login e interagir na Comunidade :)