Probleme avec la classe Vector ?! - C++ - Programmation
Marsh Posté le 07-12-2006 à 19:57:08
Yop!
je comprends pas tout
quelle est la ligne qui plante avec l'itérateur???
void AfficheVectMissile( Vecteur<Missile* > M )
tu n'utilises pas std::vector ? Quelle est cette classe Vecteur?
void AfficheMissile(Missile objet )
et pourquoi tu fais pas une méthode afficher() à ton objet Missile?
après tu peux faire un
for_each(vctMissile.begin(),
vctMissile.end(),
mem_fun(&Missile::afficher));
question subsidiaire:
tu fais l'affichage avant de gérer les actions du joueur.
perso je fais tjs l'inverse mais je ne sais pas vraiment pourquoi. T'as une bonne raison? Parce que si oui, je changerai
Marsh Posté le 07-12-2006 à 20:33:15
Voila le code correspondant a la classe Vecteur
La ligne qui marche pas , c est ca : vector<T>::iterator _ptr; .
pk ?!
Code :
|
Concernant la methode afficher à ma classe missile, c'est ce que je comptais faire mais dans tout les cas, ca ne résoud pas mon problème..
pourquoi dans certains cas ca plante ? (alors que je ne change rien au code ?!)
Merci.
Marsh Posté le 07-12-2006 à 20:34:37
Pour la question subsidiaire, non je n'ai pas de raison de faire ca, j'aurais pu faire l'inverse..
Marsh Posté le 07-12-2006 à 20:53:50
Je dis peut-être une connerie, mais comment veux-tu que le compilateur détermine un itérateur sur un vector<T> si tu n'as pas heuuuu... spécialisé vector<T> ?
Marsh Posté le 07-12-2006 à 20:55:41
pour ton itérator je ne sais plus, ça fait longtemps que je n'ai pas créé de classe générique
ça a l'air correct, mais j'ai le souvenir d'avoir eu plein de merdes ac ca...
Donc je pense que tu devrais utiliser std::vector directement dans ton prog et supprimer cette classe Vecteur
D'après ce que je comprends elle ne sert qu'a stocker le vector et à vérifier si le missile ne sort pas de l'écran.
A mon avis, c'est dans la classe Missile que tu dois tester ca:
Code :
|
pour ajouter en tête ou en queue, tu as push_front et push_back qui ne prennent qu'un argument: ce que tu veux ajouter.
Mais cela ne marche pas, lorsque je clique sur espace, un coup ca marche , un coup ca plante ?!
c'est à dire?? l'affichage, la création du Missile???
rajoute des cout dans ton code, isole ce qui ne marche pas et dis le moi
Marsh Posté le 08-12-2006 à 13:08:29
Il me semble qu'il suffite de faire un
Code :
|
pour que tout aille bien.
Désolé mais je n'ai pas vraiment le temps de regarder plus en détail le reste du code..
Marsh Posté le 08-12-2006 à 14:12:16
non, ce sont deux types distincts, rien n'oblige à ce que vector<T>::iterator soit un type pointeur.
Marsh Posté le 10-12-2006 à 13:16:19
Désolé de reposter que maintenant..
J'ai un peu avancé : j'ai utilisé std::vector directement comme me le recommandé ptitchep.
Je n'ai donc plus de problème avec mon itérateur.
Les missiles s'affichent correctement, par contre un autre problème est apparu : lorsque j'affiche plusieurs images à l'écran, le jeu ralentit énormément ( à partir de 7-8 images ). Rien que lorsque j'envoie des missiles je suis obligé de leur mettre une vitesse assez importantes pour pas qu'il y en est 8 d'affiché en meme temps à l'écran sinon ca rame..alors je vous laisse imaginé lorsqu'il y a en meme temps des ennemis !!
D' ou pourrait venir ce problème ?
Si vous voulez que je post une partie de mon code pour vous donner une idée du problème dites moi quelle partie.
Merci beaucoup
Marsh Posté le 10-12-2006 à 14:29:55
Problème réglé, je rechargais l'image à chaque affichage c'est pour ca !!
merci.
Marsh Posté le 07-12-2006 à 19:04:52
Bonjour
Je réalise un shoot them up en c++ avec sdl.
J'ai tout d'abord un petit probleme, je n'arrive pas à utiliser les itérateurs de la classe vector de std.
( il me met une erreur avec cette ligne : vector<T>::iterator _ptr; )
Deuxiemement je n'arrive pas à gérer l'affichage de mes missiles.
Voila ma methode : lorsque j'appuis sur espace (la touche missile), j'insere un objet "missile" dans un vecteur, puis lors de l'affichage du scrolling et du vaisseau ,j'affiche aussi tout les missiles présents dans mon vecteur.
Mais cela ne marche pas, lorsque je clique sur espace, un coup ca marche , un coup ca plante ?!
Je me permet de mettre des extraits de mon code :
Voici tout d'abord les fonctions permettant d'afficher un missile
Puis le morceau de code gérant le jeu en lui meme :
Si vous avez des idées sur le problème, ca serait super !!
Si vous avez un peu de temps et que voulez le code entier pour mieux comprendre , je peux l'envoyer par mail.
Merci beaucoup