0
0
Blob Sallad
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).
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.
J'ai pu (avec deux petites modifications) compiler le programme sous Windows, mais il se plante à l'ouverture.
Program received signal SIGSEGV, Segmentation fault.
0x00406680 in bs_list_add_element_to_front (pList=0x24a3b40, pUserData=0x24a3b68,
destructor=0x4047e0
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 :
==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==