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

SDL Discussion :

j'aimerai mettre a dispo des sources SDL.


Sujet :

SDL

  1. #21
    Membre actif
    Inscrit en
    Septembre 2003
    Messages
    391
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 391
    Points : 207
    Points
    207
    Par défaut
    Citation Envoyé par fearyourself
    Tu devrais rajouter des affichages d'erreur pour :

    - L'ouverture de BB.bmp
    J'aimerais avoir l'avis d'un expert là,
    l'ouverture de cat.bmp se trouve dans le constructeur (et ca me plait bien!)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Cat::Cat()
    {
    ...
    sdlcat = load_image( "cat4.bmp" );
    }
    et je libere dans le destructeur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Cat::~Cat()
    {
    	if(sdlcat) SDL_FreeSurface( sdlcat );
    }
    Comment a partir de là gerer le probleme de la lecture ?
    plusieurs options :
    - gerer un evenement dans la fille d'attente SDL... j'envoie un evenement personalisé avec SDL_PushEvent pour dire qu'il y a un probleme... et je vais lire dans la main() avec SDL_PollEvent(&event) ??? (tordu?)
    - creer une methode membre "cat::ready()" qui renvoie FALSE si c'est pas chargé ?
    - creer une variable globale que je met a 1 s'il y a un probleme
    - autres ?...

  2. #22
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Tu as oublié la solution la plus adaptée dans ce genre de cas : lancer une exception.

    Sinon au pire, déplacer le chargement dans une fonction Cat::LoadResources() renvoyant un code d'erreur.

  3. #23
    Membre actif
    Inscrit en
    Septembre 2003
    Messages
    391
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 391
    Points : 207
    Points
    207
    Par défaut
    Citation Envoyé par Laurent Gomila
    Tu as oublié la solution la plus adaptée dans ce genre de cas : lancer une exception.
    ouais, c'est parceque je ne sais pas faire si t'as un lien...
    Citation Envoyé par Laurent Gomila
    Sinon au pire, déplacer le chargement dans une fonction Cat::LoadResources() renvoyant un code d'erreur.
    C'est ce que j'aimerais eviter, j'aime bien l'idée que ca soit géré dans les constructeur/destructeur... au moin on est SUR que ça sera executé, et au BON moment en plus... seul probleme je ne peux pas gerer un retour...

  4. #24
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Dans ce cas les exceptions sont vraiment ce qu'il te faut. Pour ce qui est des liens... FAQ C++, tutoriels, Google, livres, ...

  5. #25
    Membre actif
    Inscrit en
    Septembre 2003
    Messages
    391
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 391
    Points : 207
    Points
    207
    Par défaut
    Salut, voici une nouvelle version,
    pleins de nouveautés, c'est presque jouable
    de memoire :
    nouveautés du gameplay :
    - echelles
    - bloc cassables (avec la tête)
    - tuyau (warp)
    - porte de fin de niveau
    - blocs transparents qui apparaissent quand on marche dessus...
    - support du joystick !!!
    nouveautés generales :
    - chargement de tableau en dynamique
    - des classes "item" pour differents elements du jeux.

    voilà, le code est dans mon deuxieme post..
    comme d'hab il faut rajouter les fichiers TTF.

    PS : FearYourSelf, tu peux me mettre ton makefile, ca m'interresse merci.

  6. #26
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Voici ce que j'obtiens :

    Je n'ai pas vu le fichier items1.h dans ton zip...

    In file included from general.h:7,
    from cat.cpp:3:
    level.h:15:20: error: items1.h: No such file or directory
    level.h:18: error: ‘baseitem’ was not declared in this scope
    level.h:18: error: template argument 1 is invalid
    level.h:18: error: template argument 2 is invalid
    level.h:18: error: invalid type in declaration before ‘;’ token
    level.h:51: error: ‘ItemBloc’ was not declared in this scope
    level.h:51: error: template argument 1 is invalid
    level.h:51: error: template argument 2 is invalid
    level.h:52: error: ‘ItemZone’ was not declared in this scope
    level.h:52: error: template argument 1 is invalid
    level.h:52: error: template argument 2 is invalid
    level.h:53: error: ‘ItemDiv’ was not declared in this scope
    level.h:53: error: template argument 1 is invalid
    level.h:53: error: template argument 2 is invalid
    level.h:54: error: ‘ItemZone’ was not declared in this scope
    level.h:54: error: template argument 1 is invalid
    level.h:54: error: template argument 2 is invalid
    level.h: In member function ‘void level:urgevItem(T&)’:
    level.h:27: error: expected `;' before ‘it’
    level.h:27: error: ‘it’ was not declared in this scope
    cat.cpp: In member function ‘void Cat::handle_events()’:
    cat.cpp:108: warning: format ‘%ld’ expects type ‘long int’, but argument 3 has type ‘int’
    cat.cpp:109: warning: format ‘%ld’ expects type ‘long int’, but argument 3 has type ‘int’
    cat.cpp: In member function ‘void Cat::depl()’:
    cat.cpp:180: warning: format ‘%ld’ expects type ‘long int’, but argument 3 has type ‘int’
    cat.cpp:180: warning: format ‘%ld’ expects type ‘long int’, but argument 4 has type ‘int’
    cat.cpp:234: warning: format ‘%ld’ expects type ‘long int’, but argument 3 has type ‘int’
    cat.cpp:234: warning: format ‘%ld’ expects type ‘long int’, but argument 4 has type ‘int’
    cat.cpp:234: warning: format ‘%ld’ expects type ‘long int’, but argument 5 has type ‘int’
    cat.cpp:234: warning: format ‘%ld’ expects type ‘long int’, but argument 6 has type ‘int’
    cat.cpp:235: warning: format ‘%ld’ expects type ‘long int’, but argument 3 has type ‘int’
    cat.cpp:235: warning: format ‘%ld’ expects type ‘long int’, but argument 4 has type ‘int’
    cat.cpp:235: warning: format ‘%ld’ expects type ‘long int’, but argument 5 has type ‘int’
    cat.cpp:235: warning: format ‘%ld’ expects type ‘long int’, but argument 6 has type ‘int’
    cat.cpp:236: warning: format ‘%ld’ expects type ‘long int’, but argument 3 has type ‘int’
    cat.cpp:236: warning: format ‘%ld’ expects type ‘long int’, but argument 4 has type ‘int’
    cat.cpp:236: warning: format ‘%ld’ expects type ‘long int’, but argument 5 has type ‘int’
    cat.cpp:236: warning: format ‘%ld’ expects type ‘long int’, but argument 6 has type ‘int’
    cat.cpp: In member function ‘void Cat::gestsaut()’:
    cat.cpp:348: warning: converting to ‘Sint16’ from ‘double’
    cat.cpp: At global scope:
    cat.cpp:616: warning: unused parameter ‘delta’
    make: *** [cat.o] Error 1
    Voici le makefile :
    EXE = main
    OBJ = cat.o filelevel.o general.o init.o level.o main.o toolbox.o


    LIBS = `sdl-config --libs` -lSDL_ttf -lSDL_image
    OPT = -O3 `sdl-config --cflags` -Wall -Wextra

    $(EXE): $(OBJ)
    g++ -o $(EXE) $(OBJ) $(OPT) $(LIBS)

    $(OBJ):%.o: %.cpp %.h
    g++ -c $< $(OPT)

    clean:
    rm $(OBJ) $(EXE)
    Jc

  7. #27
    Membre actif
    Inscrit en
    Septembre 2003
    Messages
    391
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 391
    Points : 207
    Points
    207
    Par défaut
    Citation Envoyé par fearyourself
    Je n'ai pas vu le fichier items1.h dans ton zip...
    si en fait il s'appelle Items1.h (avec une majuscule). le zip est normalement corrigé là.

  8. #28
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    J'ai maintenant ceci comme erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    level.h: In member function ‘void level::PurgevItem(T&)’:
    level.h:27: error: expected `;' before ‘it’
    level.h:27: error: ‘it’ was not declared in this scope
    On dirait qu'il n'aime pas ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        template <typename T>
     
            void PurgevItem(T& Container) {  for (T::const_iterator it = Container.begin(); it != Container.end(); ++it)  delete *it;   Container.clear(); }
    Jc

  9. #29
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Et avec ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typename T::const_iterator it

  10. #30
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    En effet, il fallait faire cela,

    J'ai modifier quelques petits trucs pour que cela compile chez moi, ca commence à etre bien sympa.

    Jc
    Fichiers attachés Fichiers attachés

  11. #31
    Membre actif
    Inscrit en
    Septembre 2003
    Messages
    391
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 391
    Points : 207
    Points
    207
    Par défaut
    Citation Envoyé par fearyourself
    En effet, il fallait faire cela,

    J'ai modifier quelques petits trucs pour que cela compile chez moi, ca commence à etre bien sympa.

    Jc
    Merci j'ai récupéré et comparé.
    Mais j'ai un serieux problème :

    voici ta version :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    /*---- dans level.h ----*/
    	template <typename T> 
    	void PurgevItem(T& Container);
     
    /*----dans level.cpp ----*/
    template <typename T>
    void level::PurgevItem(T& Container)
        {  
        typename T::const_iterator it;
        for (it = Container.begin(); it != Container.end(); ++it)  delete *it;   Container.clear(); 
        }
    Compile chez toi mais pas chez moi...
    level.cpp(47) : error C2893: Failed to specialize function template 'void __thiscall level:urgevItem(T &)'
    With the following template arguments:
    'class std::vector<class ItemBloc *,class std::allocator<class ItemBloc *> >'
    il fait cette erreur sur la ligne "PurgevItem(vItemBloc);".

    alors que ma version :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    /*---- dans level.h ----*/
    	template <typename T> 
    	void PurgevItem(T& Container)
     {  for (T::const_iterator it = Container.begin(); it != Container.end(); ++it)  delete *it;   Container.clear(); }
     
    /*----dans level.cpp ----*/
    	template <typename T> 
    	void PurgevItem(T& Container)
     {  for (T::const_iterator it = Container.begin(); it != Container.end(); ++it)  delete *it;   Container.clear(); }
    ne compile pas chez toi... mais marche chez moi.
    je suis coincé ?!
    comment faire ?
    surtout que moi j'y comprends rien a ces template, j'ai eut l'info sur le forum C++, j'ai honte

  12. #32
    Membre actif
    Inscrit en
    Septembre 2003
    Messages
    391
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 391
    Points : 207
    Points
    207
    Par défaut
    bon, alors j'ai testé à la bourin differentes solution.
    L'adjonction de "typename T::const_iterator it;" ne fait pas planté ma compile, mais c'est le fait que dans le .h ont ne mette que le prototypage, ca il n'aime pas mon compilo...
    et du coups, je me suis dis que j'allais en faire un fonction inline (definition dans le .h)
    voilà comme ca tout le monde est content, qu'en penses-tu ?

    dans level.h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    template <typename T> 
    void PurgevItem(T& Container) 
    {   typename T::const_iterator it; 
        for (it = Container.begin(); it != Container.end(); ++it)  delete *it;
        Container.clear(); 
    }
    et rien dans level.cpp.

  13. #33
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920

  14. #34
    Membre actif
    Inscrit en
    Septembre 2003
    Messages
    391
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 391
    Points : 207
    Points
    207
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Autrement dit, tout son code doit figurer dans le .h.
    ha ben vu comme ca... en effet.

    PS : je précise que quand j'ai etudié le C++ il y a 8~10 ans déjà j'avais pas super bien accroché aux template, trop complexe pour moi
    Demain apres-midi je pars en vacances, vous n'aurez plus de mise a jour, sauf si j'arrive a finir un truc d'ici là. j'amene un vieux portable pour essayer de continuer mais plus d'internet et de forum pour mes question, ca va être dur...
    en tout cas, merci pour vos conseils.

  15. #35
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Voici une version qui tourne chez moi, prend le temps de nettoyer un peu ton code pendant que t'es en vacances et d'ajouter des commentaires

    Jc

  16. #36
    Membre actif
    Inscrit en
    Septembre 2003
    Messages
    391
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 391
    Points : 207
    Points
    207
    Par défaut
    Citation Envoyé par fearyourself
    Voici une version qui tourne chez moi, prend le temps de nettoyer un peu ton code pendant que t'es en vacances et d'ajouter des commentaires

    Jc
    Merci je viens de recup ta dern version là. j'avais déjà celle d'hier.
    je met a jour ma version (sur la base de ta version d'hier, jai pas le temps aujourdhui je pars dans qq heures là) j'en ai profité pour ajouter une nouvelle classe. je vous laisse decouvrir ca en lancant le jeu bon, c'est une maquette, au final je ne gererais pas celà tout a fait comme cela.
    sinon, pendant mes vacances en plus du nettoyage+commentaire j'ai surtout comme objectif de faire un editeur de level, c'est balez ca aussi !
    a+

Discussions similaires

  1. Mettre en place des droits sur une vue différents de ceux de la table-source ?
    Par Antoun dans le forum Administration et Installation
    Réponses: 14
    Dernier message: 15/02/2010, 14h13
  2. Réponses: 1
    Dernier message: 14/05/2007, 11h24
  3. Je Recherche des sources Turbo pascal pour piloter en TCP/IP
    Par mennix dans le forum Turbo Pascal
    Réponses: 18
    Dernier message: 23/08/2004, 00h31
  4. Travailler sur des sources distantes avec Eclipse
    Par El Saigneur dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 12/07/2004, 09h40
  5. Cherche un site contenant des sources valables
    Par Kartofel dans le forum Debian
    Réponses: 7
    Dernier message: 14/01/2004, 14h05

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