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

XNA/Monogame Discussion :

Génération de sprite dynamic en XNA C#


Sujet :

XNA/Monogame

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 12
    Points : 10
    Points
    10
    Par défaut Génération de sprite dynamic en XNA C#
    Bonjour à tous,
    voici ce que j'utilise :
    - une résolution 800*600
    - des sprites ( couleurs différentes ) de 40*40 ( 6 sprites en tout )
    mon but est le suivant :
    Afficher un sprite tous les 40 pixels ( une fois arrivé a 20 on saute une ligne )
    800/40 = 20.
    L'algo n'est pas vraiment un problème par contre, je n'arrive pas à appréhender le fait que je dois jongler entre la méthode LoadContent et la méthode Draw().
    Afficher un sprite et le faire bouger n'est pas un problème.

    J'aimerai avoir votre avis sur la question, comme vous envisagez ça.

    J'utilise cette fonction pour récup les noms des fichiers.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    private List<string> SpriteList()
            {
                string[] filePaths = Directory.GetFiles(@"gfx/", "*.png");
                List<string> listFichier = new List<string>();
                for (int n = 0; n <= filePaths.Length - 1; n++)
                {
                    listFichier.Add(Path.GetFileNameWithoutExtension(filePaths[n]));
                }
    return listFichier;
            }
    Voilà ma fonction LoadContent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     protected override void LoadContent()
            {
                // Create a new SpriteBatch, which can be used to draw textures.
                spriteBatch = new SpriteBatch(GraphicsDevice);  
                // TODO: use this.Content to load your game content here
                foreach (string monSprite in listesprite)
                {
                    sprite = Content.Load<Texture2D>("gfx\\" + monSprite);
                }
     
            }
    Voila ma fonction Draw
    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
     
    protected override void Draw(GameTime gameTime)
            {
                GraphicsDevice.Clear(Color.CornflowerBlue);
     
                // TODO: Add your drawing code here
                spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend);
                foreach ( string monSprite in listesprite )
                {
                    spriteBatch.Draw(sprite, rec, Color.White);
             // l'idée serai d'incrementer le rec.X, un truc du style rec.X = rec.X +40;
     
                }
                spriteBatch.End();
                base.Draw(gameTime);
            }
    Encore une fois l'algo n'est pas en cause, c'est la structure que je n'arrive pas à visualiser ( je suis un newbie en xna ).

    Si qq'un pourrait me tendre la main ça serait sympa !

    Merci pour vos réponses futures.

  2. #2
    Membre expert

    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Février 2006
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 1 031
    Points : 3 092
    Points
    3 092
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
          foreach ( string monSprite in listesprite )
                {
                    spriteBatch.Draw(sprite, rec, Color.White);
                   }
    Je suppose que ça ne compile pas....

    Je comprends ce que tu veux faire, mais absolument pas où tu bloques ; je ne peux donc pas vraiment t'aider.
    Suivez le développement de Chibis Bomba
    twitter : https://twitter.com/MoD_DiB
    DevBlog : http://moddib.blogspot.fr/

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    Tout d'abord merci pour ta réponse.
    Ca compile mais le problème est que le même sprite est utilisé, donc il s'affiche en rapide tous les 40 pixels! et disparait (logique pas de condition d'arret ).

    Le problème qui me bloque est la construction dynamique d'un sprite (texture, coordonée) dans un for ( ou foreach ) dans la méthode draw.

    ça serait déja un bon début pour moi. Si je ne suis pas très clair, fais le moi savoir j'essaierai de détailler plus.

  4. #4
    Membre expert

    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Février 2006
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 1 031
    Points : 3 092
    Points
    3 092
    Par défaut
    Oh effectivement ça compile mais ça ne fait pas grand chose à part afficher X fois le MEME sprite au même endroit.

    Ce n'est pas un problème de XNA que tu as là mais plutôt de logique.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sprite = Content.Load<Texture2D>("gfx\\" + monSprite);
    Tu es conscient qu'ici au final tu ne charges que la dernière image du dossier dans ta variable sprite ?
    Suivez le développement de Chibis Bomba
    twitter : https://twitter.com/MoD_DiB
    DevBlog : http://moddib.blogspot.fr/

  5. #5
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    Oui effectivement, en fait j'arrive pas à appréhender la structure pour le faire en dynamique.
    style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for(int i ....) {
    sprite + i = Content.Load<Texture2D>("gfx\\" + monSprite);
    }
    Pour charger chaque sprite dans une variable.
    Sans le faire manuellement style :
    sprite_un = Content.Load etc...
    sprite_deux = Content.Load etc...
    Si tu peux m'aiguiller ça serait !

  6. #6
    Membre expert

    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Février 2006
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 1 031
    Points : 3 092
    Points
    3 092
    Par défaut
    Tu ne procèdes pas déjà de manière similaire ici ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    string[] filePaths = Directory.GetFiles(@"gfx/", "*.png");
    List<string> listFichier = new List<string>();
    for (int n = 0; n <= filePaths.Length - 1; n++)
    {
         listFichier.Add(Path.GetFileNameWithoutExtension(filePaths[n]));
    }
    Suivez le développement de Chibis Bomba
    twitter : https://twitter.com/MoD_DiB
    DevBlog : http://moddib.blogspot.fr/

  7. #7
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    Tu as complétement raison, quand j'ai rédigé ma dernière réponse j'y ai pensé.

    Merci de tes réponses.

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

Discussions similaires

  1. [CSS 3] Génération de sprites
    Par alain31tl dans le forum Mise en page CSS
    Réponses: 0
    Dernier message: 28/02/2012, 03h29
  2. Réponses: 3
    Dernier message: 11/04/2011, 19h02
  3. XNA-Rotation 2D de sprite
    Par SkYsO dans le forum XNA/Monogame
    Réponses: 4
    Dernier message: 16/04/2009, 14h49
  4. Réponses: 1
    Dernier message: 26/04/2008, 15h16
  5. [XNA] aide affichage d'un missile lancer par un sprite
    Par kate59 dans le forum XNA/Monogame
    Réponses: 16
    Dernier message: 19/04/2008, 12h19

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