Premier défi Qt : les résultats du Buddhabrot

Thibaut Cuvelier

Les défis Qt sont des petits exercices à faire soi-même ou en équipe sur un sujet précis. Le sujet de ce premier défi était le dessin de fractales, précisément de Buddhabrot. Le défi étant terminé, nous vous présentons les résultats ainsi que le gagnant !

Retrouvez ce défi sur le forum.

- Titre : Premier défi Qt : les résultats du Buddhabrot

- Auteur : Thibaut Cuvelier

- Parution : 1 mai 2010

- Mise à jour : 11 mai 2010

- Licence : Copyright ® 2010 Developpez.com. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Présentation

- II. 0x4e84

- II-A. Juré 1

- II-B. Juré 4

- II-C. Juré 5

- II-D. Juré 6

- II-E. Résumé

- III. Amnell

- III-A. Juré 1

- III-B. Juré 2

- III-C. Juré 4

- III-D. Juré 5

- III-E. Juré 6

- III-F. Résumé

- IV. bobti89

- IV-A. Juré 1

- IV-B. Juré 4

- IV-C. Juré 5

- IV-D. Juré 6

- IV-E. Résumé

- V. CameleonTH

- V-A. Juré 1

- V-B. Juré 4

- V-C. Juré 5

- V-D. Juré 6

- V-E. Résumé

- VI. khayyam90

- VI-A. Juré 1

- VI-B. Juré 2

- VI-C. Juré 4

- VI-D. Juré 5

- VI-E. Juré 6

- VI-F. Résumé

- VII. knopix77

- VII-A. Juré 1

- VII-B. Juré 4

- VII-C. Juré 5

- VII-D. Juré 6

- VII-E. Résumé

- VIII. LittleWhite

- VIII-A. Juré 1

- VIII-B. Juré 4

- VIII-C. Juré 5

- VIII-D. Juré 6

- VIII-E. Résumé

- IX. Z3vil

- IX-A. Juré 1

- IX-B. Juré 4

- IX-C. Juré 5

- IX-D. Juré 6

- IX-E. Résumé

I - Présentation

L'équipe Qt vous souhaite la bienvenue sur la page du premier défi Qt.

Les défis Qt sont des petits exercices à faire soi-même ou en équipe sur un sujet précis, à la manière des examens ou des exercices de livres. Ces codes à écrire sont étudiés de sorte que tous y trouvent leur compte : parfois de l'algorithmique, mais pas uniquement, car Qt ne fait pas que dans ce domaine spécifique. Il s'agit d'un framework complet : les défis essayent d'exploiter cette richesse. Ceci ne signifie pas qu'aucune réflexion n'est nécessaire : il faut connaître Qt, il ne s'agit pas d'écrire quelques lignes sans y réfléchir.

Retrouvez ce défi sur le forum.

Les membres du jury avaient à leur disposition une grille afin de les aider dans la cotation des programmes rendus. Elle leur laissait un certain degré de liberté, notamment dans la sévérité de certains éléments : chaque juré a fait selon ses critères personnels, ce qui peut donner des résultats complètement différents d'un juré à l'autre pour une même application. La voici pour rappel.

Certains critères étaient obligatoires : tous les points cités compteront dans la note finale. D'autres étaient optionnels : seul la meilleure cote des deux sera retenue. Les derniers, enfin, étaient supplémentaires : des bonus en cas de dépassement de nos demandes, ou des malus en cas de régression profonde (avertissements à la compilation, par exemple).

