IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Projets Discussion :

Jeux Serpent[ C -> SDL ]


Sujet :

Projets

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Réunion

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 31
    Points : 12
    Points
    12
    Par défaut Jeux Serpent[ C -> SDL ]
    Bonjour / Bonsoir à tous!

    Voilà maintenant 1 mois et demi que je boss sur ce petit jeux programmé en langage C .
    C'est un jeux de serpent comme celle que vous pouvez voir sur les ancien téléphones.
    Voici le fonctionnement du jeu:

    1 - Ce qui est déjà fait
    • Vous pouvez déplacer vers haut,bas,gauche,droite
    • Quand vous mangez une pomme vous pouvez avoir entre 1 et 5 points
    • Il y a un temps imparti pour voir la pomme est de 10 secondes
    • Vous gagnez entre 5 et 10 points quand vous prenez la cerise, sinon il est perdu pour toujours ...
    • Vous n'avez pas le droit de touché le mur, si c'est le cas vous tombé au milieu de la carte et vous perdez une 1 vie
    • Si vous perdez tous vos vie votre score descend à 0, donc qu'il faut tous recommencé!

    2 - Ce qui va arrivé dans la prochaine sortie
    • La carte va être plus grande et que les images vont être plus petites
    • Quand on a fini le niveau le programme affiche le score de la personne

    Codes sources & ressources: http://www.megaupload.com/?d=DCXEG5ER

    Installation automatique:http://www.megaupload.com/?d=44YVIYUK

    Bon test à vous tous!

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    je pense que tu as posté dans la mauvaise sections, tu devrais aller, je pense dans :

    Applications -> 2D - 3D - Jeux -> forum -> Projet

  3. #3
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 577
    Points
    218 577
    Billets dans le blog
    120
    Par défaut
    Le .7z du setup, ne fonctionne pas (ne peut pas être ouvert).

    Le .zip non plus O_o (les deux fichiers sont invalides).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  4. #4
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    idem, j'ai des archives corrompues.

    Comment as-tu compressé?

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Réunion

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 31
    Points : 12
    Points
    12
    Par défaut
    C'est avec 7-Zip , je viens de l'uploader sur megaupload pour l'installation automatique

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2012
    Messages : 7
    Points : 12
    Points
    12
    Par défaut
    Il faut installer SDL ? Il me dit qu'il manque une dll (SDL_ttf.dll), tu ne peux pas l'embarquer dans l'install ?

  7. #7
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Logiquement les .dll doivent être mis dans le dossier de l’exécutable ou si on installe, on peut mettre les .dll dans un dossier particulier de windows (je ne sais plus lequel) qui dispense d'avoir ces dll pour chaque projet.

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Réunion

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 31
    Points : 12
    Points
    12
    Par défaut
    Désoler à vous tous je vais mettre de suite !

  9. #9
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 577
    Points
    218 577
    Billets dans le blog
    120
    Par défaut
    Ayant quelques fois, uniquement GNU/Linux, pouvez vous reuploader les sources, car l'archive et elle aussi corrompue.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  10. #10
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Réunion

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 31
    Points : 12
    Points
    12
    Par défaut
    Voilà c'est fais et merci de la patience

  11. #11
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 577
    Points
    218 577
    Billets dans le blog
    120
    Par défaut
    J'ai accès au code \ o /

    Il y a des problèmes de gestion de ressources, notamment pour les ressources sonores. Dans la fonction directionHaut() (surement aussi dans les autres), il y a allocation / chargement de fichier .wav, mais vous ne libérez jamais ce fichier chargé. Du coup, il risque de s'accumuler de multiple fois en mémoire.

    Je me demande si je n'ai pas vu deux déclaration du même niveau. (Un dans jeu.c et l'autre dans niveau.c).
    Sinon, les fonctions comme :
    [code]
    short directionHaut(int jeu_[][NB_BLOCS_LARGEUR], short *pommeNumero, short *direction_touche,SDL_Rect *positionTete,
    short *x, short *y, short *casesuivante, short *surMUR,short *nombreDeCorps,
    SDL_Rect *positionListCorps, short *positionX, short *positionY, int *positionListCorpsX, int *positionListCorpsY,
    short *positionListCorpsXAlterne, short *positionListCorpsYAlterne,
    int *valeur_score, short *changementBonus, FMOD_SYSTEM *system_fmod, SDL_Surface *ecran);
    [/quote]
    Possèdent trop d'arguments. Pour diminuer ce nombre, utilisez des structures (la première qui me vient en tête, c'est une structure pour les positions (contenant un x et un y)).

    Je pense qu'il y a de la répétition (copier / coller) de code pour les fonctions de directions*. Le copier coller est à éviter. La duplication de code aussi. Corriger ce problème simplifiera votre code. Pour ce faire, il faut faire une fonction générique contenant les choses répétés dans votre code (factorisation).

    #define m MUR
    #define v VIDE
    #define c CORPS
    #define p POMME
    #define d DROITE
    Ceci est ... horrible !
    Utilisez les enum et ne faites pas de macros à tort est à travers.

    Il y a des fuites de mémoire (à chaque mort, je crois). Surement à cause des images.
    Il y a un problème de gestion des évènements. Si je fais glisser la souris sur la fenêtre, alors mes touches seront bloqués et il faut que j'attende que le programme ait traité tous les évènements pour ravoir le contrôle.
    Ce que vous pouvez faire, c'est après avoir fait votre SDL_PollEvent, vous nettoyez la pile d'évènement avec while (SDL_PollEvent()) {];Sinon, vous pouvez utiliser la méthode de récupérer le tableau les touches appuyés (que je trouve mieux), avec la fonction : SDL_GetKeyState(), par contre, lisez bien la documentation.

    Voilà, bonne continuation
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  12. #12
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Réunion

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 31
    Points : 12
    Points
    12
    Par défaut
    Bonsoir,

    Bon pour les fonction de direction c'était pour mieux gérer le code car je trouvé si je le placé dans une seul est unique fonction il ferait gros comme fonction .
    Pour la gestion du son je vais faire carrément un autre fichier pour que je puisse bien initialiser et faire play sur les musiques. Par contre je comprends pas quand tu dit que le joueur est mort ? C'est la valeur pointDeVie est à 0 c'est ça?

    A bientôt

  13. #13
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 577
    Points
    218 577
    Billets dans le blog
    120
    Par défaut
    Pour moi, mort, c'était lorsqu'il se prend un mur.

    Pour l'histoire des fonctions de direction, vous pouvez bien en garder quatre, pas de problème, sauf que vous pouvez aussi rajouter une nouvelle fonction, ayant le code commun des quatre fonction, afin que ces fonctions appelle la nouvelle.
    Cela permettra de diminuer le nombre de ligne et de simplifier le code (et de le rendre plus facilement corrigeable aussi).
    Et si c'est deux fonctions en plus qu'il vous faut, alors ajoutez en deux (ou trois, ou quatre ...)
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  14. #14
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Réunion

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 31
    Points : 12
    Points
    12
    Par défaut
    Bonsoir à tous,

    Après avoir fait beaucoup de modification au niveau de mon code , j’espère
    que vous allez me dire que c'est correct maintenant après la simplification des
    fonctions pour avoir les nouveau sources voilà le lien -> http://www.megaupload.com/?d=LAGZ0W2S

    A bientôt

  15. #15
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 577
    Points
    218 577
    Billets dans le blog
    120
    Par défaut
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    short directionGeneral(int jeu_[][NB_BLOCS_LARGEUR], short *pommeNumero, Direction *direction_joueur, 
                           SDL_Rect *positionTete, Vide *x_y, short *casesuivante, short *nombreDeCorps, 
                           SDL_Rect *positionListCorps, PosTete *positionXY, Corps *positionListCorpsXY, Corps *positionListCorpsAlterne, 
                           int *valeur_score, short *changementBonus, SDL_Surface *ecran);
    Je pense qu'il y a toujours trop de paramètres. Peut être il faudrait faire une structure "Serpent".

    Je ne comprends toujours pas pourquoi FMOD n'est pas initialisé dans le main, tout comme la SDL.

    La fonction jouer doit être décomposable en plusieurs fonctions, car elle est vraiment grande.

    Évitez les variables globales (notamment celles pour la musique).

    Après, il reste des améliorations au niveau de l'architecture du programme, notamment dans vos SDL_SetVideoMode() qui devrait être organisé autrement, je pense.
    Il y a aussi une possibilité de séparé la partie affichage du jeu et la partie mis à jour du jeu (déplacement serpent ...). C'est normalement une bonne pratique à faire, car bien souvent l'affichage tourne à 60FPS, mais la mise à jour du jeu, uniquement à 20 FPS (si ce n'est pas moins)


    Bonne continuation
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  16. #16
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Réunion

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 31
    Points : 12
    Points
    12
    Par défaut
    Bonjour,

    Après avoir fait ce que tu ma dit de faire voilà les modification ,
    Mais je me demande toujours ou est l'erreur dans le SDL_SetVideoMode

    Bonne soirée

    Lien -> http://www.megaupload.com/?d=E4XVMZA0

  17. #17
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Réunion

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 31
    Points : 12
    Points
    12
    Par défaut
    Bonjour,

    Je viens de faire beaucoup de modification au niveau graphisme et mise du jeux et affichage du score .

    Installation automatique : lien installation

    Sources :lien sources

    Ressources: lien ressources

  18. #18
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 577
    Points
    218 577
    Billets dans le blog
    120
    Par défaut
    Le fichier structures.h est un peu mal conçu. Prenons le code suivant :
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    typedef struct Pomme Pomme; 
    struct Pomme 
    { 
        short x; 
        short y; 
    }; 
     
    typedef struct Corps Corps; 
    struct Corps 
    { 
        short x; 
        short y; 
    }; 
     
    typedef struct PosTete PosTete; 
    struct PosTete 
    { 
        short x; 
        short y; 
    }; 
     
    typedef struct Vide Vide; 
    struct Vide 
    { 
        short x; 
        short y; 
    };
    C'est un peu 4 fois la même choses que vous faites.
    Alors que si vous faites :
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    typedef struct Position
    {
        short x;
        short y;
    }
    Et que après, vous utilisez cette structure Position pour les pommes, les cases et tout, au moins, vous n'aurez pas dupliqué du code (car la duplication de code, c'est mal).

    Le nom de la fonction resultat_score() est mal choisi, je pense. A priori, la fonction fait le dessin du score. Donc un meilleur nom, serait "dessin_score()" (le nom des variables et fonctions est important).
    Après, la fonction contient le code de chargement d'image et de polices :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    images_resultat_fond = IMG_Load("images_fonds_resultats.png"); 
     
        police = TTF_OpenFont("nextg.ttf", 100); 
        police_pomme_cerise = TTF_OpenFont("nextg.ttf", 40);
    Du coup, si vous appelez une dizaine de fois cette fonction, vous allez charger une dizaine de fois les mêmes fichiers ... ce qui est loin d'être bien et cela fait perdre du temps.

    En plus, vous ne libérez pas les ressources liés au polices correctement. Donc fuite de mémoire.

    Dans la fonction fonctionMur() (non pas très cohérent), il y a création de ressource + libération. Il vaudrait mieux faire ce code qu'une seule fois dans le jeu (charger une ressource une fois pour toute, et la libérer qu'à la fin).

    J'ai lu dans une documentation (pour un projet précis) qu'une fonction ne devrait pas faire plus de 70 lignes ... j'en vois plein des votre que l'on pourrait décomposé.

    Pour l'instant c'est tout. Pour le SDL_SetVideoMode(), cela me chagrine toujours qu'il y en est plusieurs, mais cela n'est pas très grave.
    (Si un jour vous devez faire du C++, je pense que cela vous amusera, car dans votre code, on commence à voir une orientation un peu objet )
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  19. #19
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Réunion

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 31
    Points : 12
    Points
    12
    Par défaut
    Bonsoir,

    Je viens de lire les amélioration que tu me dit et dans le plus bref délais je vais mettre à jours mon sources mieux structuré et avec plus de fonction pour que il ne fasse que 70 ligne de code au max par fonction (il faut appliqué cette réglé au fonction main??? )
    Ah oui aufait j'ai déjà fait du C++ avec Qt mais c'est juste que avec la SDL et le langage C il faut le dire franchement C++ ni plus meilleur ni plus faible que le C mais c'est juste que je m'entraine plus en ce moment sur le C ^^.
    Et merci pour l'aide, et pour les cours et tutoriels pour apprendre le langage C.
    En tous cas à bientôt .
    PS: GIT : https://github.com/skyhate/Jeux-Serpent- [ il y a de la mise à jour de temps en temps ]

  20. #20
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    MégaUpload a été fermé par le FBI à la suite de pressions lobbyistes.
    Les Majors ont eu peur du nouveau projet de Méga...

    Donc pour tes téléchargements, il faudra que tu trouve une autre solution et que tu mette tout tes liens à jour.

Discussions similaires

  1. Recherche jeux SDL/OPENGL
    Par jkalzsmu dans le forum SDL
    Réponses: 6
    Dernier message: 15/02/2007, 20h57
  2. OpenGL SDL Jeux sous Linux (des ebooks gratuits en pdf ).
    Par SimpleMe dans le forum Développement 2D, 3D et Jeux
    Réponses: 3
    Dernier message: 07/02/2007, 22h07
  3. jeux de serpent
    Par jalilc dans le forum Projets
    Réponses: 13
    Dernier message: 14/06/2006, 14h41
  4. aidez moi svp,"code source" du jeux serpent
    Par joshkof dans le forum C++
    Réponses: 3
    Dernier message: 24/05/2006, 11h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo