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

Code : Tout sélectionner

If ListSize(BB())
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.