Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Informations sur les arrays [ Divers / Aide et documentation ] (Bacterius)

mardi 4 novembre 2008 à 23:11:35 | Informations sur les arrays

Bacterius

Membre Club

Bonjour, juste avant de faire le labyrinthe, je voulais plutôt faire un petit jeu 2D, inspiré du jeu Dogfight (voir RockSolidArcade sur Google pour jouer au jeu flash), mais en mieux (enfin je vais essayer ...).

Bon voilà j'ai posé le contexte.

Mais, je viens de penser à un truc, pendant que je codais mentalement le jeu : je vais utiliser les tableaux dynamiques : seulement, si un élément du tableau vient à ne plus être utilisé, il risque d'y avoir une consommation de mémoire excessive.
Je précise que je n'ai pas besoin d'emplacements fixes, l'emplacement de l'élément dans le tableau importe peu.
Ce qui me gêne plus particulièrement, c'est, par exemple, sur un tableau de 800 éléments, si il y en a 250 qui viennent à ne plus être utilisés à un stade de la partie.
Je me retrouverais avec 250 éléments inutiles, mais qui, comme ils sont présents, doivent être gérés en mémoire.
Existe-il une fonction de slicing de tableau, pour extraire un élément du tableau dynamique, décaler tous ceux après l'élément extrait, d'un cran vers le début, et redimensionner l'array avec SetLength ?
Genre Delete ... plutôt que de la coder soi-même ?
J'ai déjà essayé ceci mais je reçois une violation d'accès ...

procedure SliceArray(Element: Index; var AnArray: array of TMyArray);
Var
 I: Integer;
begin
 for I := Length(AnArray) downto Element do
  AnArray[I - 1] := AnArray[I];
 SetLength(AnArray, Length(AnArray) - 1);
end;

Quelqu'un sait pourquoi ceci ne marche pas ?
Le principe est simple : on décale chaque élement depuis celui que l'on veut écraser, d'un cran vers le début, et on redimensionne. Mais, erreur ...

Merci d'avance, et à bientôt pour le jeu ;-) j'espère que vous ne serez pas déçus.

Cordialement, Bacterius !


mardi 4 novembre 2008 à 23:32:58 | Re : Informations sur les arrays

WhiteHippo

Membre Club
Allez un peu d'autopromotion, cela ne fait pas de mal  Vas voir ici, tu trouveras une méthode d'insertion et suppression d'un élement (facilement extensible à plusieurs éléments) au sein d'un tableau dynamique.

Cordialement.

"L'imagination est plus importante que le savoir." Albert Einstein

mercredi 5 novembre 2008 à 09:23:10 | Re : Informations sur les arrays

cantador

Membre Club

Bonjour,

peut-être aussi jeter un oeil sur le composant TObjectList :

Utilisez TObjectList pour stocker et maintenir une liste d'objets. TObjectList fournit des propriétés et méthodes pour ajouter, supprimer, réorganiser, trouver, trier et accéder à des objets. Si la propriété OwnsObjects est initialisée à true (par défaut),
TObjectList contrôle la mémoire de ses objets, libérant un objet lorsque son indice est réaffecté; lorsqu'il est supprimé avec la méthode Delete, Remove ou Clear; ou lorsque l'instance de TObjectList est elle-même détruite.

cantador


mercredi 5 novembre 2008 à 10:08:34 | Re : Informations sur les arrays

Nicolas___

+1 avec cantador ,j'ai déjà utilisé TObjectList et ça te facilite grandement la vie (cfr mon dernier jeu)

mercredi 5 novembre 2008 à 11:02:49 | Re : Informations sur les arrays

Bacterius

Membre Club

Hmm tiens je n'avais pas pensé à ObjectList, je vais y jeter un coup d'oeil, et sûrement l'appliquer  et comme ça ce weekend je pourrai faire mon jeu sans problèmes
Et je garde ton lien en mémoire WhiteHippo

Cordialement, Bacterius !

PS : pour ObjectList je vais m'inspirer de la façon dont tu les traite Nicolas




Cette discussion est classé dans : élément, tableau, jeu, informations, anarray


Répondre à ce message

Sujets en rapport avec ce message

prb avec dll et tableau dynamique [ par bd ] actuellement je recois en parametre d'une fonction un tableau de longueur variable. ce tableau est rempli dans la fonction de la dll.au retour dans la ListView et MDI.... [ par PierreP ] voici mon problème : j'ai créé un ListView dans ma fenêtre principale, et je voudrais que lorsque l'on double-clique sur un élément de ce ListView cel Chemin d'accès d'un élément d'un ShellListView [ par PierreP ] je recherche comment obtenir le chemin d'accès d'un élément sélectionné dans un ShellListViewcela est très important, merci d'avance :) Manipulation de composants [ par finipe ] Bonjour à tous. Tout d'abord bravo au concepteur web, le site est bien fait et très clair, c'estagréable, ça change...Bon trève de compliments :)Je dé help!!!!!svp les best en delphi :) [ par eedy31 ] j'ai un gro pblém : je debute en delphi et il me fo du temps pour apprendre!!!ET le pblém c'est que mon père monopolise le PC avec son jeu(atlantis3.. tableau dynamique de type TStrings [ par Teardrop ] Bonjour,je suis sur un petit projet de client mail utilisant le composant Pop3Client du pack ICS de F.Piette.J'aimerai bien pouvoir stocker les header Jeu avec le source [ par Synthox ] Si ca vous dis de faire un jeu de carte, je vous met mes sources en telechargement sur mon site, il contiens aussi un fichier RES avec les cartes de t Insertion d'un tableau dans un DBRichEdit [ par Adel ] Pour les besoins de la réalisation d'un mini traitement de texte je voudrai savoir s'il est possible d'insérer un tableau multicolonnes dans un DBRich Comment faire les menus d'un jeu en Delphi ?! Vite ça presse ! [ par Gropoli ] Je suis entrain de faire un jeu de type wargame en delphi et je me demande comment je dois faire les menus du jeu : menu principal (nouveau jeu, optio Comment faire les menus d'un jeu en Delphi ?! Vite ça presse ! [ par Gropoli ] Je suis entrain de faire un jeu de type wargame en delphi et je me demande comment je dois faire les menus du jeu : menu principal (nouveau jeu, optio


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,468 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.