AVATARS IN MADNESS

Utilisateur anonyme - 1 avril 2009 à 13:00
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 7 avril 2009 à 09:18
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/49700-avatars-in-madness

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
7 avril 2009 à 09:18
"trop rapide" liée au processeur ?

mauvais codage, prendre en compte un delta du temps, pour adapter la vitesse du jeu en fonction de l'occupation processeur.
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
6 avril 2009 à 23:23
Bonsoir à tous,

voilà, j' ai testé et regardé la source.
Pour info, je suis sur delphi2009 et je regrette mon PentiumII: c' est TROP rapide!

Même si cette source ne sert pas à grand chose, elle a le mérite d' être instructive pour la création de class.

A+
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
3 avril 2009 à 17:06
Je parlais surtout d'un mouvement plus naturel, moins hachuré (on dirait que les avatars "sautillent" au lieu de "glisser" sur la fiche ^^).

Cordialement, Bacterius !
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
2 avril 2009 à 21:56
@MAURICIO: merci pour le comeback
@Nicolas___: oui, mais ce n'était pas pour faire un poisson d'avril, mais quelque chose de plus sérieux dont on reparlera (peut-être à plusieurs..)
Bacterius: faire le mouvement d'une abeille ?
ouais heu bon ok mais moi je fais la reine !
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
2 avril 2009 à 18:17
Peut-être augmenter un petit peu la fluidité des mouvements pour les rendre plus naturels (déplacements par 1 pixel plutôt que par 5 ou 6) ? Comme des vraies abeilles :)

Cordialement, Bacterius !
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
2 avril 2009 à 17:36
Merci bacterius,

je suis rassuré ^^

Désolé les gars de pas être plus présent mais je me suis résigné: je dois passer sur delphifr le soir car la journée c' est pratiquement impossible depuis quelques mois. Je dois avoir environ 200 sources à voir ...

A+
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
2 avril 2009 à 17:33
C'est normal, un admin va te l'activer dans la journée :)
Petit bug passager de CS ...

Cordialement, Bacterius !
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
2 avril 2009 à 17:20
lol,

je testerai se soir ^^

Par contre, j' ai essayé de poster une source et celle-ci fut tout de suite désactivée et j' en profite pour faire appel aux Admins qui passerait par ici ...

A+
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
2 avril 2009 à 17:03
Ben chez moi quand je décommentai la ligne GetBitmap (l. 72), un morceau du bitmap était découpé.
J'ai donc supprimé la ImageList, j'en ai créé une nouvelle, j'ai changé la taille à 80x80 et j'ai mis dedans tous les bitmaps des avatars. Ensuite, ça a marché sans problème avec la transparence (j'ai laissé clWhite comme couleur de transparence dans l'ajout des bitmaps d'avatars).

Cordialement, Bacterius !
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
1 avril 2009 à 22:24
Oui Bacterius mieux vaut être le 1 que le 7
mais je te dirai honnêtement que je n'ai pas réfléchi à l'ordre des avatars..
Mais ne dit on pas que le hasard...
et en plus ce n'est pas du tout ce que je voulais faire au départ mais vla ti pas le 1er avril !

A propos de chimi, peut-tu faire un test avec la solution GetBitmap(que je préfèrerai bien sûr) à la place du LoadFromFile(que j'ai conservée pour le moment) et voir si tu n'aurais pas un souci avec la transparence des avatars (je sais que tu es sous D6 et moi sous D7)
mais ça fera toujours un test
merci par avance

cantador
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
1 avril 2009 à 21:17
Oh je suis dedans :}
L'effet est effectivement hypnotique, ça va tellement vite que j'en ai la tête qui tourne ...

Cordialement, Bacterius !

PS : pourquoi tu m'as pas mis dans le bitmap 7 ? ^^ mais le 1 est bien aussi ça signifie plein de choses ... et puis je suis né le 1er aout après tout :p
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
1 avril 2009 à 17:01
ReportMemoryLeaksOnShutdown := True;
pour les fuites, ça ne fonctionne que >= D2006
pour la transparence ya un truc..
Utilisateur anonyme
1 avril 2009 à 16:36
ouais ben y a un truc qui est pas claire ... j'ai modifier et compilé le code sous D7 également et ça fonctionne très bien !!!
j'ai pas fond blanc derrière !!

et pour tester les fuites je l'ai compilé sous Delphi 2009
en ajoutant cette ligne:
ReportMemoryLeaksOnShutdown := True;

disponible depuis TurboDelphi !!!
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
1 avril 2009 à 16:24
D7 et qu'utilises-tu comme outil pour détecter les fuites mémoires ?
Utilisateur anonyme
1 avril 2009 à 15:50
ah .. problème de version de Delphi ?
quelle version utilises-tu ?
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
1 avril 2009 à 15:27
ok pour les TAvatars
mais la transparence quedal, je ne vois plus le fond mais du blanc derrière les avatars.
vite un hypnotique !!
Utilisateur anonyme
1 avril 2009 à 14:33
Alors en ce qui concerne les fuites ... je te garanti qu'elles sont bien réelles et importantes.

Et non tous les objets ne sont pas libérés !!!
Les TAvatar ne sont jamais libérés .... il y a bien un destructeur d'implémenté mais il n'est appelé par personne.
d'ou la dernière modification pour faire appel au destructeur.
Si tu veux automatiser la chose il faut passer un TObjectList ou Dériver TAvatar de TComponent et lui donner un Owner qui se chargera de tout libérer à la fin.

Voici le détail des fuites avec le code d'origine.
---------------------------
Unexpected Memory Leak
---------------------------
An unexpected memory leak has occurred. The unexpected small block leaks are:

21 - 28 bytes: TBrush x 14

29 - 36 bytes: TPen x 14, Unknown x 2

37 - 44 bytes: TFont x 14

61 - 68 bytes: TAvatar x 14, TBitmap x 28

101 - 108 bytes: TBitmapCanvas x 14

117 - 124 bytes: TBitmapImage x 28

149 - 156 bytes: Unknown x 1

et pour les images j'ai exactement le même résultat avec l'ImageList qu'avec les Bitmaps chargés depuis le disque ... la seule différence se trouve dans la taille des images .... celles de l'ImageList sont plus petites mais aucune différence dans l'affichage ou la transparence !!!
Testé sous D7 et D2009
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
1 avril 2009 à 14:13
Salut cirec et merci pour ton commentaire

Je n'ai pas vu de fuites..tous les objets sont libérés et le programme semble fluide.
En revanche, tu as trouvé le truc pour charger les images à partir du TImageList (quel z..., il fallait mettre la propriété de l'objet..)
J'avais également déclaré deux fois le tableau (ouf)

Mais, la première version donne un meilleur rendu à l'écran que la modification (qui ne gère pas les masques des bmp..)

Je ferai la correction une fois ce souci réglé.

Les hypnotiques, à consommer avec modération !

cantador
Utilisateur anonyme
1 avril 2009 à 13:00
Salut,

il y a de grosses fuites de mémoire !!

voici la correction des fuites et du problème de chargement des Avatars depuis l'ImageList :

procedure TFMadness.InitAvatar;
var
i: integer;
begin
Randomize;
DoubleBuffered := true;
SetLength(Avatar, AvatarList.count);

for i := 0 to AvatarList.count - 1 do
begin
Avatar[i] := TAvatar.Create(PBScreen.Canvas, PBScreen.ClientRect); {on crée les objets }

with Avatar[i] do
begin
Avatarlist.GetBitmap(i, AvatarBitmap); // ne marche pas à la place du load dommage...???
width := AvatarBitmap.width;
height := AvatarBitmap.height;
end;
end;
end;

procedure TFMadness.FormCreate(Sender: TObject);
begin
//////////////////// MODIFICATION /////////////////////////////////////////////////
InitAvatar;
end;

// ******** Ajouter l'évènement OnDestroy ************
procedure TFMadness.FormDestroy(Sender: TObject);
var I: Integer;
begin
for I := low(Avatar) to High(Avatar) do
Avatar[I].Free;
end;

les déplacements sont hypnotiques ^^
Rejoignez-nous