Page 2 sur 2
Re: comment faire tirer mon vaisseau
Publié : lun. 05/oct./2015 16:26
par Ar-S
C'est fait.
Re: comment faire tirer mon vaisseau
Publié : lun. 05/oct./2015 16:31
par G-Rom
@Ar-s, la suppression d'élément dois se faire dans une itération séparée. un peu comme la librairie std::vector , à la suppression d'un élément l'itérateur est invalide.
ton flag feu ne sert à rien. et regarde le topic consacré au deltatime :
http://www.purebasic.fr/french/viewtopi ... 21&t=15332 
Re: comment faire tirer mon vaisseau
Publié : lun. 05/oct./2015 16:48
par Ar-S
G-Rom, je me suis aperçu que du coup mon feu ne servait plus. J'ai modifié mon code, + deltatime ok
Je verrai ce que ça donne. La version que j'ai mis en punch tourne bien sur mon vieux bousin de portable et sur ma tour. En 800x600 je m'étais dis que la vitesse d'affichage selon les config serait de ~60fps.
Code : Tout sélectionner
la suppression d'élément dois se faire dans une itération séparée. un peu comme la librairie std::vector
Heu what ? std::vector c'est un module de quoi ?
Re: comment faire tirer mon vaisseau
Publié : lun. 05/oct./2015 17:06
par G-Rom
excuse moi, std::vector c'est une liste chainée en c++ , ce que je voulais dire , c'est qu'il est préférable que la suppression se fasse dans une boucle séparée ( comme la lib en c++ )
pseudo code :
; Suppression
Foreach liste()
if liste()\markedForRemoval
delete
endif
next
; Affichage
Foreach liste()
draw liste();
next
Re: comment faire tirer mon vaisseau
Publié : lun. 05/oct./2015 17:36
par Anonyme2
Ar-S,
c'est bien je que je te disais avec un second problème.
Il y a 2 deleteelement, j'ai mis ça pour debugger
ligne 403 (j'ai mis l'option à 1)
Code : Tout sélectionner
Debug "DeleteElement 1 = " + Str(DeleteElement (BB(), 1))
Debug "ListSize(BB()) 1 = " + Str(ListSize(BB()))
ligne 413
Code : Tout sélectionner
Debug "DeleteElement 2 = " + Str(DeleteElement (BB()))
Debug "ListSize(BB()) 2 = " + Str(ListSize(BB()))
Lors d'un plantage on a bien déléteelement qui retourne 0 même si la liste n'est pas vide, celà n'a pas de rapport.
Puis on plante mois mais ça plante encore et les debug donne DeleteElement 1 = 0 et ListSize(BB()) 1 = 0 à un moment donné, donc là plus d'éléments.
J'ai ajouté le test suivant ligne 397
avec le endif correspondant, et là je n'ai plus de plantage.
A chaque fois que l'on utilise une liste, il faut toujours tester le retour des fonctions, je rabache mais c'est le prix d'un code stable.
Re: comment faire tirer mon vaisseau
Publié : lun. 05/oct./2015 18:22
par Ar-S
Merci à tous pour votre aide. tout est nikel.