Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C/SDL] Pacman

Sujet résolu
    11 avril 2010 à 22:27:14

    Bonjour à tous,

    Voilà une petite présentation d'un projet de Pacman (réalisé en C avec la SDL et FMOD) sur lequel je travaille depuis quelques mois déjà ^^

    Un peu d'histoire

    Mais pas trop ...


    Pac-man est un jeu d'arcade créé en 1979 par le concepteur japonais Tōru Iwatani (Flemme d'écrire, si vous voulez plus d'infos : lien Wikipédia).

    Principe


    (j'espère ne pas vous offenser en vous rappelant les principes de Pac-man. Après tout, on est sur le site du Zéro, donc il faut tout expliquer :p)
    Vous êtes une espèce de camembert jaune tout moche et vous devez ramasser les pac-gommes disposées sur la carte, tout en évitant les fantômes. Les super pac-gommes vous permettent de pouvoir "manger" les fantômes pendant une certaine durée.

    Fonctions du programme


    Le programme permet de mettre le jeu en pause, de sauvegarder une partie à chaque début de niveau, de configurer les options (volume, touches, ...) ou encore d'enregistrer vos meilleurs scores.
    Bref, j'ai essayé de faire un programme ayant le plus de fonctionnalités possible et offrant un confort maximal à l'utilisateur.

    Screnshoots


    le menu principal


    menu principal

    une partie


    une partie en cours

    les options


    écran des options

    Divers


    Téléchargements (dernière mise à jour : 7/02/11)


    Version Windows : stable, instable (mais avec différents modes de jeu).
    Version Linux : zip, 7-zip (version stable).
    Version Mac : pas encore disponible, contactez-moi par mp si vous l'avez compilé.

    Code source : stable, instable.

    Pour le recompiler, vous devez avoir installé la SDL, SDL_image, SDL_ttf et FMOD.

    Objectifs actuels

    • Mieux gérer le déplacement de Pacman
    • Continuer et terminer la(les) musique(s)

    J'espère qu'il vous plaira et j'attends vos commentaires, remarques et autres.
    Je suis prêt à entendre toute critique qui porte sur le code source, la jouabilité du jeu, l'absence d'une fonctionnalité, les défauts d'une fonctionnalité existante, ou encore sur le design (qui n'est, je vous l'accorde, pas terrible :-° ), du moment qu'elle est constructive. C'est d'ailleurs parce que je suis sûr de qu'il est possible d'améliorer ce programme que je viens recueillir des avis extérieurs sur ce forum :)

    D'autre part, si quelqu'un peut m'aider ou me renseigner à propos des sujets suivants:
    • J'aimerais rendre le code source multi-plateforme, mais je ne sais pas comment faire :(
    • Je me demande aussi si je dois appliquer une licence au programme
    • Je n'arrive pas à utiliser la transparence pour l'icône en haut de la fenêtre sous Windows (le résultat est plutôt moche donc pour l'instant j'utilise une image avec un fond bleu, mais c'est de la triche et les résultat n'est pas fabuleux ^^)
    • Je ne m'y suis pas encore penché, mais je vais chercher un algorithme pour l'IA des fantômes. Si vous avez des idées, n'hésitez pas ;)
    • En fin de partie, la saisie de pseudo n'est pas super. Je vais essayer de l'améliorer mais si quelqu'un a une piste, je suis preneur :euh:
    • Si vous trouvez des bugs ou des fuites de mémoire, vous avez le droit de me taper sur les doigts :)

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      12 avril 2010 à 0:07:14

      Wow! Beau projet je l'ai téléchargé! C'est très bien j'adore et je le garde dans mes dossier!
      Félicitation! À+
      • Partager sur Facebook
      • Partager sur Twitter
        12 avril 2010 à 0:22:37

        Merci, ça fait plaisir :)
        Si tu rencontres des bugs ou des problèmes en jeu, n'hésite pas à ma les rapporter ici ou par mp ;)
        • Partager sur Facebook
        • Partager sur Twitter
          12 avril 2010 à 2:26:31

          Je l'ai téléchargé et franchement, pas mal du tout ;)
          • Partager sur Facebook
          • Partager sur Twitter
            12 avril 2010 à 6:57:29

            Tres sympa, ca rappelle la belle epoque du jeu video :p !

            Pour un peu plus de nouveautes et de challenge, je pense que tu devrais rajouter un mode... Challenge.
            Avec, genre, des sortes de missions. Du style, "impossibilite de repartir directement a l'envers" ou "devorer tous les monstres", ou encore, couple a un algorithme de path finding (du style A Star), un "evitez vos ennemis pendant 2min !".

            Ca donnerait un coup de neuf au systeme de Pacman sans detruire la memoire du Pacman d'origine :3
            • Partager sur Facebook
            • Partager sur Twitter
              12 avril 2010 à 12:32:10

              J'aime bien ton idée Pampattitude. Par contre je ne voit pas bien l'utilité de l'algo de type A* Pour éviter les ennemis. La gestion des collisions ne suffit pas ?
              Tu m'a fait pensé à autre type de challenge (qui ressemble un peu à "évitez vos ennemis pendant 2min") : une mode "survivor" où il faut tenir le plus longtemps possible sans être touché, avec la vitesse qui accélère au fur et à mesure et le nombre de fantômes qui augmente.

              En tout cas c'est une bonne idée ;)

              Sinon personne n'a d'infos/d'astuces concernant les points évoqués dans le sujet ?
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                12 avril 2010 à 13:23:43

                salut

                excelent jeu :D je me suis bien marré :D

                cela dit, j'ai trouvé un petit bug, lorsque la partie est fini et qu'on enregistre pas les score, le programme rencontre un problème

                j'ai fait un screen bien que ce soit un panneau courant sur windows (vista)

                Image utilisateur

                continu comme ça :)
                • Partager sur Facebook
                • Partager sur Twitter
                  12 avril 2010 à 13:26:32

                  Mais heu !
                  C'était à moi de créer un Pac-Man ! :p

                  Alors, pour répondre à tes questions:

                  * Ton code source est déjà multi-plateforme. :)
                  Le C est multi-plateforme, la SDL l'est aussi, et par contre, FMOD sous Linux et Mac ne gère pas les fichiers .midi.
                  Ce qui n'est pas multi-plateforme, c'est le jeu. Normal, il n'a été compilé que sous Windows. Quand je le testerai chez moi, j'en profiterai pour compiler la version Linux. Je te l'envoie si tu veux (?)

                  * Oui, une licence, c'est important. Par défaut, selon la loi française, si tu ne choisis pas de licence particulière, la licence appliquée est le Copyright.
                  Après, faut quand même savoir que si tu appelles ton programme Pac-Man, tu est dans l'illégalité je pense, puisque le nom est une marque de Namco.
                  Et puis, pour les licences, le mieux à mon avis est de choisir une licence libre, parce que le libre, c'est génial.

                  * Je ne peux pas t'aider, je m'y connais pas assez en Windows.

                  * J'avais déjà créé un petit Pac-Man, pour l'IA, je gérais en fonction de la position des gommes par rapport au perso. Je peux détailler, mais de toute façons, mon algo ne marchait pas très bien (les fantômes étaient parfois coincés).

                  * J'ai une piste ! Regarde ici c'est une librairie du Zéro.

                  * J'ai pas encore testé, mais je me ferai un plaisir de te frapper si le jeu ne marche pas bien :-°


                  Bonne continuation !
                  • Partager sur Facebook
                  • Partager sur Twitter
                    12 avril 2010 à 15:54:22

                    @graphics


                    Je suis tombé sur le bug ce matin, et je l'ai corrigé. J'en ai profité pour améliorer un peu le système de saisie de pseudo.

                    @roibakura


                    Merci de ton message très constructif :)
                    *Je pensais que pour avoir un code multiplteforme, il fallait écrire un truc du genre :

                    #ifdef __linux__
                        #include ???
                    #endif
                    // etc ...
                    

                    Mais si ça peut se compiler comme ça tant mieux ^^
                    Et oui je veux bien que tu m'envoie la version compilée sous linux. C'est toujours ca de pris, même si le prog va encore bouger :-°

                    * C'est vrai que j'avais pas pensé que Pac-man est en copyright :euh: J'vais devoir trouvé un autre nom (si je met un truc du genre Pac-man *** ça marche ?).
                    Après c'est sûr que j'allais choisir une license libre, mais après une rapide recherche j'ai été découragé par le nombre de license de ce type qui existent, et par le fait que la description est en anglais pour la plupart.

                    * Dommage, mais merci quand même x)

                    * Oui ton algo peut être intéressant, mais j'ai lu un article qui disait que les fantômes avaient pas tous le même comportement. Par exemple, Blinky (le rouge) suis bêtement le joueur tandis qu'un autre (je ne sais plus la couleur) essai d'anticiper les mouvements du joueur. En gros, à eux deux ils prennent le joueur en étaut (ça s'écrit comme ça ?). Je ne sais plus ce qu'il en est des deux autres.

                    * Je vais regarder ça de plus près et faire quelques tests, ça pourrait m'être très utile :D

                    * Et ça sera un plaisir d'être frappé par toi :p (Non non je ne suis pas maso :-° )


                    P.S : désolé de t'avoir piqué ton idée de projet. T'avais qu'à le faire avant, na !
                    • Partager sur Facebook
                    • Partager sur Twitter
                      12 avril 2010 à 16:02:55

                      Effectivement les quatre fantômes ont un comportement différents. J'avais lu un super article... je vais essayer de le retrouver (je crois qu'il était en anglais), décrivant l'IA de chaque fantôme.
                      En tout cas beau boulot !
                      • Partager sur Facebook
                      • Partager sur Twitter
                        12 avril 2010 à 19:06:38

                        J'ai vite testé avec Wine (pisske Roibakura arrive pas à compiler :p )
                        Verdict : >Non-Coupable (Houla ça faisait longtemps que j'en avais pas fait une aussi naze :lol: ) C'est du très bon boulot. Trop bon. T'as piraté les ordis de chez Namco ou bien ... ? :D

                        Cependant, je trouve que la vitesse de Pac-Man est beaucoup, beaucoup, beaucoup trop lente. Ou bien il y a une option pour régler la vitesse, ou bien tu changes la vitesse mais là personnellement je peux pas jouer, c'est trop lent :-/ .
                        • Partager sur Facebook
                        • Partager sur Twitter
                          12 avril 2010 à 19:13:34

                          Hey !
                          Je viens de terminer de compiler ton projet... ça marche pas :o
                          Je crois que le problème vient du fait que tu ranges tes fichiers dans "obj".
                          C'est pas courant, et je crois pas que mon compilateur aime ça... :-°

                          De toute façons, les Linuxiens peuvent quand même y jouer, il tourne très bien avec Wine. (La preuve)
                          Image utilisateur



                          Je vais continuer à faire des tests.
                          Sinon, pour rester dans les questions:



                          • Oui, je vois ce que tu veux dire. C'est vrai uniquement si tu utilises un code spécifique à un OS, mais ici, ce n'est pas le cas. Si jamais tu veux te servir de l'API système, par contre, ce sera obligé. Cependant, c'est à éviter, et comme tu l'évites, c'est bien, continue.

                          • En fait, je suis pas certain qu'il soit copyrighté, mais ça me surprendrait que ce soit pas le cas. Tu as le droit de copier le principe, par contre, pas le nom. Du coup, tu pourrais je pense prendre PaK Man, ou n'importe quoi, tant que c'est pas "Pac-Man©"

                          • En effet, ils se comportent pas pareil. Bon, ben oublie alors.

                          • Oui, je pense que tu aurais intérêt à utiliser sa librairie.
                            En plus, il est gentil. ;)

                          • Viens te faire taper dessus. Tu as utilisé des commentaires unilignes. C'est le mal incarné les commentaires unilignes ! :diable:



                          Quand au choix d'une licence libre, je te l'accorde, c'est pas toujours très simple.
                          Le plus simple a mettre en place, c'est une licence CC, c'est plus généralement utilisé pour les arts, mais ça marche avec les logiciels.
                          Si t'es carrément puriste, tu peux léguer ça au domaine public.
                          C'est simple aussi, mais tu contrôles pas vraiment les droits des gens.
                          Sinon, la licence GNU GPL, je l'aime bien.

                          Lis ce tuto su SdZ, il explique bien.

                          • Partager sur Facebook
                          • Partager sur Twitter
                            12 avril 2010 à 19:24:18

                            @supermael : En effet ce serait sympa si tu avais un lien :D

                            Citation : roibakura

                            Hey !
                            Je viens de terminer de compiler ton projet... ça marche pas :o
                            Je crois que le problème vient du fait que tu ranges tes fichiers dans "obj".
                            C'est pas courant, et je crois pas que mon compilateur aime ça... :-°


                            Arf ! En fait j'avais pas d'idée de nom de dossier pour ranger tous mes fichiers, donc j'ai pris celui créé par le compilo :D Jvé essayer de changer ça alors.

                            Citation : roibakura

                            Oui, je pense que tu aurais intérêt à utiliser sa librairie.
                            En plus, il est gentil. ;)


                            La lib est vraiment super pour la saisie, par contre je rencontre un ou deux problèmes. Je ne sais pas comment récupérer le texte saisi dans une variable, ni comment arrêter la saisie. Par exemple, j'ai à un moment une fenêtre qui s'ouvre pour entrer son pseudo. Je voudrais pourvoir récupérer le pseudo entré et fermer la fenetre (quitter la fonction donc) lorsque l'utilisateur appuie sur Entrée ou Echap.
                            Voilà je ne sais pas si tu connais le fonctionnement de cette lib. Si ce n'est pas le cas, je posterai directement sur le topic ^^

                            Citation : roibakura

                            Quand au choix d'une licence libre, je te l'accorde, c'est pas toujours très simple.
                            Le plus simple a mettre en place, c'est une licence CC, c'est plus généralement utilisé pour les arts, mais ça marche avec les logiciels.
                            Si t'es carrément puriste, tu peux léguer ça au domaine public.
                            C'est simple aussi, mais tu contrôles pas vraiment les droits des gens.
                            Sinon, la licence GNU GPL, je l'aime bien.

                            Lis ce tuto su SdZ, il explique bien.


                            J'y vais de ce pas ==>

                            Citation : roibakura

                            (à propos de l'icône dans ton message précédent) Je ne peux pas t'aider, je m'y connais pas assez en Windows.


                            Si tu sais comment faire sous Linux, ça m'intéresse :)

                            Citation : Meretphis

                            J'ai vite testé avec Wine (pisske Roibakura arrive pas à compiler :p )
                            Verdict : >Non-Coupable (Houla ça faisait longtemps que j'en avais pas fait une aussi naze :lol: ) C'est du très bon boulot. Trop bon. T'as piraté les ordis de chez Namco ou bien ... ? :D


                            Très touché :honte:
                            Mais non, je n'ai rien piraté du tout (ou pas, qui sait ... :soleil: )

                            Citation : Meretphis

                            Cependant, je trouve que la vitesse de Pac-Man est beaucoup, beaucoup, beaucoup trop lente. Ou bien il y a une option pour régler la vitesse, ou bien tu changes la vitesse mais là personnellement je peux pas jouer, c'est trop lent :-/ .


                            Pour la vitesse, elle évloue au fur et à mesure des niveaux. Si tu arrives à bidouiller (et je te dirai pas comment faire, mais en regardant le code source tu vas vite comprendre), crée-toi une partie d'un niveau du genre 5/10 tu va voir la différence. Si tu y arrives pas, bah t'as qu'à arriver jusque là :p

                            H.S : je ne sais pas pourquoi, mais depuis un moment je dois attendre 5 minutes pour afficher une page du site du Zéro, mais seulement quand je suis connecté o_O
                            • Partager sur Facebook
                            • Partager sur Twitter
                              13 avril 2010 à 19:38:14

                              Petit up,

                              J'ai avancé sur les saisies de texte avec la librairie de Cokie. Je rencontre jusque quelques problèmes avec des erreurs de segmentation à la libération de la mémoire qui apparaissent assez aléatoirement :o

                              Je pense sortir le version 1.0 d'ici la fin de la semaine (en espérant avec des musiques), avec une installation pour windows et les fichiers dans un autre dossier pour pouvoir compiler sous linux ^^ . J'intègrerais différents modes de jeu dans une prochaine version.

                              Pour la licence, je pense placer mon programme sous CeCILL (version C à priori). Elle ressemble beaucoup à la GNU GPL sauf qu'elle a l'avantage d'être française et de laisser le choix de la licence en cas de redistribution.
                              • Partager sur Facebook
                              • Partager sur Twitter
                              Anonyme
                                13 avril 2010 à 19:45:39

                                J'ai aussi tester sous Linux et ça fonctionne parfaitement!
                                Bonne chance À+
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  13 avril 2010 à 20:04:50

                                  AHH ! Après 1h de recherche, je le tiens enfin :p

                                  Le super dossier en anglais de Pacman

                                  Très bien fourni, tu as une explication détaillée de chaque fantôme.
                                  Enjoy !
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    13 avril 2010 à 20:22:50

                                    Tout à fait en harmonie avec ton pseudo toi :-°
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      13 avril 2010 à 22:00:11

                                      Merci pour le lien supermael. Le dossier est vraiment super complet, ca va me faire de la lecture :lol:

                                      Citation : pacman2

                                      Bon je vais tester :D


                                      Citation : Meretphis

                                      Tout à fait en harmonie avec ton pseudo toi :-°


                                      lol :D
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        15 avril 2010 à 10:30:15

                                        Mise à jour du 15/04/10:


                                        J'ai inséré la saisie des texte avec la libraire de Cokie. Toutefois, il semble y avoir des erreurs de segmentation lors de la pause, lorsque l'on choisi de quitter en sauvegardant et que l'on valide le pseudo. Ces erreurs ne sont apparues que sur l'un des deux ordinateurs sur lesquels j'ai testé. Si vous rencontrez ce problème, veuillez me le signaler.

                                        J'ai également regroupé les fichiers dans un autre dossier que "obj", donc roibakura si tu pouvais retenter de compiler sous Linux, ce serait sympa (ou quelqu'un d'autre qui passe par là). Si quelqu'un peut compiler sous Mac, je suis aussi preneur :)

                                        Dans les téléchargements, j'ai différé le setup Windows et le code source, je pense que c'est plus pratique ;)

                                        @supermael : j'ai bien avancé dans la lecture de The Pacman Dossier, c'est dingue tous les détails qu'il y a :waw:
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          15 avril 2010 à 12:11:48

                                          Je re-tente la compil cet aprèm'
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            15 avril 2010 à 12:57:13

                                            C'est vrai que ce dossier est très complet. Je ne sais plus comment je l'avait trouvé, m'enfin bon...
                                            Il ne te donne pas de code à proprement parler, mais tu as tout ce qu'il faut pour refaire le Pacman original :p
                                            Et d'ailleurs, je trouve ton menu excellent. Il est très fluide, et son côté graphique me plait beaucoup.
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              15 avril 2010 à 13:23:01

                                              Salutation :D !!

                                              Félicitation , j'aime beaucoup ton jeu !! ;)
                                              Il y a quelques petites chose à améliorer selon moi cependant :

                                              Au niveau du jeu :

                                              1 ) L'intelligence artificielle :
                                              Dans ce domaine , il y a vraiment de gros progrès à faire :p les bots partent n'importe où et reste parfois plusieurs secondes à l'autre bout de l'écran sans vouloir se dirigés vers pacman ...
                                              Image utilisateur
                                              J'ai cru comprendre que tu avais déniché un bon article sur le comportement des bots dans le pacman original , tu n'a plus qu'a t'y mettre :lol: bonne chance !!!


                                              2 ) La renaissance de pacman :
                                              Après que PacMan est perdu une vie , ils se passe plusieurs petites choses qu'il faudrait améliorées...
                                              Dans un premier temps , on ne renait qu'au bout de 10 sec si on appuis pas sur une touche :
                                              Image utilisateur
                                              je ne sait pas si c'est un délais volontaire ou si il s'agit d'un bug mais il serait bien que pacMan renaisse tout de suite ou au bout de 1 ou 2 sec ...
                                              Ensuite , les ennemies reste à la même position quand on renait , normalement , ils devrait eux aussi repartir de leur point de départ , sinon il y a des chances pour qu'on meurt directement après le respawn :
                                              Image utilisateur


                                              3 ) Les scores :
                                              Déjà , quelque soit notre score , même si il est moins bon que notre meilleur score , le jeu nous dit qu'on a établi un nouveau record :
                                              Image utilisateur
                                              Ensuite , il est possible de rentrer une chaine de caractères trop longes pour être affichée dans le panneau des scores , il serait bon de mettre une limitation :
                                              Image utilisateur


                                              Au niveau de la programmation :

                                              • 1. Les includes : J'ai vu que tu faisait vraiment beaucoup d'include dans t'es fichier C et que les headers ne servait pas a grand chose ... Il y a même parfois des doublés , par exemple , dans "fichier.h" , tu fais un include de "constantes.h" et tu refait ce même include dans "fichier.c" ... Il serait bien plus simple et plus efficace de faire un fichier "main.h" contenant le code suivant :
                                              #ifndef MAIN_H_INCLUDED
                                              #define MAIN_H_INCLUDED
                                              
                                              #include <stdlib.h>
                                              #include <stdio.h>
                                              #include <stdarg.h>
                                              #include <SDL/SDL.h>
                                              #include <SDL_image.h>
                                              #include <SDL_ttf.h>
                                              #include <fmod.h>
                                              #endif // MAIN_H_INCLUDED
                                              
                                              ainsi que toutes tes structures , énumérations et constantes qui sont dans "constantes.h"(plus besoins de ce fichier , d'ailleurs , les structures n'avait rien a faire là , ce ne sont pas des constantes mais des type de variable ...) ensuite , tu inclue ce main.h dans tous t'es headers , tu supprime les doublons (les includes de librairies dans les autres headers que "main.h" et tu inclue juste les headers dans les fichier ".c" correspondant. (ex : "jeu.h" dans "jeu.c") 2. Les define , les structure et les énumérations : J'ai vu que tu faisait vraiment énormément de define , de structure et d'énumération . Je ne sait pas si il son tous justifié mais en tout cas , pour un projet "si petit" , c'est assez alarment ... Tu devrais peut être reprendre un à un chacun de t'es define et une à une chacun de t'es structure et énumération pour te demander : "me sert-il/elle vraiment" , "n'y a-t-il pas une autre solution plus fonctionnelle ou efficace ?" "n'y a-t-il pas de doublons ou ne puis-je pas fusionner certaine srtucture ou énumération ?"

                                              Voilà tout ce qui me vient a l'esprit pour le moment :D

                                              Encore bravo pour ton jeu et bonne continuation !!! :pirate:
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                15 avril 2010 à 13:24:08

                                                Salut jairard, j'ai pu télécharger ton jeu et mes impressions c'est que c'est pas mal. Mais il y a quelques petits défauts:
                                                - concernant le jeux:
                                                Lors de la saisie de son nom dans l'option sauvegarde il apparait le caractère '?'
                                                Le déplacement de pacman devrait etre plus souple léger, donc revoit la gestion des événements du clavier
                                                - concernant le code source:
                                                je n'ai pas encore fini de tout analysé mais j'ai remarqué que tu avais écris le code de chargement de tous tes sprites dans jeu.c, ce qui allourdit ton code, voilà ce que je te propose, l'emplacement de tes sprites tu les écris dans un fichier texte, ensuite tu écris une fonction pour les récupéré dans ton programme, utilise une liste de chaine de caractère ( vector ) ensuite tu n'à plus qu'à boucler pour charger les sprites, c'est ma technique à moi je te file ;) . Meme chose pour les positions de tes sprites.
                                                Je te fais signe après, j'analyse le code encore.
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  15 avril 2010 à 14:00:40

                                                  Citation : Dark-Flint

                                                  J'ai vu que tu faisait vraiment énormément de define , de structure et d'énumération . Je ne sait pas si il son tous justifié mais en tout cas , pour un projet "si petit" , c'est assez alarment



                                                  Padakor !
                                                  Quand j'ai jeté un œil au code en essayant (infructueusement) de le compiler la première fois, j'ai regardé les structures et les defines, et je les trouve globalement bien utilisées. En plus, elles permettent d'éclaircir un peu le code, là ou il est parfois assez dur à lire.

                                                  Je me douche, et je tente la compilation une seconde fois. ;)
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    15 avril 2010 à 14:10:32

                                                    Par rapport au code:

                                                    dans le fichier option.c, la fonction gestionOptions est trop longue vu le résultat de ce que tu affiches dans le menu option

                                                    dans le meme fichier la fonction chaineTouche :
                                                    consulte l'API window, il y a une fonction qui permet de savoir le type de clavier que l'utilisateur utilise, par conséquent tu pourra mieux disposer ton code

                                                    Tu fais ossi bocou d'opérations, c'est l'inconvénient du système des tableaux dimensionnels et ce système n'est efficace que par rapport à la résolution appliquée par le jeu, essaie de changer une résolution tu verras que le système case x 2 perdra son efficacité, pour éviter de gros calcul, utilise le système de la barrière du sprite simple et rapide ;) .
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      15 avril 2010 à 16:04:35

                                                      Beaucoup de messages, j'aime ça :p
                                                      Je vais essayer de répondre à tout le monde :lol:

                                                      @roibakura



                                                      Citation

                                                      Citation : Dark-Flint


                                                      J'ai vu que tu faisait vraiment énormément de define , de structure et d'énumération . Je ne sait pas si il son tous justifié mais en tout cas , pour un projet "si petit" , c'est assez alarment



                                                      Padakor !
                                                      Quand j'ai jeté un œil au code en essayant (infructueusement) de le compiler la première fois, j'ai regardé les structures et les defines, et je les trouve globalement bien utilisées. En plus, elles permettent d'éclaircir un peu le code, là ou il est parfois assez dur à lire.

                                                      Je me douche, et je tente la compilation une seconde fois. ;)


                                                      Fais-moi signe dès que tu as le résultat de la compilation ;)
                                                      Pour ce qui est des enum et des structures, j'avoue qu'il y en a beaucoup. Pour les enums, je les ai faites un peu en vrac quand j'en avais besoin, donc de ce côté il y a peut-être effectivement quelque chose à faire. Par contre je ne pense pas avoir abusé des structures. Je m'en suis servi pour réduire le nombre de variables (et ainsi le nombre d'arguments passés aux fonctions) quand j'utilisais plusieurs fois les même groupe de variables. Après je ne dit pas que mon code est ultra-optimisé, je regarderais aussi de ce côté pour voir ce que je peux faire :)


                                                      @supermael



                                                      Citation

                                                      C'est vrai que ce dossier est très complet. Je ne sais plus comment je l'avait trouvé, m'enfin bon...
                                                      Il ne te donne pas de code à proprement parler, mais tu as tout ce qu'il faut pour refaire le Pacman original :p


                                                      J'avoue, mais j'aurai jamais le courage de tout reprendre comme c'est écrit dans le dossier. Eh oui, je suis programmeur dans l'âme et donc nécessairement fénéant :p

                                                      Citation

                                                      Et d'ailleurs, je trouve ton menu excellent. Il est très fluide, et son côté graphique me plait beaucoup.


                                                      Merci, ça me rassure parce que niveau graphisme je suis pas très confiant :lol:


                                                      @Dark-Flint



                                                      Je ne cite pas tout ton post, ce serait trop long ^^

                                                      Au niveau du jeu

                                                      L'intelligence artificielle

                                                      En effet, pour l'instant les fantômes se déplacent de façon totalement aléatoire, mis à part le fait qu'ils ont une faible probabilité de faire demi-tour.
                                                      Je compte changer ça le plus vite possible !

                                                      La renaissance de Pacman

                                                      Absence de réapparition :

                                                      Apparemment, cela ne se produit que lorsque l'on meurt sans avoir bouger du tout durant le niveau. En général, la première chose qu'on fait quand on joue à Pacman et que je le jeu commence, c'est bouger, donc ce bug n'est pas très grave. Je vais quand même essayer de résoudre le problème (peut-être en faisant automatiquement partir Pacman sur la gauche comme dans le vrai jeu).

                                                      Persistance des positions des fantômes :

                                                      En fait, à "l'époque", je ne savais pas que les fantômes devaient revenir à leurs positions initiales. J'ai donc mis en place un temps d'invincibilité après la mort de Pacman. A ce moment-là, Pacman clignote pendant un temps que je juge suffisant pour s'écarter d'une situation périlleuse. Néanmoins, j'hésite entre garder cette solution et replacer les fantômes à leurs positions initiales ...

                                                      Les scores

                                                      Record permanent :

                                                      En fait, le jeu indique qu'un record a été réalisé si le score figure parmi les 10 premiers. Comme, par défaut, les 10 premiers scores sont nuls, les 10 première parties seront toutes enregistrées comme des records. Peut-être que par la suite, je donnerai des records avec des paliers. Par exemple : 1000 points pour le 10ème, 5000 pour le 9ème, etc ...

                                                      Longueur des pseudos :
                                                      Une limite existe déjà, elle est de 50 caractères. Je pense que je vais la réduire :D

                                                      Au niveau de la programmation

                                                      Les includes

                                                      C'est une bonne idée, je vais l'appliquer ;)

                                                      Les defines , les structure et les énumérations

                                                      Pour les defines, je ne vois pas en quoi j'en utilise trop :euh:
                                                      Pour le reste, j'ai répondu plus haut.


                                                      @evilblack



                                                      Citation

                                                      Mais il y a quelques petits défauts:
                                                      - concernant le jeux:
                                                      Lors de la saisie de son nom dans l'option sauvegarde il apparait le caractère '?'
                                                      Le déplacement de pacman devrait etre plus souple léger, donc revoit la gestion des événements du clavier


                                                      Pour la saisie de caractère, cela provient de la lib que j'utilise, je ne sais pas encore d'où vient le problème. J'ai remarqué aussi qu'une fois que ce caractère apparait, il n'y a plus moyen de l'effacer et il y a souvent une erreur de segmentation quand on valide le pseudo (en appuyant sur Entrée). Je vais voir avec le concepteur de la-dite librairie, et au pire je reprendrais mon vieux code :lol:
                                                      Par contre je ne vois pas ce que tu entends par "souple, léger", ni comment améliorer la gestion des évènements :(

                                                      Citation

                                                      - concernant le code source:
                                                      je n'ai pas encore fini de tout analysé mais j'ai remarqué que tu avais écris le code de chargement de tous tes sprites dans jeu.c, ce qui allourdit ton code, voilà ce que je te propose, l'emplacement de tes sprites tu les écris dans un fichier texte, ensuite tu écris une fonction pour les récupéré dans ton programme, utilise une liste de chaine de caractère ( vector ) ensuite tu n'à plus qu'à boucler pour charger les sprites, c'est ma technique à moi je te file ;) . Meme chose pour les positions de tes sprites.


                                                      Je suis d'accord avec toi, le chargement est assez lourd. Si j'ai bien compris, la technique que tu proposes consiste à stocker les chemins dans un fichier, charger les chemins dans un tableau de chaînes de caractères et ensuite charger chaque sprite à partir de ce tableau ?

                                                      Citation

                                                      dans le fichier option.c, la fonction gestionOptions est trop longue vu le résultat de ce que tu affiches dans le menu option


                                                      En fait ce qui est long, c'est la gestion des évènements (environ 700 lignes). Et forcément, la gestion des évènements ça ne se voit pas directement à l'écran ^^
                                                      Après c'est sûr qu'il y a moyen de raccourcir la fonction en faisant des fonctions annexes, mais je ne pense pas qu'il soit possible de réduire la taille totale.

                                                      Citation

                                                      dans le meme fichier la fonction chaineTouche :
                                                      consulte l'API window, il y a une fonction qui permet de savoir le type de clavier que l'utilisateur utilise, par conséquent tu pourra mieux disposer ton code


                                                      Le problème c'est que là, le code ne devient plus multi-plateforme :(

                                                      Citation

                                                      Tu fais ossi bocou d'opérations, c'est l'inconvénient du système des tableaux dimensionnels et ce système n'est efficace que par rapport à la résolution appliquée par le jeu, essaie de changer une résolution tu verras que le système case x 2 perdra son efficacité, pour éviter de gros calcul, utilise le système de la barrière du sprite simple et rapide ;) .


                                                      Je n'ai pas compris ce que tu voulais dire par là désolé ... :euh:
                                                      J'ai compris que tu parlais du système de carte, mais je ne comprend pas ce qui ne va pas dans son utilisation.


                                                      @pacman2



                                                      Citation

                                                      pacman est trop lent ;)


                                                      Je compte régler la vitesse en me basant sur le fameux dossier :)
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        15 avril 2010 à 16:30:46

                                                        Justement je trouve la simplicité graphique assez réussite.
                                                        Tu as lu l'histoire du niveau 256 sur le dossier ? J'ai trouvé l'anecdote assez marrante :p
                                                        • Partager sur Facebook
                                                        • Partager sur Twitter

                                                        [C/SDL] Pacman

                                                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                        • Editeur
                                                        • Markdown