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 :

SDL boucle imbriqué ( sdl_rect )


Sujet :

SDL

  1. #1
    Membre très actif
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2013
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2013
    Messages : 125
    Par défaut SDL boucle imbriqué ( sdl_rect )
    Salut tout le monde ,

    voila je fait le tp du jeu sobokan je je voudrai creer mon mur grace a une boucle mon ami ma conseiller une boucle imbriqué

    car je dois remplir le mur sur la position X ( abscisses ) et y ( Ordonnées ) , j'ai fait le tp du dégrader de couleur sans problème mais quand je doit mettre en parametre deux positions je suis perdu .

    je vais me tirer une balle !

    regardez mon code svp j'ai parfaitement compris le principe mais il m'affiche rien du tout dans ma fenetre est ce que c'est mon blit_surface qui est mal écrit? car j'ai compris que

    i va de 0 a 20 puis une fois terminer j fait un tour vaut 1 puis ca continue ainsi de suite jusqu'a ce que j vaut 20 . Mais j'ai une fenetre blanche

    ps : la taille de mon sprite mur = 34 .
    Code : 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
    for (i = 0 ; i < 20 ; i++)
    {
         mur[i] = IMG_Load("mur.jpg");
    }
    for (j = 0 ; j < 20 ; j++)
    {
        for (i = 0 ; i < 20 ; i++)
        {
            position_mur[i].x =     i * 34 ;
            position_mur[i].y =     j*34 ;
        }
     
    }
     
     
        for (i = 0 ; i < 20 ; i++)
        {
    SDL_BlitSurface(mur[i],NULL,ecran,&position_mur[i]);
        }


    Voici mon bout de code merci de votre aide

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


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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 158
    Billets dans le blog
    152
    Par défaut
    Bonjour,

    Charger vingt fois la même image est inutile (même lorsque l'on veut l'afficher vingt fois).
    Comme je ne vois pas d'erreur ici, je me demande si vous n'auriez pas oublier le SDL_UpdateRect().

    Le calcul des positions est aussi étrange. En effet, vous faites deux boucles for imbriqués (donc 20 * 20 calculs) pour ne stocker que vingt résultats (d'après la taille du tableau et son index).

    Finalement et peut être que c'est le bogue, la structure SDL_Rect des position_mur ne me semble pas complètement remplis (donc des valeurs inconnues peuvent se glisser pour les champs w et h ?)
    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.

  3. #3
    Membre très actif
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2013
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2013
    Messages : 125
    Par défaut
    Déja merci d'avoir pris un peu de votre temps pour m'aider
    je ne connais pas la fonction SDL_UpdateRect(). je suit actuellement un tutoriel C et il ne parle pas de cette fonction .
    Lorsque j'utilise un for pour attribuer les positions x et y tout se passe bien a partir du moment ou y reste a 0 mais dés que j'essaye a la fois de déplacer mon x 20 fois pour remplir mon tableau sur x 0 a x 20 et y 0 a y 20 ca ne fonctionne pas .
    il y a un moyen de remplir mon tableau sans faire plusieurs for NON IMBRIQUE ? ou un autre moyen ? merci

    Apres environ 10h a tout essayer depuis ce matin 11h je viens de trouver la solution voila mon code tu peux me dire ce que tu en pense?
    il me rempli bien le tableau comme demander

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    do {
     for (i = 0 ; i < 20 ; i++)
        {
            position_mur[i].x =     i * 34 ;
            position_mur[i].y =     j ;
    SDL_BlitSurface(mur[i],NULL,ecran,&position_mur[i]);
        } j = j + 34;
    } while(j < 300);
    Nom : Sans titre.jpg
Affichages : 249
Taille : 311,2 Ko

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


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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 158
    Billets dans le blog
    152
    Par défaut
    Il faut bien une double boucle for imbriquées.
    Mais cela sera plus comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    for ( unsigned int y = 0 ; y < 20 ; y++ )
    {
        for ( unsigned int x = 0 ; x < 20 ; x++ )
        {
            SDL_Rect positionMur;
            positionMur.x = x*32; // Si la taille du bloc est de 32
            positionMur.y = y*32;
     
            SDL_BlitSurface(mur,NULL,ecran,&position_mur);
        }
    }
    Pas besoin de tableau pour le sprite de mur, car comme je l'ai dit seul un seul sprite est à charger.
    Par besoin de tableau pour les positions, car nous pouvons les calculer juste avant l'affichage.

    Le mieux, c'est d'avoir la documentation à coté de soit : SDL_Flip et SDL_UpdateRect. Et si vraiment cela ne vas pas, je tiens à vous rappeler que Developpez.com propose aussi des tutoriels sur la SDL : http://jeux.developpez.com/tutoriels/?page=prog2d#sdl
    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.

  5. #5
    Membre très actif
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2013
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2013
    Messages : 125
    Par défaut
    oui merci je comprend mieux grace a ton code , mais ce n'est pas plus sécuriser de déclarer un tableau de mur dans mon ex ? ca peut eviter qu'on vienne ajouter des mur supplémentaires non ?

    je ne comprend pas en fait comment tu as réussi a déclarer des mur sans allouer de tableau ??. Merci

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


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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 158
    Billets dans le blog
    152
    Par défaut
    Plus sécuriser, je ne pense pas. La position des murs dépend de leur position sur leur grille (donc, du nombre de mur et de l'itération dans les boucles for). N'hésitez pas à prendre une feuille de papier et à dessiner des murs avec leurs positions.

    Pas besoin de tableau, tant que je garde une variable SDL_Rect. La SDL demande juste un pointeur sur une variable SDL_Rect et c'est ce que je fait dans mon code. Un pointeur n'est pas nécessairement un tableau
    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.

  7. #7
    Membre très actif
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2013
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2013
    Messages : 125
    Par défaut
    Franchement je suis en train de m'amuser a dessiner avec ton code

    je vais lire les cours sur la sdl sur tu ma linker . je trouve le cours sur la sdl pas mal du tout en plus il y en a plein .
    Tu pense que le C ou le C++ c'est pareil pour faire des jeux ou plus simple en C++ ou java? ( moi le langage objet j'ai du mal a comprendre lol ) , je dois en plus apprendre la CGI ( intégrer du code html dans du C pour afficher des pages Web comme je JEE ) , j'ai commencer a apprendre le C il y a un mois je ne sait pas si la SDL est formateur pour bien apprendre a programmer qu'en pense tu? ( beaucoup d'ingé a qui j'ai demander ne connaisse pas la SDL , je suis en contrat pro chez Capgémini ) .

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


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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 158
    Billets dans le blog
    152
    Par défaut
    La SDL, c'est bien pour les développeurs C, débutant notamment, qui veulent faire des trucs graphiques ou des jeux.
    Si l'orienté objet vous répugne ou que vous n'arrivez pas à vous y mettre, alors restez en C. C'est un coup à prendre, ce n'est pas toujours simple de le prendre

    Après, tout ingénieurs ne s'intéresse pas nécessairement aux applications graphiques ou aux jeux
    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.

  9. #9
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Par défaut
    Si je peux répondre et donner mon avis.

    Citation Envoyé par czar1983 Voir le message
    Tu pense que le C ou le C++ c'est pareil pour faire des jeux ou plus simple en C++ ou java?
    Peu importe le langage , la simplicité varie grandement si on maitrise le langage , si tu maitrise plus le C que le C++ autant faire du C et vice versa.

    Citation Envoyé par czar1983 Voir le message
    j'ai commencer a apprendre le C il y a un mois je ne sait pas si la SDL est formateur pour bien apprendre a programmer qu'en pense tu? ( beaucoup d'ingé a qui j'ai demander ne connaisse pas la SDL , je suis en contrat pro chez Capgémini ) .
    La SDL est pas obligatoirement formateur pour bien programmer , ça a même rien a voir , pour bien programmé , ça dépend de expérience et la connaissance du langage et de sa capacité a faire de algo.
    Après que des ingé connaisses pas la SDL , je vois rien étonnant la SDL est plus très utilisé dans industrie(même plus du tous) et a part dans le jeux vidéo elle a pas beaucoup intérêt.

  10. #10
    Membre très actif
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2013
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2013
    Messages : 125
    Par défaut
    Ah ok je dois faire un projet en Java pour les cours , mais je vais continuer a apprendre le C je trouve ce langage plus " instinctif ", dommage que beaucoup n'utilise plus le C si on peut faire la meme chose . La SDL va me permettre d'avoir un peu de bagage ( mais il y a tellement de téchno que on s'y perd a force ) Merci .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de boucles imbriquées
    Par Gnux dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 09/12/2005, 20h26
  2. boucle imbriquée
    Par zhoom dans le forum C
    Réponses: 4
    Dernier message: 07/11/2005, 13h10
  3. [Débutant]Boucle imbriquée avec des bornes différentes
    Par Hayato dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 29/08/2005, 16h23
  4. Boucles imbriquées
    Par Immobilis dans le forum ASP
    Réponses: 28
    Dernier message: 14/01/2005, 13h17
  5. [XSL]boucle imbriquée avec condition
    Par kor dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 11/01/2005, 14h19

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