[Jeu] Pixuzzle

Signaler
Messages postés
11
Date d'inscription
lundi 24 octobre 2011
Statut
Membre
Dernière intervention
6 novembre 2017
-
Messages postés
11
Date d'inscription
lundi 24 octobre 2011
Statut
Membre
Dernière intervention
6 novembre 2017
-
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/100402-jeu-pixuzzle

Messages postés
11
Date d'inscription
lundi 24 octobre 2011
Statut
Membre
Dernière intervention
6 novembre 2017

Eh bien, je ne savais pas. C'est vrai que ça peut vraiment être pratique ! Merci des astuces, ça peut toujours être pratique.
Messages postés
3833
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
11 juin 2021
122
J'utilise le C11 (Visual Studio 2013).
C'est une très bonne chose ! (Pas sur que VS le gère entièrement, néanmoins. Le meilleur support est du côté de gcc, voir mieux clang).
Dans ce cas, il y a des constructions plus "lourdes" qu'elles ne devraient l'être. Par exemple, à partir du C99 et supérieur, tu peux remplacer ceci:
int i;
for (i = 0; i < MAX; ++i)
{
}

Par cela:
for (int i = 0; i < MAX; ++i)
{
}


Tu peux déclarer des variables où tu veux. Plusieurs intérêts:
- Plus concis/propre.
- Limite la portée de la variable au scope courant (Ici, la variable i n'existera pas en dehors de la boucle, dans le deuxième exemple).
- Permet de déclarer des variables "const", grâce aux résultats précédents.
Ex:
int i = 0;
// Du code.
a = a * 2;
const int tmp = i + a;


Je t'invite aussi à abuser des "assert" (gratuit en terme de perfs car disparaissent en release).

Pour le readme, je ne vois pas de quoi tu parles.
Désolé, c'est de ma faute. Je viens de m'apercevoir qu'en téléchargeant ta source, c'est un fichier automatiquement ajouté par ce site.
Messages postés
11
Date d'inscription
lundi 24 octobre 2011
Statut
Membre
Dernière intervention
6 novembre 2017

Bonjour, je te remercie beaucoup pour ton commentaire, ça me fais très plaisir !

Pour répondre à tes questions/conseils:
J'utilise le C11 (Visual Studio 2013).

Pour les #pragma once, c'est vrai que maintenant c'est un réflexe de faire ça (mauvais d'ailleurs), j'y changerai !

Les commentaires, il est vrai que j'en utilise pas (ou trop peux), et je me rend bien compte que dès fois c'est handicapant pour le lecteur/programmeur de bien comprendre quel est le but du code.

Pour le readme, je ne vois pas de quoi tu parles.

Pour l'optimisation, je suis totalement d'accord ! Il manque encore pas mal d'endroit à optimiser, notamment les sauvegardes. Je pense refaire le système et faire à coup de read, write, ect.

Merci d'avoir pris le temps de rédiger un commentaire :)
Messages postés
3833
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
11 juin 2021
122
Bonjour.

Le jeu est fluide, bien fait, et original. On sent qu'il y a eu un vrai travail de finition dessus. Il y a aussi un bel effort de présentation (la vidéo est bien pratique pour avoir un aperçu du jeu sans le compiler).
Au niveau du code, c'est plutôt propre. Il n'y a pas grand chose à dire. Le code est bien segmenté, il n'y a pas de fonctions monolithiques dégueux, pas de variable globales, et c'est globalement bien pensé.
C'est assez rare sur ce site, d'avoir un travail de cette qualité, et je t'en félicite.
Il y a aussi une utilisation des "bits fields", ce qui est assez rare, et en fait donc un très bon exemple.

Histoire d'être constructif, je vais pinailler un peu, et relever quelques points vraiment mineurs d'améliorations:
- Préfère utiliser une vraie garde (#ifndef + #define + #endif) plutôt qu'une extension non-standard (#pragma once). Il y a quelques petits désavantages à utiliser "#pragam once", voir: https://stackoverflow.com/questions/787533/is-pragma-once-a-safe-include-guard
- De même, c'est dommage d'utiliser une bibliothèque portable (la SDL) pour derrière y mettre quelque chose de non compatible avec tous les compilateurs (je pense aux #pragma lib).
- Ça manque un peu de commentaires. Des commentaires en en-tête des fonctions avec du doxygen serait un petit plus appréciable.
- Pourrais-tu préciser la version du C que tu utilises ? (Au vu des //, ça n'est pas du C89, mais au vu des variables déclarés en début de bloc, il ne semble pas que ce soit du C99).
- Si tu fais un readme.txt, met du texte dedans et non du html (ou appelle le readme.html).
- Si tu veux comparer des doubles, tu peux utiliser la macro EPSILON (dans limits.h). a < b s'écrira alors: abs(a - b) < EPSILON
- On peut surement optimiser très légèrement certains fprintf en faisant un seul printf, au lieu de plusieurs à la suite (mais c'est anecdotique).