Vous trouverez ce tableau complété pour chaque participant et pour chaque juré ayant évalué le programme, avec ses commentaires. Les noms des jurés n'apparaîtront jamais à proximité de leurs commentaires, pour des raisons d'anonymat (personne ne saura qui a corrigé qui, qui a fait quels commentaires : personne ne pourra juger de la partialité de tel juge, cela évitera les MP excessifs si un juge a mis une cote trop basse aux yeux du participant, par exemple ; cependant, chaque juré a un numéro, qu'il gardera tout au long de la page, afin que chaque candidat puisse se comparer face à un seul juré pour tous les critères aux autres membres et voir ses forces et faiblesses). Les participants sont invités à regarder les commentaires afin de s'améliorer : il s'agit d'un regard externe sur la participation rendue, qui peut vous faire remarquer vos points faibles et vos points forts. Ils sont utiles à tous aussi : que faut-il faire, que faut-il éviter ? Les programmes sont présentés en fonction de l'ordre alphabétique des participants. Bonne consultation.

Critère

Points à accumuler
(40 au total)

Fonctionnement minimal du programme

Total : 19

Affichage de la fractale Buddhabrot

8

Changement des paramètres de génération

4

Internationalisation

3

Efficacité de l'optimisation du générateur

4

Qualité du code

Total : 13

Qualité d'un point de vue C++

4

Qualité d'un point de vue Qt

4

Gestion de la mémoire

4

Documentation minimale

1

Interface graphique (critère optionnel)

Total : 4

Ergonomie

(4)

Design

(4)

Optimisation du générateur (critère optionnel)

Total : 4

Multithreading

(4)

Calcul distribué

(4)

Autre méthode de rendu, de calcul

(4)

Autre type d'optimisation

(4)

Bonus (critères facultatifs)

Total : +24

Génération d'autres fractales (supportées par le module)

1

Génération d'autres fractales (non supportées par le module)

2

Documentation en suffisance

3

Animation de la génération

4

Colorisation de la (des) fractale(s)

4

Changement des paramètres en temps réel

4

Surprenez-nous !

6

Malus

Total : -16

Utilisation d'un autre langage (C, Fortran, assembleur...)

-4

Utilisation d'une autre bibliothèque non utilisée par Qt (GMP, Qwt...)

-4

Application peu robuste

-2

Application semblant plantée

-2

Erreurs à la compilation

-2

Avertissements à la compilation (sauf si justification dans le README)

-1

Fichiers inutiles dans l'archive

-1

Toutes les sources des candidats sont disponibles !

II - 0x4e84

II-A - Juré 1

Critère

Points à accumuler : 40

Points accumulés : 29.5

Fonctionnement minimal du programme

Maximum : 19

Total : 14

Affichage de la fractale Buddhabrot

8

6

Changement des paramètres de génération

4

3

Internationalisation

3

2

Efficacité de l'optimisation du générateur

4

3

Qualité du code

Maximum : 13

Total : 8.5

Qualité d'un point de vue C++

4

2.5

Qualité d'un point de vue Qt

4

3

Gestion de la mémoire

4

3

Documentation minimale

1

0

Interface graphique (critère optionnel)

Maximum : 4

Total : 3

Ergonomie

(4)

3

Design

(4)

2

Optimisation du générateur (critère optionnel)

Maximum : 4

Total : 3

Multithreading

(4)

Bonus (critères facultatifs)

Maximum : +24

Total : +2.5

Génération d'autres fractales (supportées par le module)

1

0.5

Surprenez-nous !

6

2

Malus

Maximum : -16

Total : -1.5

Erreurs à la compilation

-2

-1

Avertissements à la compilation (sauf si justification dans le README)

-1

-0.5

II-B - Juré 4

Critère

Points à accumuler : 40

Points accumulés : 33.5

Commentaires

Fonctionnement minimal du programme

Maximum : 19

Total : 15

Affichage du Buddhabrot

8

6

Changement des paramètres de génération

4

3

Internationalisation

3

2

Efficacité de l'optimisation du générateur

4

4

Qualité du code

Maximum : 13

Total : 9

Qualité d'un point de vue C++

4

3

Qualité d'un point de vue Qt

4

3

Gestion de la mémoire

4

3

Documentation minimale

1

0

Interface graphique (critère optionnel)

Maximum : 4

Total : 4

Ergonomie

(4)

3

Un grand soin au niveau de l'ergonomie (très rapide à prendre en main) et le design.

Design

(4)

4

Optimisation du générateur (critère optionnel)

Maximum : 4

Total : 4

Multithreading

(4)

4

Utilisation des concurrents de la bonne manière :D. La meilleure et la plus intéréssante implémentation multithread du défi !

Bonus (critères facultatifs)

Maximum : +24

Total : +3.5

Génération d'autres fractales (supportées par le module)

1

0.5

Dommage qu'il manque des choses sur la coloration et que l'on ne peut générer plus de fractales.

Surprenez-nous !

6

3

Malus

Maximum : -16

Total : -1

Erreurs à la compilation

-2

-0.5

Juste deux petits problèmes sur les fonction math. Mais quelques warnings non dangereux qui auraient pu rapidement être enlevés.

Avertissements à la compilation (sauf si justification dans le README)

-1

-0.5

Autres commentaires

Des petit problèmes de fonctionnement, voir ce qu'a constaté le juré 6

II-C - Juré 5

Critère

Points à accumuler : 36

Points accumulés : 20.5

Commentaires

Fonctionnement minimal du programme

Maximum : 19

Total : 11

Affichage du Buddhabrot

8

6

Changement des paramètres de génération

4

3

Internationalisation

3

2

Internationalisation faite mais pas d'options pour changer de langue

Efficacité de l'optimisation du générateur

4

0

Pas d'optimisation du générateur, il s'agit juste d'une visualisation des fractales de Yan (buddhabrot et mandelbrot uniquement)

Qualité du code

Maximum : 13

Total : 9

Qualité d'un point de vue C++

4

3

Qualité d'un point de vue Qt

4

3

Gestion de la mémoire

4

3

Documentation minimale

1

0

Interface graphique (critère optionnel)

Maximum : 4

Total : 3.5

Ergonomie

(4)

3

Design

(4)

3.5

Malus

Maximum : -16

Total : -3

Utilisation d'un autre langage (C, Fortran, assembleur...)

-4

-1

Utilisation de structures, qui, pour moi, font plus partie du langage C

Erreurs à la compilation

-2

-1

Avertissements

-1

-1

Autres commentaires

Deux images manquantes rajoutés sur le forum des le lendemain. Pas de malus pour si peu.

Cependant, aucune indication sur la plateforme, le compilateur ou la version de Qt utilisé...

Erreur de compilation sous windows avec VS2008 (4.6.2) et MinGW (4.6.0) sur une ambiguité de la fonction pow. Aucun problème sur Ubuntu GCC (4.6.1), à l'exeption de quelques warnings unused.

II-D - Juré 6

Critère

Points à accumuler : 40

Points accumulés : 28

Commentaires

Fonctionnement minimal du programme

Maximum : 19

Total : 13.5

Affichage du Buddhabrot

8

6

Changement des paramètres de génération

4

3

En suffisance, mais durs à mettre vu la fenêtre dédiée

Internationalisation

3

2

Uniquement par la ligne de commande, mais fonctionnelle ; pas de changement en live ou d'option pour en changer

Efficacité de l'optimisation du générateur

4

2.5

Avec deux threads, la génération prend 17 secondes, soit la 4e place dans mon classement par temps

Qualité du code

Maximum : 13

Total : 9

Qualité d'un point de vue C++

4

3

Indentation parfois folklorique

Qualité d'un point de vue Qt

4

3

Rien à signaler, mais je ne peux pas mettre le maximum pour ce genre de critère

Gestion de la mémoire

4

3

Rien à signaler, mais je ne peux pas mettre le maximum pour ce genre de critère

Documentation minimale

1

0

Il y a une doc, c'est déjà ça. Mais, une doc, c'est plus que ce que peut générer Doxygen sans autres entrées ; un peu de texte n'eut pas fait de mal ; beaucoup de fichiers mentionnés dans la doc ne se retrouvent pas dans l'archive

Interface graphique (critère optionnel)

Maximum : 4

Total : 3.5

Ergonomie

(4)

2

Il faut le temps de comprendre l'interface ; une fois l'étape passée, elle est fonctionnelle ; grand regret : pas trouvé la colo dans la GUI, les paramètres se mettent dans une petite fenêtre

Design

(4)

3.5

Interface moderne, épurée, même si la fenêtre de paramètres n'entre pas du tout dans la charte graphique du reste de l'application

Optimisation du générateur (critère optionnel)

Maximum : 4

Total : 3.5

Multithreading

(4)

3.5

Bonus (critères facultatifs)

Maximum : +24

Total : +0.5

Génération d'autres fractales (supportées par le module)

1

+0.5

Quelques autres fractales supportées, pas toutes (pourtant, utilise le module de Yan)

Malus

Maximum : -16

Total : -2

Application peu robuste

-2

-1

Quand deux fractales sont en génération, ça se plante... Quand on annule la génération d'une fractale dans la fenêtre, elle est quand même générée...

Avertissements

-1

-0.5

Fichiers inutiles dans l'archive

-1

-0.5

Autres commentaires

Pas de note indicant la non-compatibilité avec VS résultant en erreurs ; warnings avec MinGW 3.4.5 ; compilation parfaite avec MinGW 4.4.

Deux fichiers manquants, même si fournis sur le forum.

II-E - Résumé

Critère

Points à accumuler : 40

Points accumulés : 29.4375

Fonctionnement minimal du programme

Maximum : 19

Total : 13.375

Affichage de la fractale Buddhabrot

8

6

Changement des paramètres de génération

4

3

Internationalisation

3

2

Efficacité de l'optimisation du générateur

4

2.375

Qualité du code

Maximum : 13

Total : 8.875

Qualité d'un point de vue C++

4

2.875

Qualité d'un point de vue Qt

4

3

Gestion de la mémoire

4

3

Documentation minimale

1

0

Interface graphique (critère optionnel)

Maximum : 4

Total : 3.25

Ergonomie

(4)

2.75

Design

(4)

3.25

Optimisation du générateur (critère optionnel)

Maximum : 4

Total : 3.5

Multithreading

(4)

3.5

Bonus (critères facultatifs)

Maximum : +24

Total : 1.75

Génération d'autres fractales (supportées par le module)

1

0.5

Surprenez-nous !

6

1.25

Malus

Maximum : -16

Total : -1.3125

Application peu robuste

-2

-0.25

Erreurs à la compilation

-2

-0.3125

Avertissements à la compilation (sauf si justification dans le README)

-1

-0.625

Fichiers inutiles dans l'archive

-1

-0.125

III - Amnell

III-A - Juré 1

Critère

Points à accumuler : 40

Points accumulés : 20

Fonctionnement minimal du programme

Maximum : 19

Total : 6

Affichage de la fractale Buddhabrot

8

2.5

Changement des paramètres de génération

4

0.5

Internationalisation

3

0

Efficacité de l'optimisation du générateur

4

2.5

Qualité du code

Maximum : 13

Total : 8

Qualité d'un point de vue C++

4

1.5

Qualité d'un point de vue Qt

4

3.5

Gestion de la mémoire

4

3

Documentation minimale

1

1

Interface graphique (critère optionnel)

Maximum : 4

Total : 3

Ergonomie

(4)

3

Design

(4)

3

Optimisation du générateur (critère optionnel)

Maximum : 4

Total : 0

Bonus (critères facultatifs)

Maximum : +24

Total : +5

Génération d'autres fractales (non supportées par le module)

2

0.5

Documentation en suffisance

3

2.5

Colorisation de la (des) fractale(s)

4

2

Malus

Maximum : -16

Total : -2

Application peu robuste

-2

-2

III-B - Juré 2

Critère

Points à accumuler : 21

Points accumulés : 12

Commentaires

Qualité du code

Maximum : 13

Total : 9

Qualité d'un point de vue C++

4

2

Problèmes d'encapsulation (comme ToolsArea::_effect)
Pas d'indentation après le for(int i = 0; i < list.size(); i++)
Les conventions de codage sont bizarres, mais cohérentes donc pourquoi pas
Getter du générateur non constant.
Generator::buddhabrot() et Generator::mandelbrot() devrait être private, et pas inline.

Qualité d'un point de vue Qt

4

3

QTimer::singleShot(250, &window, SLOT(generate())); : pourquoi 250ms de délai ?
Fuite de mémoire sur les effets de ToolsArea.
Le constructeur de ToolsArea devrait appeler le constructeur parent avec MainWindow comme paramètre.
GraphicsScene::parent public ?
Le constructeur de GraphicsScene n'appelle pas le constructeur de son parent avec le paramètre. Cela pourrait être correct avec du multi-view mais ici la scène a clairement un parent.
Dans GraphicsScene::showMandelbrot(), on fait quoi du renderItem précédent ?
Pourquoi pratiquement toutes les fonctions du générateur sont-elles des slots ?

Gestion de la mémoire

4

3

Documentation minimale

1

1

Interface graphique (critère optionnel)

Maximum : 4

Total : 3

Ergonomie

(4)

3

Optimisation du générateur (critère optionnel)

Maximum : 4

Total : 0

Multithreading

(4)

0

0 pour le multithreading comme optimisation. Par contre le thread est utile pour l'ergonomie de l'interface ici, donc j'ai mis les points dans ergonomie

III-C - Juré 4

Critère

Points à accumuler : 36

Points accumulés : 19

Commentaires

Fonctionnement minimal du programme

Maximum : 19

Total : 6

Affichage du Buddhabrot

8

2.5

J'y ai cru jusqu'à la fin ; dommage, il ne manquait pas grand chose.

Changement des paramètres de génération

4

0.5

Internationalisation

3

1

tr() en place, mais pas de fichier de traduction

Efficacité de l'optimisation du générateur

4

2

Qualité du code

Maximum : 13

Total : 8

Qualité d'un point de vue C++

4

2

Pas mal de petits problèmes, à revoir, en particulier les pointeurs. Tu devrais regarder les pointeurs intelligents.

Gestion de la mémoire

4

2

Qualité d'un point de vue Qt

4

3

Rien à signaler

Documentation minimale

1

1

Interface graphique (critère optionnel)

Maximum : 4

Total : 3

Ergonomie

(4)

3

Design

(4)

2.5

Bonus (critères facultatifs)

Maximum : +24

Total : +4

Génération d'autres fractales (non supportées par le module)

1

0.5

Documentation en suffisance

3

1.5

Colorisation de la (des) fractale(s)

4

2

Malus

Maximum : -16

Total : -2

Application peu robuste

-2

-2

Erreurs de compilation

-2

0

Différences d'implémentation de la STL, donc pas de malus

III-D - Juré 5

Critère

Points à accumuler : 36

Points accumulés : 25

Commentaires

Fonctionnement minimal du programme

Maximum : 19

Total : 7

Affichage du Buddhabrot

8

4

Pas de Buddhabrot parfait

Changement des paramètres de génération

4

1

Peu de paramétrage, rien de surprenant selon moi...

Internationalisation

3

0

Pas d'internationalisation

Efficacité de l'optimisation du générateur

4

2

Qualité du code

Maximum : 13

Total : 9

Qualité d'un point de vue C++

4

1.5

Respect d'un coding style. 250ms de délai ?
resizeEvent défini dans le .cpp et showEvent défini dans le .h ? Parfois séparation de l'entête du code et parfois non...
Aucun héritage commun, seulement des fonctions nommés mandelbrot() et buddhabrot(). Pas d'utilisation intelligente de l'orienté objet dans ce cas...

Qualité d'un point de vue Qt

4

3.5

GraphicsScene parent public alors que pour GraphicsView parent private ?
Bonne connaissance de Qt et de son utilisation

Gestion de la mémoire

4

3

Documentation minimale

1

1

Interface graphique (critère optionnel)

Maximum : 4

Total : 3

Ergonomie

(4)

3

Design

(4)

3

Bonus (critères facultatifs)

Maximum : +24

Total : +6

Génération d'autres fractales (non supportées par le module)

2

1

Génération possible de Complex Map Buddhabrot, mais pas de gestion intelligente des fractales pour pouvoir en implémenter d'autres.

Documentation en suffisance

3

3

Documentation complète

Colorisation de la (des) fractale(s)

4

2

Malus

Maximum : -16

Total : -0

Autres commentaires

Aucun plantage sur l'environnement cible (4.6.0 MinGW) cité dans le readme mais plante avec GCC au passage de la souris sur le QGraphics.

Cependant, aucune indication sur la plateforme, le compilateur ou la version de Qt utilisé...

Erreur de compilation sous windows avec VS2008 (4.6.2) et MinGW (4.6.0) sur une ambiguité de la fonction pow. Aucun problème sur Ubuntu GCC (4.6.1), à l'exeption de quelques warnings unused.

III-E - Juré 6

Critère

Points à accumuler : 40

Points accumulés : 26

Commentaires

Fonctionnement minimal du programme

Maximum : 19

Total : 10

Affichage du Buddhabrot

8

4

Buddhabrot loin de la perfection

Changement des paramètres de génération

4

1

Bof, pas grand chose

Internationalisation

3

1

Nope, rien d'utilisable mais prêt à l'être

Efficacité de l'optimisation du générateur

4

4

Avec un thread effectif, la génération prend 0.1 seconde, soit la toute première place dans mon classement par temps

Qualité du code

Maximum : 13

Total : 9

Qualité d'un point de vue C++

4

2

Code C++ bien perfectible

Qualité d'un point de vue Qt

4

3

Bonne utilisation de Qt, pas d'erreur majeure

Gestion de la mémoire

4

3

Bonne gestion de la mémoire, pas d'erreur majeure

Documentation minimale

1

1

Interface graphique (critère optionnel)

Maximum : 4

Total : 3

Ergonomie

(4)

3

On s'y retrouve sans (trop de) problèmes

Design

(4)

3

Design comme j'aime !

Optimisation du générateur (critère optionnel)

Maximum : 4

Total : 1

Multithreading

(4)

1

Belle erreur (QObject::killTimers: timers cannot be stopped from another thread) dans la console ; utilisation effective d'un seul et unique thread, n'a jamais tenté le second, ni une seule autre méthode d'optimisation

Bonus (critères facultatifs)

Maximum : +24

Total : +5

Génération d'autres fractales (non supportées par le module)

1

1

Documentation en suffisance

3

2

Suffisante, sans plus

Colorisation de la (des) fractale(s)

4

2

Simple, efficace, mais manque de sauvegarde, de paramètres prédéfinis ou d'autre chose du genre ; par contre, coloration de l'arrière plan : ça fonctionne quand ?

Malus

Maximum : -16

Total : -2

Application peu robuste

-2

-2

Dès le lancement, l'application se plante quand on place le pointeur près du QGraphics

III-F - Résumé

Critère

Points à accumuler : 40

Points accumulés : 22.5

Fonctionnement minimal du programme

Maximum : 19

Total : 7.25

Affichage de la fractale Buddhabrot

8

3.375

Changement des paramètres de génération

4

0.75

Internationalisation

3

0.5

Efficacité de l'optimisation du générateur

4

2.625

Qualité du code

Maximum : 13

Total : 8.5

Qualité d'un point de vue C++

4

1.75

Qualité d'un point de vue Qt

4

3.25

Gestion de la mémoire

4

2.5

Documentation minimale

1

1

Interface graphique (critère optionnel)

Maximum : 4

Total : 3

Ergonomie

(4)

3

Design

(4)

2.875

Optimisation du générateur (critère optionnel)

Maximum : 4

Total : 0.25

Multithreading

(4)

0.25

Bonus (critères facultatifs)

Maximum : +24

Total : +5

Génération d'autres fractales (non supportées par le module)

2

0.75

Documentation en suffisance

3

2.25

Colorisation de la (des) fractale(s)

4

2

Malus

Maximum : -16

Total : -1.5

Application peu robuste

-2

-1.5

IV - bobti89

IV-A - Juré 1

Critère

Points à accumuler : 40

Points accumulés :

Fonctionnement minimal du programme

Maximum : 19

Total : 18

Affichage de la fractale Buddhabrot

8

8

Changement des paramètres de génération

4

3

Internationalisation

3

3

Efficacité de l'optimisation du générateur

4

4

Qualité du code

Maximum : 13

Total : 10

Qualité d'un point de vue C++

4

3.5

Qualité d'un point de vue Qt

4

3

Gestion de la mémoire

4

2.5

Documentation minimale

1

1

Interface graphique (critère optionnel)

Maximum : 4

Total : 4

Ergonomie

(4)

4

Design

(4)

2

Optimisation du générateur (critère optionnel)

Maximum : 4

Total : 3

Multithreading

(4)

3

Autre méthode de rendu, de calcul

(4)

2

Bonus (critères facultatifs)

Maximum : +24

Total : +10

Génération d'autres fractales (supportées par le module)

1

1

Documentation en suffisance

3

3

Colorisation de la (des) fractale(s)

4

4

Surprenez-nous !

6

2

Malus

Maximum : -16

Total : 0

IV-B - Juré 4

Critère

Points à accumuler : 40

Points accumulés : 47

Commentaires

Fonctionnement minimal du programme

Maximum : 19

Total : 18

Affichage du Buddhabrot

8

8

Changement des paramètres de génération

4

3

Internationalisation

3

3

Traduction dynamique

Efficacité de l'optimisation du générateur

4

4

Qualité du code

Maximum : 13

Total : 11

Qualité d'un point de vue C++

4

4

Code très propre, facile à lire

Qualité d'un point de vue Qt

4

3

Gestion de la mémoire

4

3

Documentation minimale

1

1

Interface graphique (critère optionnel)

Maximum : 4

Total : 4

Ergonomie

(4)

4

Palette et pixmap view superbes

Design

(4)

2

On ne peut pas tout réussir

Optimisation du générateur (critère optionnel)

Maximum : 4

Total : 3

Multithreading

(4)

3

Autre méthode de rendu, de calcul

(4)

3

Bonus (critères facultatifs)

Maximum : +24

Total : +11

Génération d'autres fractales (supportées par le module)

1

1

Documentation en suffisance

3

3

Colorisation de la (des) fractale(s)

4

4

Surprenez-nous !

6

3

Palette et génération OpenGl

IV-C - Juré 5

Critère

Points à accumuler : 36

Points accumulés : 36.5

Commentaires

Fonctionnement minimal du programme

Maximum : 19

Total : 17

Affichage du Buddhabrot

8

7

Changement des paramètres de génération

4

3.5

Internationalisation

3

3

Une vraie internationalisation avec changement en temps réel dans l'application, pas disponible chez les autres concurrents

Efficacité de l'optimisation du générateur

4

3.5

Gain conséquent (division par 2) avec le multithreading sur ma machine

Qualité du code

Maximum : 13

Total : 9.5

Qualité d'un point de vue C++

4

3

Commentaires dans les 2 langues dans le code. Niveau de C++ : correct, ainsi que l'utilisation de Qt. Utilisation de règles de codage, de suffixes, etc.

Qualité d'un point de vue Qt

4

2.5

Gestion de la mémoire

4

3

Documentation minimale

1

1

Interface graphique (critère optionnel)

Maximum : 4

Total : 3

Ergonomie

(4)

3

J'apprécie toujours la gestion de la zone de dessin à la souris (molette et clic)

Design

(4)

2.5

Bonus (critères facultatifs)

Maximum : +24

Total : +7

Génération d'autres fractales (supportées par le module)

1

1

Documentation en suffisance

3

3

Colorisation de la (des) fractale(s)

4

3

Possibilité de sauvegarder des palettes mais aucune par défaut

Autres commentaires

Affichage d'un message indiquant que mon PC ne gère pas les shaders (carte graphique intégrér oblige), pas de test de ce coté-là

IV-D - Juré 6

Critère

Points à accumuler : 40

Points accumulés : 38.5

Commentaires

Fonctionnement minimal du programme

Maximum : 19

Total : 17

Affichage du Buddhabrot

8

8

Changement des paramètres de génération

4

3

J'aurais aimé en avoir plus (jamais satisfait !)

Internationalisation

3

3

Traductions dans le code en français : de préférence, en anglais, pour des raisons d'encodage ; mais belle traduction en live

Efficacité de l'optimisation du générateur

4

3

4 threads : 4,5s, soit la troisième position dans mon classement

Qualité du code

Maximum : 13

Total : 10

Qualité d'un point de vue C++

4

3

Quelques commentaires en anglais au milieu de commentaires français (et quelques fautes d'orthographe, tant en anglais qu'en français, mais rien d'extrêmement grave)
pas de respect des 80 colonnes ou d'une norme plus récente, code impossible à voir en entier sur mon écran (de maximum 120 colonnes, ce qui est déjà suffisant)

Qualité d'un point de vue Qt

4

3

Gestion de la mémoire

4

3

Documentation minimale

1

1

Interface graphique (critère optionnel)

Maximum : 4

Total : 3.5

Ergonomie

(4)

3.5

On s'y retrouve facilement, mais il manque le petit quelque chose des interfaces ergonomiques, longuement mûries et réfléchies par des professionnels aguerris

Design

(4)

2

Interface moyenne, pas de recherche spéciale à ce niveau

Optimisation du générateur (critère optionnel)

Maximum : 4

Total : 3

Multithreading

(4)

3

Très bons résultats en passant d'un thread à deux

Autre méthode de rendu, de calcul

(4)

2

Pour le Mandelbrot, résultats différents avec ou sans shaders.
Pas implémentés pour le Buddhabrot, bons résultats pour le Mandelbrot (1s pour 4096*4096 ; 45 secondes avec 2 threads sur le CPU) ; par contre, pas de possibilité de sauvegarde ou de chargement de fractales dans ce mode

Bonus (critères facultatifs)

Maximum : +24

Total : +7

Génération d'autres fractales (supportées par le module)

1

1

Documentation en suffisance

3

3

Colorisation de la (des) fractale(s)

4

3

Pas de palettes par défaut

Malus

Maximum : -16

Total : -2

Application peu robuste

-2

-2

Plante *délibérément* lorsqu'il n'y a pas assez de mémoire disponible, j'aurais préféré un traitement adapté pour éviter ce plantage
Parfois, génère une image et ne l'affiche pas, pas de possibilité d'export ou de sauvegarde

Autres commentaires

Organisation générale : un projet VS, pas de solution ; deux parties bien distinctes dans l'application, j'aurais aimé les voir séparées dans les projets (une solution avec deux projets, par exemple)

IV-E - Résumé

Critère

Points à accumuler : 40

Total : 42.5

Fonctionnement minimal du programme

Maximum : 19

17.5

Affichage de la fractale Buddhabrot

8

7.75

Changement des paramètres de génération

4

3.125

Internationalisation

3

3

Efficacité de l'optimisation du générateur

4

3.625

Qualité du code

Maximum : 13

10.125

Qualité d'un point de vue C++

4

3.375

Qualité d'un point de vue Qt

4

2.875

Gestion de la mémoire

4

2.875

Documentation minimale

1

1

Interface graphique (critère optionnel)

Maximum : 4

3.625

Ergonomie

(4)

3.625

Design

(4)

2.125

Optimisation du générateur (critère optionnel)

Maximum : 4

3

Multithreading

(4)

3

Autre méthode de rendu, de calcul

(4)

2.33

Bonus (critères facultatifs)

Maximum : +24

+8.75

Génération d'autres fractales (supportées par le module)

1

1

Documentation en suffisance

3

3

Colorisation de la (des) fractale(s)

4

3.5

Surprenez-nous !

6

1.25

Malus

Maximum : -16

Application peu robuste

-2

-0.5

V - CameleonTH

V-A - Juré 1

Critère

Points à accumuler : 40

Points accumulés :

Fonctionnement minimal du programme

Maximum : 19

Total : 15.5

Affichage de la fractale Buddhabrot

8

8

Changement des paramètres de génération

4

3

Internationalisation

3

2

Efficacité de l'optimisation du générateur

4

2.5

Qualité du code

Maximum : 13

Total : 7.5

Qualité d'un point de vue C++

4

2

Qualité d'un point de vue Qt

4

3

Gestion de la mémoire

4

2.5

Documentation minimale

1

0

Interface graphique (critère optionnel)

Maximum : 4

Total : 3

Ergonomie

(4)

3

Design

(4)

2

Optimisation du générateur (critère optionnel)

Maximum : 4

Total : 2.5

Multithreading

(4)

2.5

Autre méthode de rendu, de calcul

(4)

2.5

Bonus (critères facultatifs)

Maximum : +24

Total : +10.5

Génération d'autres fractales (supportées par le module)

1

1

Animation de la génération

4

4

Colorisation de la (des) fractale(s)

4

2.5

Changement des paramètres en temps réel

4

1

Surprenez-nous !

6

2

Malus

Maximum : -16

Total : -1

Application peu robuste

-2

-1

V-B - Juré 4

Critère

Points à accumuler : 40

Points accumulés : 41

Commentaires

Fonctionnement minimal du programme

Maximum : 19

Total : 16

Affichage du Buddhabrot

8

8

Changement des paramètres de génération

4

3

Internationalisation

3

2

Efficacité de l'optimisation du générateur

4

3

Qualité du code

Maximum : 13

Total : 9

Qualité d'un point de vue C++

4

3

Fonction de 100 000 lignes, beaucoup de pointeurs membres, il semble qu'il manque un gros découpage en classes

Qualité d'un point de vue Qt

4

3

Gestion de la mémoire

4

3

Documentation minimale

1

0

Interface graphique (critère optionnel)

Maximum : 4

Total : 3

Ergonomie

(4)

3

Design

(4)

2

Optimisation du générateur (critère optionnel)

Maximum : 4

Total : 3

Multithreading

(4)

2.5

Beaucoup de problèmes de mutex. En debug, un message d'erreur Windows à cause des mutex à chaque coup.

Autre méthode de rendu, de calcul

(4)

3

Bonus (critères facultatifs)

Maximum : +24

Total : +11

Génération d'autres fractales (supportées par le module)

1

1

Animation de la génération

4

4

Super !

Colorisation de la (des) fractale(s)

4

2

Dommage que la coloration n'est pas mise à jour avec la palette

Changement des paramètres en temps réel

4

1

Surprenez-nous !

6

3

Malus

Maximum : -16

Total : -1

Application peu robuste

-2

-1

V-C - Juré 5

Critère

Points à accumuler : 36

Points accumulés : 34

Commentaires

Fonctionnement minimal du programme

Maximum : 19

Total : 16.5

Affichage du Buddhabrot

8

8

Changement des paramètres de génération

4

3.5

Internationalisation

3

2

Internationalisation de l'application mais le menu permettant de changer de langue ne fonctionne pas

Efficacité de l'optimisation du générateur

4

3

Fractale OpenGL disponible mais impossible à utiliser malgré des tests dans le code

Qualité du code

Maximum : 13

Total : 7

Qualité d'un point de vue C++

4

2

Du code commenté… Le projet ne semble pas finalisé.
Pas d'orienté objet pour les fractales, des simples fonctions, pas d'ajout facile prévu.

Qualité d'un point de vue Qt

4

3

Gestion de la mémoire

4

2

Documentation minimale

1

0

Pas de documentation

Interface graphique (critère optionnel)

Maximum : 4

Total : 3

Ergonomie

(4)

3

Design

(4)

2

Bonus (critères facultatifs)

Maximum : +24

Total : +8

Génération d'autres fractales (supportées par le module)

1

1

Animation de la génération

4

4

Très belle animation du Buddhabrot

Colorisation de la (des) fractale(s)

4

3

Malus

Maximum : -16

Total : -0.5

Avertissements

-1

-0.5

Petit warning à l'execution : QWidget::setLayout: Attempting to set QLayout "" on MainWindow "MainWindow", which already has a layout. Du QImage::pixel: coordinate (16384,0) out of range à tout va

Autres commentaires

Pas de crash chez moi malgré les problèmes soulevés dans le Readme

V-D - Juré 6

Critère

Points à accumuler : 40

Points accumulés : 35

Commentaires

Fonctionnement minimal du programme

Maximum : 19

Total : 14.5

Affichage du Buddhabrot

8

8

Changement des paramètres de génération

4

3

Internationalisation

3

2

Ça fonctionne, mais des fautes dans le français... J'aurais aussi aimé la sauvegarde de la langue quand l'application quitte ou se crashe

Efficacité de l'optimisation du générateur

4

1.5

2 threads et 104 secondes, ça donne 5e

Qualité du code

Maximum : 13

Total : 7

Qualité d'un point de vue C++

4

2

Ça choque dès qu'on ouvre un fichier : inconsistent indent!
Commentaires dans le code : si on cherche, on trouve !
Liste d'initalisations : j'aurais préféré la voir continuée autant que possible, plutôt que de mettre du code dans le bloc quand il pouvait être mis autre part (et ne me dis pas que tu n'aimes pas ces listes, tu as bien mis du QObject(parent) dedans !). Un peu de cohérence.

Qualité d'un point de vue Qt

4

3

Gestion de la mémoire

4

2

Documentation minimale

1

0

La doc, ce n'est pas seulement des commentaires un tout petit peu adaptés dans le code, c'est aussi en dehors du code : on doit pouvoir comprendre ce qu'il fait sans jamais ouvrir un HPP ou un CPP

Interface graphique (critère optionnel)

Maximum : 4

Total : 3

Ergonomie

(4)

3

On retrouve facilement ses jeunes, mais ça ne fonctionne pas tout seul, notamment pour l'OpenGL : j'ai cherché l'option pour en activer le rendu, pas une option différente dans la liste

Design

(4)

2

Très moyen

Optimisation du générateur (critère optionnel)

Maximum : 4

Total : 3

Multithreading

(4)

3

Autre méthode de rendu, de calcul

(4)

3

Si on commence à demander vraiment quelque chose de consistent à la génération OpenGL, ça crashe le driver... mais j'en demandais beaucoup !

Bonus (critères facultatifs)

Maximum : +24

Total : +8

Génération d'autres fractales (supportées par le module)

1

1

Animation de la génération

4

4

Colorisation de la (des) fractale(s)

4

3

J'adore, mais j'aurais aimé, comme toujours, des colorations prédéfinies et aléatoires

Malus

Maximum : -16

Total : -0.5

Application peu robuste

-2

-0.5

V-E - Résumé

Critère

Points à accumuler : 40

Total : 37.374

Fonctionnement minimal du programme

Maximum : 19

15.625

Affichage de la fractale Buddhabrot

8

8

Changement des paramètres de génération

4

3.125

Internationalisation

3

2

Efficacité de l'optimisation du générateur

4

2.5

Qualité du code

Maximum : 13

7.625

Qualité d'un point de vue C++

4

2.25

Qualité d'un point de vue Qt

4

3

Gestion de la mémoire

4

2.375

Documentation minimale

1

0

Interface graphique (critère optionnel)

Maximum : 4

3

Ergonomie

(4)

3

Design

(4)

2

Optimisation du générateur (critère optionnel)

Maximum : 4

2.833

Multithreading

(4)

2.663

Autre méthode de rendu, de calcul

(4)

2.833

Bonus (critères facultatifs)

Maximum : +24

+9.041

Génération d'autres fractales (supportées par le module)

1

1

Animation de la génération

4

4

Colorisation de la (des) fractale(s)

4

2.625

Changement des paramètres en temps réel

4

0.5

Surprenez-nous !

6

1.666

Malus

Maximum : -16

-0.75

Application peu robuste

-2

-0.625

Avertissements à la compilation (sauf si justification dans le README)

-1

-0.125

VI - khayyam90

VI-A - Juré 1

Critère

Points à accumuler : 40

Points accumulés :

Fonctionnement minimal du programme

Maximum : 19

Total : 14

Affichage de la fractale Buddhabrot

8

6

Changement des paramètres de génération

4

3

Internationalisation

3

2

Efficacité de l'optimisation du générateur

4

3

Qualité du code

Maximum : 13

Total : 7.5

Qualité d'un point de vue C++

4

2

Qualité d'un point de vue Qt

4

3

Gestion de la mémoire

4

2

Documentation minimale

1

0.5

Interface graphique (critère optionnel)

Maximum : 4

Total : 3

Ergonomie

(4)

3

Design

(4)

2

Optimisation du générateur (critère optionnel)

Maximum : 4

Total : 2

Multithreading

(4)

1

Autre type d'optimisation

(4)

2

Bonus (critères facultatifs)

Maximum : +24

Total : +9

Génération d'autres fractales (supportées par le module)

1

1

Génération d'autres fractales (non supportées par le module)

2

2

Colorisation de la (des) fractale(s)

4

2

Surprenez-nous !

6

4

Malus

Maximum : -16

Total : -3

Application peu robuste

-2

-1

Application semblant plantée

-2

-2

Commentaires

Dommage pour le multithreading peu robuste, car sinon le projet est assez sympa. Quelques regrets pour la documentation améliorable. Mais on a pas mal de features sympas en contrepartie.

VI-B - Juré 2

Critère

Points à accumuler : 17

Points accumulés : 8

Commentaires

Fonctionnement minimal du programme

Maximum : 3

Total : 2

Internationalisation

3

2

Certains tr() manquent à l'appel : fractalType->addItem("Bateau en feu", 6);

Qualité du code

Maximum : 9

Total : 5

Qualité d'un point de vue C++

4

2

Certains nom de classes commencent par une majuscule (comme App), d'autres par une minuscule (julia, fractale, etc.).
Aucune convention, style random.
bizarrerie dans le code : ~ZoomableImage(){};, pointeurs vers des classes implicitely shared, etc.
Il y a de sérieux problèmes d'encapsulation

Qualité d'un point de vue Qt

4

3

statusBarLabel->setText(""); devrait utiliser QString() pour éviter de passer par l'encodage

Documentation minimale

1

0

Documentation peu pertinente. Exemple :

/*!
* \brief Constructeur.
* vide la mémoire
*/
App::~App()

Constructeur aurait dû être Destructeur (inutile de le préciser de toute façon), "vide la mémoire" est une information inutile. Dans ce cas-ci, aucune documentation aurait été une bonne option.

Optimisation du générateur (critère optionnel)

Maximum : 4

Total : 2

Multithreading

(4)

2

Calcul distribué

(4)

0

Autre type d'optimisation

(4)

2

Malus

Maximum : -16

Total : -1

Fichiers inutiles dans l'archive

-1

-1

Autres commentaires

L'auteur devrait contribuer à un projet avec peer review (WebKit, Qt...). Le code n'est pas mauvais en soi mais manque de structure et de sérieux.

VI-C - Juré 4

Critère

Points à accumuler : 36

Points accumulés : 32

Commentaires

Fonctionnement minimal du programme

Maximum : 15

Total : 12

Affichage du Buddhabrot

8

6

Changement des paramètres de génération

4

3

Internationalisation

3

3

Qualité du code

Maximum : 13

Total : 8

Qualité d'un point de vue C++

4

3

Qualité d'un point de vue Qt

4

3

Gestion de la mémoire

4

2

Gros problèmes :

- Un tableau de tableau comme buffer image utilisé dans les tilers ;

- Des new sur QImage...

Documentation minimale

1

1

Interface graphique (critère optionnel)

Maximum : 4

Total : 3

Ergonomie

(4)

3

Design

(4)

2

Optimisation du générateur (critère optionnel)

Maximum : 4

Total : 2

Multithreading

(4)

0

Multithreading faux :

- Utilise run au lieu de start ;

- Trop de traitement inutile dans le mode animation, d'où une IHM quasi figée et blocage de plusieurs secondes à la fin de la génération ;

- Si on remplace les run par start, blocage de la boucle d'évènements par un wait ;

- J'ai eu des problème de lock (un unlock par un thread qui n'a pas fait le lock :koi:) : QMutexLocker serait plus adpaté.

Calcul distribué

(4)

Trop de problèmes

Autre type d'optimisation

(4)

2

Bonus (critères facultatifs)

Maximum : +24

Total : +10

Génération d'autres fractales (supportées par le module)

1

1

Génération d'autres fractales (non supportées par le module)

2

2

Animation de la génération

4

0

Grosses bogues :

- Dans void ImageCalculator::sumImagesIntoDestination(), il y a destruction des tilers en cours, alors que la génération est en cours ;

- Il y a une erreur dans le nombre de threads créés si on ajoute des networkAdresses.

Colorisation de la (des) fractale(s)

4

2

Lorsque l'on utilise une palette scriptée, il y a un temps d'attente à la fin de la colorisation : bug de Qt

Surprenez-nous !

6

5

Malus

Maximum : -16

Total : -3

Application peu robuste

-2

-1

Application semblant plantée

-2

-2

Autres commentaires

Erreur d'affichage lors des zoom :

- À cause des approximations liées au flottants, il faut mettre le point de départ au centre du pixel ;

- Problème sur la ligne des réels (peut se retrouver doublé en valeur) et sur les symétries (il manque parfois des morceau d'image).

VI-D - Juré 5

Critère

Points à accumuler : 36

Points accumulés : 35.5

Commentaires

Fonctionnement minimal du programme

Maximum : 19

Total : 14

Affichage du Buddhabrot

8

7

Changement des paramètres de génération

4

3

Internationalisation

3

2

Internationalisation bonne mais pas possible de choisir, obligé de mettre le fichier de traduction dans le répertoire d'exécution.

Efficacité de l'optimisation du générateur

4

2

Qualité du code

Maximum : 13

Total : 8.5

Qualité d'un point de vue C++

4

3

Plusieurs problèmes dans le C++.

Qualité d'un point de vue Qt

4

3

Des erreurs lors de générations : QObject::connect: Incompatible sender/receiver arguments. Utilisation de Qt très correcte pour un débutant !

Gestion de la mémoire

4

2

Documentation minimale

1

0.5

Interface graphique (critère optionnel)

Maximum : 4

Total : 2

Ergonomie

(4)

2

En tout cas -1 pour l'ergonomie.

Design

(4)

2

Bonus (critères facultatifs)

Maximum : +24

Total : +11

Génération d'autres fractales (supportées par le module)

1

1

Génération de plusieurs fractales et possibilité d'ajouter ses propres fractales avec un plug-in

Génération d'autres fractales (non supportées par le module)

2

2

Documentation en suffisance

3

1

Un début de documentation mais incomplète à mon goût. Beaucoup trop de fonctions non documentées. Ici, résumé en début de documentation et images.

Animation de la génération

4

1

Plantage lors de l'animation d'une génération.

Colorisation de la (des) fractale(s)

4

2

J'ai pas trouvé comment utiliser les palettes scriptées mais j'ai peut être craqué.

Surprenez-nous !

6

4

Utilisation de la 3D.

Malus

Maximum : -16

Total :

Application peu robuste

-2

-1

Application semblant plantée

-2

-2

Fichiers inutiles dans l'archive

-1

0

Répertoires Debug and Release vides non nécessaires dans l'archive mais pas de malus pour si peu.

VI-E - Juré 6

Critère

Points à accumuler : 40

Points accumulés : 37.5

Commentaires

Fonctionnement minimal du programme

Maximum : 19

Total : 15.5

Affichage du Buddhabrot

8

7

Changement des paramètres de génération

4

3

Un peu léger, mais suffisant

Internationalisation

3

2

Quelques tr manquant

Efficacité de l'optimisation du générateur

4

3.5

Deux secondes de génération, deuxième dans mon classement

Qualité du code

Maximum : 13

Total : 8

Qualité d'un point de vue C++

4

2

Coding rules? None! Fichiers avec majuscules, sans majuscules, classes idem, pas de style tout au long du dev ; parfois illisible : Networkimagetiler.cpp, que vient foutre là cette parenthèse ?

Qualité d'un point de vue Qt

4

3

Gestion de la mémoire

4

2

Documentation minimale

1

1

Interface graphique (critère optionnel)

Maximum : 4

Total : 3

Ergonomie

(4)

3

Design

(4)

2

Optimisation du générateur (critère optionnel)

Maximum : 4

Total : 3

(Pas la meilleure cote, vu que 3 types d'optimisation achevés)

Multithreading

(4)

1

L'application n'utilise qu'un seul et unique thread pour ses calculs !

Calcul distribué

(4)

2

Bons résultats, même si je n'ai pas plusieurs machines suffisamment puissantes pour pouvoir dire de tester correctement. Du PHP ? Un peu étonnant pour lancer ce genre de calcul (pas que le choix est mauvais, juste étonnant : j'aurais plutôt attendu Python, Perl... sûrement une habitude !)

Autre type d'optimisation

(4)

2

Bonus (critères facultatifs)

Maximum : +24

Total : +11

Génération d'autres fractales (supportées par le module)

1

1

Génération d'autres fractales (non supportées par le module)

2

2

Dont fractales 3D

Documentation en suffisance

3

1

C'est si dur, de mettre la langue dans Doxygen ? Beaucoup de répétitions dans les descriptions des fonctions : permet de... permet de... permet de.... Je sais bien que ce n'est pas de la littérature, mais quand même, ça doit donner un tout petit peu une toute petite envie minuscule d'un jour oser pointer le bout de son nez jusque là sans vouloir courir à trois kilomètres ! (Voir à ce sujet la documentation de Qt, pas un modèle de littérature mais bien de répétition quand on n'a pas le choix : ici, on supprime le verbe et c'est plus léger).

Animation de la génération

4

1

Colorisation de la (des) fractale(s)

4

2

C'est bien de mettre de la coloration automatique... Deux problèmes : un, ça plante avant la fin de la génération si on l'utilise ; deux, bien pire, on ne peut la voir que quand on a déjà demandé une génération. Uniquement par scripts, pas de possibilité d'en créer depuis l'application puis d'exporter en JavaScript (remarque inverse de l'habitude sur ce point !).

Surprenez-nous !

6

4

Enregistrement auto, +2 seulement car 2 images enregistrées en tout (coloration et normal). Dont fractales 3D.

Malus

Maximum : -16

Total : -3

Application peu robuste

-2

-1

Application semblant plantée

-2

-2

Quand on demande quelque chose de vraiment important, la fenêtre blanchit... quelque chose que Vista/Seven n'apprécient pas : pas de réponse de l'application !

VI-F - Résumé

Critère

Points à accumuler : 40

Total : 34.33

Fonctionnement minimal du programme

Maximum : 19

14.58

Affichage de la fractale Buddhabrot

8

6.5

Changement des paramètres de génération

4

3

Internationalisation

3

2.25

Efficacité de l'optimisation du générateur

4

2.83

Qualité du code

Maximum : 13

8

Qualité d'un point de vue C++

4

2.5

Qualité d'un point de vue Qt

4

2.75

Gestion de la mémoire

4

2

Documentation minimale

1

0.75

Interface graphique (critère optionnel)

Maximum : 4

2.75

Ergonomie

(4)

2.75

Design

(4)

2

Optimisation du générateur (critère optionnel)

Maximum : 4

2

Multithreading

(4)

0.66

Calcul distribué

(4)

1

Autre type d'optimisation

(4)

2

Bonus (critères facultatifs)

Maximum : +24

10.25

Génération d'autres fractales (supportées par le module)

1

1

Génération d'autres fractales (non supportées par le module)

2

2

Documentation en suffisance

3

0.5

Animation de la génération

4

0.5

Colorisation de la (des) fractale(s)

4

2

Surprenez-nous !

6

4.25

Malus

Maximum : -16

-3.25

Application peu robuste

-2

-1

Application semblant plantée

-2

-2

Fichiers inutiles dans l'archive

-1

-0.25

VII - knopix77

VII-A - Juré 1

Critère

Points à accumuler : 40

Points accumulés :

Fonctionnement minimal du programme

Maximum : 19

Total : 11

Affichage de la fractale Buddhabrot

8

5

Changement des paramètres de génération

4

3

Internationalisation

3

1.5

Efficacité de l'optimisation du générateur

4

1.5

Qualité du code

Maximum : 13

Total : 8

Qualité d'un point de vue C++

4

2

Qualité d'un point de vue Qt

4

3

Gestion de la mémoire

4

2

Documentation minimale

1

1

Interface graphique (critère optionnel)

Maximum : 4

Total : 2.5

Ergonomie

(4)

2.5

Design

(4)

2.5

Optimisation du générateur (critère optionnel)

Maximum : 4

Total : 2.5

Multithreading

(4)

2.5

Bonus (critères facultatifs)

Maximum : +24

Total : +12

Génération d'autres fractales (supportées par le module)

1

1

Génération d'autres fractales (non supportées par le module)

2

2

Documentation en suffisance

3

2

Animation de la génération

4

3

Colorisation de la (des) fractale(s)

4

Changement des paramètres en temps réel

4

1

Surprenez-nous !

6

1

Malus

Maximum : -16

Total : -1

Avertissements à la compilation (sauf si justification dans le README)

-1

-1

Autres commentaires

Il y a quelques choses à redire mais, globalement, c'est une proposition intéressante bien que le tout manque d'expérience (on n'utilise pas _foo pour les noms, la robustesse est améliorable, etc., mais, à côté de ça, on est content de voir une feature comme le changement de couleur en live).

VII-B - Juré 4

Critère

Points à accumuler : 40

Points accumulés : 38.5

Commentaires

Fonctionnement minimal du programme

Maximum : 19

Total : 12.5

Affichage du Buddhabrot

8

6

Changement des paramètres de génération

4

3

Internationalisation

3

1.5

Efficacité de l'optimisation du générateur

4

2

Qualité du code

Maximum : 13

Total : 9.5

Qualité d'un point de vue C++

4

3

Utilisation de _ pour nommer les membres. Seulement, c'est réservé au compilateur.

Qualité d'un point de vue Qt

4

3

Utilisation d'un timer pour la mise à jour de l'image en cours de génération. Dommage que l'on ne peut pas modifier le temps.

Gestion de la mémoire

4

2.5

Documentation minimale

1

1

Interface graphique (critère optionnel)

Maximum : 4

Total : 3

Ergonomie

(4)

3

Simple mais efficace

Design

(4)

2.5

Optimisation du générateur (critère optionnel)

Maximum : 4

Total : 2.5

Multithreading

(4)

2.5

Très bonne idée mais beaucoup beacoup trop de verrous pour modifier l'image... La liste de points de départ est immense ! Un découpage par zone d'image aurait été beaucoup plus adapté.
Une fois la génération terminée, on part dans une boucle qui détruit de la mémoire longtemps. Je n'ai pas compris à quoi cela correspond. Peut être un truc lié à QtConcurrent (ressemble à la bogue de QtScript).

Bonus (critères facultatifs)

Maximum : +24

Total : +11

Génération d'autres fractales (supportées par le module)

1

1

Génération d'autres fractales (non supportées par le module)

2

1

Documentation en suffisance

2

2

Animation de la génération

4

3

Colorisation de la (des) fractale(s)

4

2

VII-C - Juré 5

Critère

Points à accumuler : 36

Points accumulés : 33.5

Commentaires

Fonctionnement minimal du programme

Maximum : 19

Total : 11.5

Affichage du Buddhabrot

8

5

Changement des paramètres de génération

4

3

Internationalisation

3

1.5

Internationalisation possible mais aucune de faite. Aucun moyen de charger une autre langue, etc.

Efficacité de l'optimisation du générateur

4

2

Qualité du code

Maximum : 13

Total : 9

Qualité d'un point de vue C++

4

3

Utilisation des threads et du design pattern Factory. Code C++ et Qt globalement correct.

Qualité d'un point de vue Qt

4

3

Gestion de la mémoire

4

2

Documentation minimale

1

1

Interface graphique (critère optionnel)

Maximum : 4

Total : 2

Ergonomie

(4)

2

Design

(4)

2

Bonus (critères facultatifs)

Maximum : +24

Total : +12

Génération d'autres fractales (supportées par le module)

1

1

Génération d'autres fractales (non supportées par le module)

2

2

Documentation en suffisance

3

2

Documentation très correcte.

Animation de la génération

4

3

Colorisation de la (des) fractale(s)

4

1

Certaines colorisation ne fonctionnent pas : image noire ou pas la bonne fractale. +1 pour changement de la couleur en temps réel, autres paramètres bloqués.

Changement des paramètres en temps réel

4

1

Surprenez-nous !

6

2

+1 : garder les générations dans des onglets.

Malus

Maximum : -16

Total : -1

Avertissements

-1

-1

Manque la plateforme et la version de Qt utilisé pour la compilation dans le Readme. Avertissements à la compilation sous Windows avec VS2008 et Qt 4.6.2. -1 car plateformes supportées non indiquées.

VII-D - Juré 6

Critère

Points à accumuler : 40

Points accumulés : 34

Commentaires

Fonctionnement minimal du programme

Maximum : 19

Total : 11.5

Affichage du Buddhabrot

8

6

Changement des paramètres de génération

4

3

Internationalisation

3

1.5

_drawHere = tr("Dessiner ici");... Pourquoi passer par des variables ? Tu peux directement mettre le tr dans l'appel de fonction.

Efficacité de l'optimisation du générateur

4

1

Sixième avec 113 secondes

Qualité du code

Maximum : 13

Total : 9

Qualité d'un point de vue C++

4

3

Qualité d'un point de vue Qt

4

3

Gestion de la mémoire

4

2

Documentation minimale

1

1

Problèmes d'encodage, présence de classes fantômes, un peu de texte n'aurait pas fait de mal dois-je dire

Interface graphique (critère optionnel)

Maximum : 4

Total : 2.5

Ergonomie

(4)

2.5

Pas de travail énorme, on s'y retrouve, mais des efforts d'organisation auraient pu être faits

Design

(4)

2

Pas vraiment d'effort, un design simple

Optimisation du générateur (critère optionnel)

Maximum : 4

Total : 2

Multithreading

(4)

2

Je me demande ce que ça aurait fait sans... Réponse : bien pire ! (Enfin, le MT a apporté le gain espéré)

Bonus (critères facultatifs)

Maximum : +24

Total : +11

Génération d'autres fractales (supportées par le module)

1

1

Génération d'autres fractales (non supportées par le module)

2

2

Animation de la génération

4

3

Problèmes de rafraîchissement

Colorisation de la (des) fractale(s)

4

3

En temps réel : nickel ! mais seulement les built-in...

Surprenez-nous !

6

2

Malus

Maximum : -16

Total : -2

Application peu robuste

-2

-1

Tentative d'arrêt de la génération == gel de l'application, elle n'en sortira pas...

Avertissements

-1

-1

Dès le début : une pelletée de warnings (23, sans demander d'en sortir trop...)

VII-E - Résumé

Critère

Points à accumuler : 40

Total : 33.58

Fonctionnement minimal du programme

Maximum : 19

11.625

Affichage de la fractale Buddhabrot

8

5.5

Changement des paramètres de génération

4

3

Internationalisation

3

1.5

Efficacité de l'optimisation du générateur

4

1.625

Qualité du code

Maximum : 13

8.875

Qualité d'un point de vue C++

4

2.75

Qualité d'un point de vue Qt

4

3

Gestion de la mémoire

4

2.125

Documentation minimale

1

1

Interface graphique (critère optionnel)

Maximum : 4

2.5

Ergonomie

(4)

2.5

Design

(4)

2.25

Optimisation du générateur (critère optionnel)

Maximum : 4

2.333

Multithreading

(4)

2.333

Bonus (critères facultatifs)

Maximum : +24

+9.25

Génération d'autres fractales (supportées par le module)

1

1

Génération d'autres fractales (non supportées par le module)

2

1.75

Documentation en suffisance

3

1.5

Animation de la génération

4

3

Colorisation de la (des) fractale(s)

4

2

Changement des paramètres en temps réel

4

0.75

Surprenez-nous !

6

1.25

Malus

Maximum : -16

-1

Application peu robuste

-2

-0.25

Avertissements à la compilation (sauf si justification dans le README)

-1

-0.75

VIII - LittleWhite

VIII-A - Juré 1

Critère

Points à accumuler : 40

Points accumulés :

Fonctionnement minimal du programme

Maximum : 19

Total : 12.5

Affichage de la fractale Buddhabrot

8

5

Changement des paramètres de génération

4

3

Internationalisation

3

2.5

Efficacité de l'optimisation du générateur

4

2

Qualité du code

Maximum : 13

Total : 7.5

Qualité d'un point de vue C++

4

1.5

Qualité d'un point de vue Qt

4

2

Gestion de la mémoire

4

3

Documentation minimale

1

1

Interface graphique (critère optionnel)

Maximum : 4

Total : 2

Ergonomie

(4)

2

Design

(4)

2

Optimisation du générateur (critère optionnel)

Maximum : 4

Total : 2.5

Multithreading

(4)

2.5

Bonus (critères facultatifs)

Maximum : +24

Total : +7

Génération d'autres fractales (supportées par le module)

1

1

Documentation en suffisance

3

2

Colorisation de la (des) fractale(s)

4

3

Surprenez-nous !

6

1

Malus

Maximum : -16

Total : -3

Application peu robuste

-2

-0.5

Application semblant plantée

-2

-0.5

Erreurs à la compilation

-2

-1

Avertissements à la compilation (sauf si justification dans le README)

-1

-1

VIII-B - Juré 4

Critère

Points à accumuler : 40

Points accumulés : 31.5

Commentaires

Fonctionnement minimal du programme

Maximum : 19

Total : 12

Affichage du Buddhabrot

8

4

Bug sur la séquence aléatoire : trop de points (temps de génération encore très long avec la correction du wait). Dommage.

Changement des paramètres de génération

4

3

On ne peut pas modifier le nombre de points aléatoires.

Internationalisation

3

3

Il y a ce qu'il faut pour traduire. Version anglaise et française. Dommage qu'il n'y ait pas la possibilité de modifier dynamiquement la langue, de la choisir nous-mêmes.

Efficacité de l'optimisation du générateur

4

2

Qualité du code

Maximum : 13

Total : 8.5

Qualité d'un point de vue C++

4

2

Beaucoup de new et de delete là où il aurait pu avoir smart pointer. Beaucoup d'influence C mais code correct. Parfois, les infos sont un peu trop dispersées : une énumération pour les fractale et un tableau contenant les infos de la fractale (taille dépendant de l'énumération)

Qualité d'un point de vue Qt

4

2.5

Plusieurs manques mais, dans l'ensemble, il y a une recherche de compréhension et une bonne utilisation. Dommage de ne pas avoir utilisé qDebug() au lieu de std::cout et de faire des déconnections inutiles (faites avec la destruction de la classe). La progress bar fait des choses bizzares parfois...

Gestion de la mémoire

4

3

Documentation minimale

1

1

Interface graphique (critère optionnel)

Maximum : 4

Total : 3

Ergonomie

(4)

2.5

Sobre mais difficile de trouver comment générer un Buddhabrot. Ok ne fait pas Appliquer. L'affichage des images et le zoom sont super.

Design

(4)

3

Simple, donne l'impression que c'est facile à utiliser

Optimisation du générateur (critère optionnel)

Maximum : 4

Total : 2.5

Multithreading

(4)

2.5

Utilisation du multithreading mais manière d'attendre la fin d'un thread fausse. Il faut utiliser wait... Consome tout le CPU pour rien et les perfs sont mauvaises. Par contre, bonne architecture multithread.

Bonus (critères facultatifs)

Maximum : +24

Total : +6

Génération d'autres fractales (supportées par le module)

1

1

Documentation en suffisance

3

2

Effort pour la faire en suffisance

Colorisation de la (des) fractale(s)

4

3

Coloration très variée, de petites choses simples pour personnaliser la LUT

Malus

Maximum : -16

Total : -0.5

Application semblant plantée

-2

-0.5

Parfois, on ne sait pas trop ce qui se passe (problème de wait non utilisé), en particulier la progressbar (calcul du pourcentage faux).

Autres commentaires

La version utilisée du compilateur et de Qt sont dans le répertoire documentation

VIII-C - Juré 5

Critère

Points à accumuler : 36

Points accumulés : 28.5

Commentaires

Fonctionnement minimal du programme

Maximum : 19

Total : 13.5

Affichage du Buddhabrot

8

6

Changement des paramètres de génération

4

3

Internationalisation

3

2.5

Internationalisation en place mais aucun moyen de changer en temps réel dans l'application : dommage !

Efficacité de l'optimisation du générateur

4

2

Qualité du code

Maximum : 13

Total : 9

Qualité d'un point de vue C++

4

2

Les 2 premières lignes sont intéressantes mais l'utilité m'échappe :

int* p = 0; delete p;

Beaucoup d'utilisation des pointeurs où ce n'est pas toujours nécessaire, proche du C.

Qualité d'un point de vue Qt

4

3

Barre de progression mal pensée, pas du tout uniforme dans le temps. Lente au début et très rapide à partir d'une trentaine de pourcents... Pas de grosse lacune, code globalement bon, bien que certaines parties ne soient pas toujours utiles, je pense notamment au disconnect.

Gestion de la mémoire

4

3

Documentation minimale

1

1

Interface graphique (critère optionnel)

Maximum : 4

Total : 2.5

Ergonomie

(4)

2.5

Rien de surprenant par rapport aux consignes de bases. Ergonomie très moyenne, uniquement l'utilisation des onglets est un plus. Design tout ce qu'il y a de plus basique, aucune effort de recherche et pas moyen rapide de faire une fractale, obliger de passer par un menu et une pop up. Rien de surprenant ou d'innovant...

Design

(4)

1.5

Bonus (critères facultatifs)

Maximum : +24

Total : +6.5

Génération d'autres fractales (supportées par le module)

1

1

Documentation en suffisance

3

2.5

Colorisation de la (des) fractale(s)

4

3

Surprenez-nous !

6

0

Malus

Maximum : -16

Total : -3

Erreurs à la compilation

-2

-2

Erreur de compilation sur la ligne 78 du fichier types.hpp : const curveDefaultValues curveFCTString[lgfctENDOFLIST], nécessité de remplacer lgfctENDOFLIST par lcfctENDOFLIST

Avertissements

-1

-1

VIII-D - Juré 6

Critère

Points à accumuler : 40

Points accumulés : 31.5

Commentaires

Fonctionnement minimal du programme

Maximum : 19

Total : 12

Affichage du Buddhabrot

8

5

Ça marche pô, en points aléatoires (ça reste quelques minutes à 0…), problème le long des réels dans l'autre mode

Changement des paramètres de génération

4

3

Plus que suffisant, mais il faut trouver comment faire le bouddha… un peu austère, tout ça !

Internationalisation

3

2

Pas toutes les chaînes traduites

Efficacité de l'optimisation du générateur

4

2

2 threads pour 18 secondes, ça fait cinquième si mes calculs sont exacts

Qualité du code

Maximum : 13

Total : 8

Qualité d'un point de vue C++

4

2

Ancien C-fan ?

Qualité d'un point de vue Qt

4

2

Un peu de documentation sur ce que tu fais de ta qprogressbar, ce n'aurait pas été du luxe : ça monte, ça redescend… oh, ça remonte ! Oh, c'est fini, mais ça m'en génère trois ! Oh, ça passe de 10% à fini !

Gestion de la mémoire

4

3

Documentation minimale

1

1

Interface graphique (critère optionnel)

Maximum : 4

Total : 3

Ergonomie

(4)

3

On s'y retrouve assez, malgré l'absence d'option directe buddha

Design

(4)

2

Boh, une application normale, quoi : pas d'excès, juste ce qu'il faut, sans donner d'impression d'usine à gaz ou de truc qui tombe du ciel

Optimisation du générateur (critère optionnel)

Maximum : 4

Total : 3

Multithreading

(4)

3

Ça apporte les gains espérés, aux alentours de 45%

Bonus (critères facultatifs)

Maximum : +24

Total : +8

Génération d'autres fractales (supportées par le module)

1

1

Documentation en suffisance

3

2

Mettre doxygen en français quand la doc est en français, c'est pas dur, mais ça donne bien mieux ; un constructeur avec et sans paramètres a la même description !

Colorisation de la (des) fractale(s)

4

3

Tiens, des paramètres prédéfinis, des aléatoires, des personnalisés… mais pas de palette perso, juste une couleur

Surprenez-nous !

6

2

Fractales en onglet : bonne idée, ça permet de les garder !

Malus

Maximum : -16

Total : -2.5

Application peu robuste

-2

-0.5

Erreurs à la compilation

-2

-1

Corrections à apporter au code avant compilation

Avertissements

-1

-1

Avertissements dès la compilation : ../Fractale/GAccumulateur.hpp(46) : warning C4099: 'Fractale::GAccumulateur' : type name first seen using 'class' now seen using 'struct'
calculation\CFractale.hpp(38) : see declaration of 'Fractale::GAccumulateur'

VIII-E - Résumé

Critère

Points à accumuler : 40

Total : 30.535

Fonctionnement minimal du programme

Maximum : 19

12.5

Affichage de la fractale Buddhabrot

8

5

Changement des paramètres de génération

4

3

Internationalisation

3

2.5

Efficacité de l'optimisation du générateur

4

2

Qualité du code

Maximum : 13

8.375

Qualité d'un point de vue C++

4

1.875

Qualité d'un point de vue Qt

4

2.5

Gestion de la mémoire

4

3

Documentation minimale

1

1

Interface graphique (critère optionnel)

Maximum : 4

2.5

Ergonomie

(4)

2.5

Design

(4)

2.125

Optimisation du générateur (critère optionnel)

Maximum : 4

2.66

Multithreading

(4)

2.66

Bonus (critères facultatifs)

Maximum : +24

+6.875

Génération d'autres fractales (supportées par le module)

1

1

Documentation en suffisance

3

2.125

Colorisation de la (des) fractale(s)

4

3

Surprenez-nous !

6

0.75

Malus

Maximum : -16

-2.375

Application peu robuste

-2

-0.25

Application semblant plantée

-2

-0.25

Erreurs à la compilation

-2

-1

Avertissements à la compilation (sauf si justification dans le README)

-1

-0.875

IX - Z3vil

IX-A - Juré 1

Critère

Points à accumuler : 40

Points accumulés :

Fonctionnement minimal du programme

Maximum : 19

Total : 12

Affichage de la fractale Buddhabrot

8

6

Changement des paramètres de génération

4

3

Internationalisation

3

2

Efficacité de l'optimisation du générateur

4

1

Qualité du code

Maximum : 13

Total : 9

Qualité d'un point de vue C++

4

2.5

Qualité d'un point de vue Qt

4

3

Gestion de la mémoire

4

2.5

Documentation minimale

1

1

Interface graphique (critère optionnel)

Maximum : 4

Total : 3

Ergonomie

(4)

3

Design

(4)

2

Optimisation du générateur (critère optionnel)

Maximum : 4

Total : 2

Multithreading

(4)

2

Bonus (critères facultatifs)

Maximum : +24

Total : +9

Génération d'autres fractales (supportées par le module)

1

1

Génération d'autres fractales (non supportées par le module)

2

1

Documentation en suffisance

3

3

Surprenez-nous !

6

4

Malus

Maximum : -16

Total : -1.5

Avertissements à la compilation (sauf si justification dans le README)

-1

-0.5

Fichiers inutiles dans l'archive

-1

-1

IX-B - Juré 4

Critère

Points à accumuler : 40

Points accumulés : 36

Commentaires

Fonctionnement minimal du programme

Maximum : 19

Total : 13.5

Affichage du Buddhabrot

8

5.5

Changement des paramètres de génération

4

3

Bon, mais il y a des bogues. La zone complexe n'est pas mise à jour quand on a selectionné une zone. Si on a sélectionné une zone, les modifications dans la zone complexe ne sont pas prises en compte.

Internationalisation

3

2

Dommage que ce ne soit pas dynamique

Efficacité de l'optimisation du générateur

4

3

Qualité du code

Maximum : 13

Total : 10.5

Qualité d'un point de vue C++

4

3.5

Très correct, code facile à lire. Beaucoup de this->, je ne sais pas trop pourquoi.

Qualité d'un point de vue Qt

4

3

Rien à signaler

Gestion de la mémoire

4

3

Documentation minimale

1

1

Interface graphique (critère optionnel)

Maximum : 4

Total : 3

Ergonomie

(4)

3

Design

(4)

3

Optimisation du générateur (critère optionnel)

Maximum : 4

Total : 3

Multithreading

4

3

L'utilisation de scripts rend la génération un peu lente (attention à voir si c'est lié à une bogue de Qt, comme pour khayyam90), mais exploitation du multithreading pour accélérer tout cela. Peut-être trop de retours entre le script et l'IHM de l'image en cours de génération, ce qui ralentit la génération.

Bonus (critères facultatifs)

Maximum : +24

Total : +7

Génération d'autres fractales (supportées par le module)

1

1

Génération d'autres fractales (non supportées par le module)

2

1

Documentation en suffisance

3

2.5

Surprenez-nous !

6

6

J'adore l'intégration du débugeur de script. Beaucoup de recherche sur l'utilisation de QtScript pour générer des fractales.

Malus

Maximum : -16

Total : -1

Fichiers inutiles dans l'archive

-1

-1

Autres commentaires

Dommage que la coloration ne soit pas décorrélée de la génération.

IX-C - Juré 5

Critère

Points à accumuler : 36

Points accumulés : 31

Commentaires

Fonctionnement minimal du programme

Maximum : 19

Total : 13

Affichage du Buddhabrot

8

6

Changement des paramètres de génération

4

3

Internationalisation

3

2

Internationalisation mais pas possible de changer la langue dans l'application

Efficacité de l'optimisation du générateur

4

2

Qualité du code

Maximum : 13

Total : 8

Qualité d'un point de vue C++

4

3

Code C++ correct et homogène.

Qualité d'un point de vue Qt

4

2

Gestion de la mémoire

4

2

Documentation minimale

1

1

Interface graphique (critère optionnel)

Maximum : 4

Total : 3.5

Ergonomie

(4)

3.5

Design

(4)

3

Bonus (critères facultatifs)

Maximum : +24

Total : +8

Génération d'autres fractales (supportées par le module)

1

1

Génération d'autres fractales (non supportées par le module)

2

2

Documentation en suffisance

3

3

Documentation très bien et intégré à l'application (+1)

Surprenez-nous !

6

2

Bonus pour l'utilisation possible du debuger de script (+1)

Malus

Maximum : -16

Total : -1.5

Utilisation d'un autre langage (C, Fortran, assembleur...)

-4

0

Je me demande si certaines utilisations ne sont pas du C... Je ne suis pas un expert pour différencier le C du C++ malheureusement...

Avertissements

-1

-0.5

Pas d'indication sur le compilateur utilisé. Des warnings à la compilation liés à des paramètres non utilisés (-0.5).

Fichiers inutiles dans l'archive

-1

-1

De nombreux fichiers inutiles dans l'archive, notamment les binaires compilés sur une plateforme spécifique (-1).

Autres commentaires

Besoin de déplacer les scripts dans un répertoire script à coté de l'exécutable

IX-D - Juré 6

Critère

Points à accumuler : 40

Points accumulés : 34.5

Commentaires

Fonctionnement minimal du programme

Maximum : 19

Total : 11.5

Affichage du Buddhabrot

8

6

Après quelques minutes, ce qui était disponible ressemblait à un Bouddhabrot

Changement des paramètres de génération

4

3

C'est bien d'en mettre plein, c'est bien de guider l'utilisateur dans la jungle pour éviter sa perte

Internationalisation

3

2

Toutes les chaînes ne sont pas traduites, il reste de l'anglais dans la traduction française ; par contre, il faut remarquer que les chaînes d'origine sont en anglais !

Efficacité de l'optimisation du générateur

4

0.5

Dernier, plus de cinq minutes

Qualité du code

Maximum : 13

Total : 10

Qualité d'un point de vue C++

4

3

Architecture des sources : arg. Les dossiers, c'est bien. Un dossier par classe, c'est trop, beaucoup trop ! Un dossier par partie du programme (GUI, calcul...), oui ; un par classe, non. Surtout pour y ranger deux fichiers.

Qualité d'un point de vue Qt

4

3

Gestion de la mémoire

4

3

Documentation minimale

1

1

Interface graphique (critère optionnel)

Maximum : 4

Total : 3.5

Ergonomie

(4)

1

3 minutes pour comprendre où on commence à générer les fractales ! J'ai pas du tout pu retrouver mes jeunes là-dedans... pas de possibilité de paramètres prédéfinis, on se lance dedans au pif, en espérant voir la lumière au bout du tunnel. Pas de chance, elle ne vient pas toute seule !

Design

(4)

3.5

Sur papier millimetré, ça convient bien aux fractales ! Il faut remarquer que ce n'est pas désagréable à regarder, mais bien des améliorations sont possibles

Optimisation du générateur (critère optionnel)

Maximum : 4

Total : 0

Y a-t-il eu tentative ? Par contre, ça donne une application très facilement modulable pour les fractales !
J'ai arrêté systématiquement toutes mes tentatives de génération, je jette l'éponge après 5 minutes avec des paramètres plus light que pour les autres ; déjà que le Mandelbrot est bien trois fois plus lent que les autres... ; nota bene : après 5 minutes, je n'étais pas au quart... avec deux threads ! Avec un, c'est encore plus lent... et comme ça ralentit, comme d'habitude, quand ça avance...

Bonus (critères facultatifs)

Maximum : +24

Total : +11

Génération d'autres fractales (supportées par le module)

1

1

Génération d'autres fractales (non supportées par le module)

2

2

J'aime bien l'adrabi ! Fractale perso, je suppose

Documentation en suffisance

3

2

Rédigée en anglais, résident quelques fautes ; parfois inutile, parfois il manque quelques éléments (si tu documentes 95% de tes variables membres, que font les 5% restant ? tu n'as pas compris leur utilité ?).
À quoi ça sert, d'avoir la doc des sources dans l'application ?

Surprenez-nous !

6

6

L'utilisation des scripts, avec le débogueur, juste comme on l'aime.
On sent bien qu'il a voulu utiliser un max de Qt, déjà à voir le nombre de modules utilisés : 9 !
On peut un peu modifier l'image par après (rotations)
Zoom : c'eût été bien, si ça zoomait autant que ça dézoomait à chaque clic ! Au deuxième zoom sur une zone, ça rame pendant un certain temps...

Malus

Maximum : -16

Total : -1.5

Application non robuste

-2

-0.5

À partir d'un certain moment, ne génère plus que du mauve et ses dérivés... plus de fractales !

Avertissements

-1

-0.5

Warnings à la compilation

Fichiers inutiles dans l'archive

-1

-0.5

Pourquoi un binaire ??? Pourquoi un binaire ??? Pourquoi un binaire ??? Pourquoi un binaire ??? Pourquoi un binaire ??? Tu veux ma mort ? Un petit Nettoyer la solution n'aurait fait de mal à personne (et bien du bien pour toi : un point non perdu !)

Autres commentaires

La liste des fractales doit être chargée manuellement...

IX-E - Résumé

Critère

Points à accumuler : 40

Total : 35.5

Fonctionnement minimal du programme

Maximum : 19

12.5

Affichage de la fractale Buddhabrot

8

5.875

Changement des paramètres de génération

4

3

Internationalisation

3

2

Efficacité de l'optimisation du générateur

4

1.625

Qualité du code

Maximum : 13

9.375

Qualité d'un point de vue C++

4

3

Qualité d'un point de vue Qt

4

2.75

Gestion de la mémoire

4

2.625

Documentation minimale

1

1

Interface graphique (critère optionnel)

Maximum : 4

2.875

Ergonomie

(4)

2.625

Design

(4)

2.875

Optimisation du générateur (critère optionnel)

Maximum : 4

2.5

Multithreading

(4)

2.5

Bonus (critères facultatifs)

Maximum : +24

9.625

Génération d'autres fractales (supportées par le module)

1

1

Génération d'autres fractales (non supportées par le module)

2

1.5

Documentation en suffisance

3

2.625

Surprenez-nous !

6

4.5

Malus

Maximum : -16

-1.375

Application semblant plantée

-2

-0.125

Avertissements à la compilation (sauf si justification dans le README)

-1

-0.375

Fichiers inutiles dans l'archive

-1

-0.875