begin process at 2012 05 30 18:12:15
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Système

 > 

Autre

 > 

Tableaux...


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

Tableaux...

dimanche 12 décembre 2010 à 13:03:58 | Tableaux...

pop70

Bonjour,

Je cherche à faire un petit jeu en 2D,
Celui est constitué d'une Map, sur laquelle viennent se placer toutes sortes d'objets.

Chaque objet a sa classe, et mon problème est d'organiser la Map de façon à ce qu'elle contienne pour chaque coordonnées X , Y un objet.
J'aimerai ensuite pouvoir récupérer les objets en fonction d'une coordonnée.

Du coup j'ai pensé faire hérité chaque objet d'une grosse classe "Objets", et faire la Map sur le modèle d'une classe "Carte".

La classe "Carte" doit être constitué d'un tableau 2D de type "Objets" nommé wMap.

J'ai donc essayé :

Code C/C++ :
std::vector < std::vector <Objets*> > wMap;

Mais cette solution est trop gourmande en CPU et j'ai toujours un RunTime error.

j'ai aussi essayé de le déclarer dans la classe Carte de la façon suivante :

Code C/C++ :
Objets **wMap [][];    

Mais pour celle ci il faut indiquer la mémoire à allouer pour le tableau du genre [100][100], or je ne peux pas, puisque celle-ci doit être définie dans le constructeur...

D'ailleurs si je fais :

Code C/C++ :
Objets *wMap;
dans la classe

et :
Code C/C++ :
 wMap = new wMap[Taille1]; 
dans le constructeur

ça marche,

mais si je fais :

Code C/C++ :
 Objets **wMap;
dans la classe

et :
Code C/C++ :
  wMap = new wMap[Taille1][Taille2];
dans le constructeur

ça ne marche plus...



Merci pour votre aide


Pop70
lundi 13 décembre 2010 à 10:11:28 | Re : Tableaux...

CptPingu

Administrateur CodeS-SourceS
Réponse acceptée !
Faire tout hériter d'une classe Objet est extrêmement inélégant ! (Je ne parle pas du fait d'hériter d'une classe mère abstraite, mais de la nommer "Objet").

Je te conseille plutôt d'avoir une classe "Cell" (ou "Case" en français) qui peut contenir un ou plusieurs élément. Si tu es sur de n'avoir qu'un et un seul élément, tu peux directement faire un tableau d'éléments.

Ton problème vient du fait que tu ne prends pas en compte le fait que: ** != [][] !
Tu ne peux pas faire un new [][] dans un **. Il te faut faire un new [] suivit d'un new [] dans chacun des éléments de ton tableau.

Si un std::vector de std::vector ne convient pas au niveau performance (ce qui est normal), tu peux te tourner vers du boost::multi_array.

Si tu ne souhaites pas avoir de dépendance sur boost, je te conseille de coder ta propre classe "StaticArray".
Tu lui donne un constructeur "StaticArray(int size)" qui construit un tableau à une dimension de taille fixe. Puis tu peux faire un std::vector<StaticArray*>.

Pour résumer, trois solutions:
1) Boost::multi_array
2) std::vector<StaticArray*>
3) Case **wMap, avec la bonne manière de l'initialiser.

________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question
lundi 13 décembre 2010 à 19:13:24 | Re : Tableaux...

pop70

J'ai finalement opté pour un code un peu plus propre...
Ma classe "Carte" ne contient plus qu'un tableau 2D sur des objets "Texture". Et j'ai une troisième classe "Gestion" qui associe les textures aux différents objets ou personnages, et les place sur la Carte.

Merci encore, surtout pour la dissociation entre pointeurs et tableaux que j'ai tendance à mélanger.


Pop70


Cette discussion est classée dans : code, classe, cpp, objets, wmap


Répondre à ce message

Sujets en rapport avec ce message

HELP !!! Après plantage fichiers cpp transformés en binaire : code perdu !!!!! [ par ngryman ] J'y crois pas ! J'ai lancé mon progrmme, il a planté, une erreur windows s'est produite et j'ai redémarré mon pc, et après le fichier cpp principal de Code QBasic à convertir Cpp [ par SneakGuy ] Salut, j'ai besoin d'aide pour convertir ce code QBasic en Cpp...*Désoler, tous les signes"plus" sont remplacés par la lettre p. Merci.CLSFOR x = 1 Visual Cpp [ par Bringdal ] Voila... mon probleme est simpleje n'arrive pas à afficher un executable j'ai ajouté une variable privé de type CXXXSocket classe derivee de template [ par payen ] Salut a tous,juste une petite question sur les template et les classes derivees ... j'ai donc une classe template declarre comme suit: CObject [ par ifren ] salutj'ai un petit probleme,bon j'ai une classe data qui herite de la classe CObject, jusque la normalj'ai un tel codeData::Data(): // Copie de l'obje INI :: AIDEZ MOI SVP !! [ par bdkiller ] Bonjour,Je suis newbie dans le Cpp. J'utilise Borland Cpp Builder.J'ai un petit problème avec les fichiers ini. Et vu que je n'arrive pas à le résoudr probleme creation dll de classe [ par juju cogne ] Voila j'ai codé une classe (.h et cpp) et je voudrais passer cette classe avec ses méthodes ainsi que les méthodes globales de cette application dans problème de variables [ par Adeon ] salut! regardez ces lignesdans principal.cpp :#include #include "sous_partie.cpp"void enregistre_variable();void main(){< Appel de fonction [ par amauro ] Bonjour à tous!Bonjour à tous!J'aimerais appeller une fonction que j'ai crée moi-même dans la classe View.cpp de mon application MDI depuis la classe Probleme de taille d'une liste chainee static qui varie ... [ par rick_moins_moins ] Bonjour,j'ai besoin de faire  une liste chainee dans mon programme afin de cataloguer tous les objets de mon projet. Pour cela ma liste chainee est st


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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,624 sec (4)

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