Puissance 4

Présentation
Le célèbre puissance 4 codé en SDL
Téléchargement
Compatibilité
Windows
0  0 
Téléchargé 71 fois Voir les 3 commentaires
Détails
Catégories : Bibliothèques C Jeux SDL
Avatar de cultureman
Membre du Club
Voir tous les téléchargements de l'auteur
Licence : Gratuit
Date de mise en ligne : 1er avril 2013




Avatar de Neckara Neckara - Expert éminent sénior https://www.developpez.com
le 01/04/2013 à 13:24
Bonjour,

Je n'ai que survolé le code mais plusieurs choses ont retenu mon attention :

La compatibilité Windows uniquement.
Tu utilises pourtant la SDL qui est portable et tu ne semble pas utiliser de fonctions spécifique à Windows, je pense donc que ton code est compatible Windows, Linux et Mac.

Le header "includes"
Pour moi c'est une très mauvaise idée, si jamais tu modifie un seul header, tu recompiles entièrement tout ton projet. Mieux vaut donc inclure uniquement les headers nécessaires.

Certaines fonctions me semblent un peu trop longues
En séparant tes grosses fonctions en fonctions plus petites, tu amélioreras la compréhension de ton code et sa maintenabilité.

Le manque de commentaires.
Il faut prendre l'habitude de mettre des commentaires (si possible doxygen).

#define HAUTEUR_FENETRE HAUTEUR_PION*N_LIGNES + 100.
Pense à mettre des parenthèses pour t'éviter des surprises et des erreurs : #define HAUTEUR_FENETRE (HAUTEUR_PION*N_LIGNES + 100), en effet, si jamais dans ton code tu écrit : HAUTEUR_FENETRE*100 ceci ne produira pas l'effet escompté.

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
while(1) 
    { 
        tempsActuel = SDL_GetTicks(); 
        if((tempsActuel - tempsPrecedent) >= LAPS_DE_TEMPS) 
        { 
            SDL_Surface *texte = TTF_RenderText_Blended(police , "  BY KULTURMAN " , couleurNoire); 
            positionTexte.x = (LARGEUR_FENETRE / 2) - (texte->w)/2 - 10; 
            positionTexte.y = 250; 
 
            SDL_BlitSurface(texte , NULL , ecran , &positionTexte); 
            SDL_Flip(ecran); 
            tempsPrecedent = tempsActuel; 
            break; 
        } 
 
        else 
            SDL_Delay((LAPS_DE_TEMPS - tempsActuel + tempsPrecedent)); 
 
    }
Je pense que tu gagnerais en lisibilité en ne laissant que le break; dans le if et en déplaçant les lignes précédant le break; à la fin du while(1).

Personnellement, je pense que la fonction main ne devrait contenir qu'un minimum de choses comme :
- l'analyse des arguments passé au programme ;
- l'appel de la fonction d'initialisation du programme ;
- l'appel de la fonction de "début" du programme ;
- l'appel de la fonction de libération des ressources.
Je garde donc le main le plus court possible ce qui permet de pouvoir réutiliser les sources plus facilement et de créer des bibliothèques si on le souhaite.

Sinon le code semble pas mal
Avatar de cultureman cultureman - Membre du Club https://www.developpez.com
le 02/04/2013 à 15:22
Bonjour. Je vais prendre très au sérieux tes remarques. Surtout merci ça m'encourage
Avatar de c.aug c.aug - Inactif https://www.developpez.com
le 28/04/2013 à 23:39
C'est marrant de jouer contre soi-même
Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.
Contacter le responsable de la rubrique C