IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Téléchargé 5 fois
Vote des utilisateurs
0 
0 
Détails
Éditeur : Björn Lindberg
Licence : Non renseignée
Mise en ligne le 1er avril 2024
Plate-forme : Linux
Langue : Anglais
Référencé dans
Navigation

Blob Sallad

Animation représentant des gouttes, qui rebondissent, se divisent, se réunissent... Application basée sur les bibliothèques SDL et Cairo.
Avatar de Roland Chastain
Rédacteur/Modérateur https://www.developpez.com
Le 01/04/2022 à 18:36
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).
Avatar de Roland Chastain
Rédacteur/Modérateur https://www.developpez.com
Le 01/04/2024 à 22:02
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.
Avatar de Roland Chastain
Rédacteur/Modérateur https://www.developpez.com
Le 21/04/2024 à 8:19
J'ai pu (avec deux petites modifications) compiler le programme sous Windows, mais il se plante à l'ouverture.

Code X : Sélectionner tout
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
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==
Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.