begin process at 2012 02 11 07:30:41
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Divers

 > 

Aide et documentation

 > 

Informations sur les arrays


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Informations sur les arrays

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 Administrateur CodeS-SourceS

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ée dans : élément, tableau, jeu, informations, anarray


Répondre à ce message

Sujets en rapport avec ce message

supprimer d'un élément du tableau dans fichier [ par lehcen ] Salut a tous, j'ai un petit probleme. Coment supprimer un item d'un tableau ? j'ai le code suivant ,mais marche pas : Je veux supprimer l'élément s Urgent :Aide pour access : gestion d'un magasin [ par madege ] Voici le sujet sur lequel je bloque [size=50]Un magasin grande surface (carrefour, Auchan,…) vend des produits de plusieurs catégories. Chaque catégo rave report et le rafraichissement [ par laguesbo ] bonjour cher programmeur de delphi. Voilà je débute un peu dans la création des états avec le rave report pour delphi 7 et j'ai quelques petits soucis tableau d'image dynamiquement crée [ par ludo1244 ] bonjour ! je cherche de l'aide pour mon programme j'essaye de crée des image dynamiquement et de ensuite les mettre dans un tableau! est-ce que quelq Comment récupérer le n ième élément d'un ensemble ? [ par bluemandfr ] Bonjour à tous. Soit l'ensemble : [code=pas]MonEns : set of byte;[/code] Je souhaite à un moment donné de mon traitement récupérer le n ième élémen Problème cellule dans tableau RichEdit [ par H60 ] Bonjour à tous L'un d'entre vous pourrait-il me dire de quelle façon je dois procéder, pour que, lorsque le texte est plus grandque ma cellule de mon 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é


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,328 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales