Bonjour,
Je vous propose un nouvel élément à utiliser : Blob Sallad
Animation représentant des gouttes, qui rebondissent, se divisent, se réunissent... C'est une application GTK, utilisant les bibliothèques SDL et Cairo.
Qu'en pensez-vous ?
Bonjour,
Je vous propose un nouvel élément à utiliser : Blob Sallad
Animation représentant des gouttes, qui rebondissent, se divisent, se réunissent... C'est une application GTK, utilisant les bibliothèques SDL et Cairo.
Qu'en pensez-vous ?
Une description plus précise du programme est disponible sur le site de l'auteur : http://www.blobsallad.se/
Il y a également un article qui présente le modèle mathématique sur lequel les gouttes sont contruites : https://dev.opera.com/articles/blob-...nd-javascript/
Sur le site on peut trouver plusieurs versions de l'application, dont une version en javascript. Le lien vers la version Linux-SDL-Cairo est cassé, mais j'ai pu retrouver l'adresse du fichier et c'est ce fichier que j'ai attaché ici.
Je pense qu'avec quelques retouches l'application doit pouvoir se compiler sous Windows. Sous Linux un simple make fait l'affaire (si toutes les bibliothèques sont installées).
Mon site personnel consacré à MSEide+MSEgui : msegui.net
Je me suis trompé en rédigeant la description. C'est une application basée sur la SDL et Cairo. Il y avait dans le dossier une deuxième version basée sur GTK mais inachevée (si je ne me trompe encore). Quelqu'un aurait-il la gentillesse de corriger le premier message de la discussion et par la même occasion d'ajouter l'image ci-jointe ?
Je viens d'ajouter une version SDL2 du programme.
- Utilisez les flèches pour déplacer les blobs.
- Appuyez sur H pour les diviser, sur J pour les réunir.
- Activez ou désactivez la gravité en appuyant sur G.
Logiquement le programme devrait fonctionner aussi sous Windows, mais je n'ai pas essayé. Il faudra peut-être retoucher le Makefile.
Mon site personnel consacré à MSEide+MSEgui : msegui.net
J'ai pu (avec deux petites modifications) compiler le programme sous Windows, mais il se plante à l'ouverture.
Code X : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Program received signal SIGSEGV, Segmentation fault. 0x00406680 in bs_list_add_element_to_front (pList=0x24a3b40, pUserData=0x24a3b68, destructor=0x4047e0 <bs_blob_collective_blob_destructor_cb>) at bs_list.c:149 149 pList->pHead->pPrev = pNode;
Je suis en train de chercher l'erreur mais je manque de pratique avec les listes chaînées.
J'attache ci-dessous la version Windows, au cas où quelqu'un voudrait bien y jeter un œil et m'aider à trouver l'erreur.
Bizarre que l'erreur ne se produise pas sous Linux (chez moi en tout cas). Toutefois, si j'exécute le programme avec valgrind, j'obtiens ceci :
Code X : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 ==120032== Memcheck, a memory error detector ==120032== Copyright (C) 2002-2022, and GNU GPL'd, by Julian Seward et al. ==120032== Using Valgrind-3.20.0 and LibVEX; rerun with -h for copyright info ==120032== Command: ./blobsallad ==120032== ==120032== Conditional jump or move depends on uninitialised value(s) ==120032== at 0x40763A: bs_list_add_element_to_front (bs_list.c:147) ==120032== by 0x4069A8: bs_blob_collective_create (bs_blob_collective.c:35) ==120032== by 0x4023CE: main (bs_main.c:144) ==120032== ==120032== Conditional jump or move depends on uninitialised value(s) ==120032== at 0x4078A3: bs_list_map_f (bs_list.c:218) ==120032== by 0x406F82: bs_blob_collective_move (bs_blob_collective.c:310) ==120032== by 0x402894: bs_main_update_simulation (bs_main.c:100) ==120032== by 0x4025C6: main (bs_main.c:256) ==120032== ==120032== Conditional jump or move depends on uninitialised value(s) ==120032== at 0x40799F: bs_list_map_p (bs_list.c:260) ==120032== by 0x406FE9: bs_blob_collective_sc (bs_blob_collective.c:358) ==120032== by 0x4028A1: bs_main_update_simulation (bs_main.c:102) ==120032== by 0x4025C6: main (bs_main.c:256) ==120032== ==120032== Conditional jump or move depends on uninitialised value(s) ==120032== at 0x40799F: bs_list_map_p (bs_list.c:260) ==120032== by 0x407998: bs_list_map_p (bs_list.c:262) ==120032== by 0x4028A1: bs_main_update_simulation (bs_main.c:102) ==120032== by 0x4025C6: main (bs_main.c:256) ==120032== ==120032== Conditional jump or move depends on uninitialised value(s) ==120032== at 0x40799F: bs_list_map_p (bs_list.c:260) ==120032== by 0x4028A1: bs_main_update_simulation (bs_main.c:102) ==120032== by 0x4025C6: main (bs_main.c:256) ==120032== ==120032== Conditional jump or move depends on uninitialised value(s) ==120032== at 0x40799F: bs_list_map_p (bs_list.c:260) ==120032== by 0x4025C6: main (bs_main.c:256) ==120032== ==120032== Conditional jump or move depends on uninitialised value(s) ==120032== at 0x407BA4: bs_list_map_fp (bs_list.c:347) ==120032== by 0x40295F: bs_main_redraw (bs_main.c:82) ==120032== by 0x4025CE: main (bs_main.c:258) ==120032==
Mon site personnel consacré à MSEide+MSEgui : msegui.net
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager