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 :

Texture 2D et variables


Sujet :

XNA/Monogame

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Texture 2D et variables
    Bonjour,

    Je découvre le XNA et après la programmation d'un Pong. Je me suis lancé sur un Tetris.
    Mais voilà j'ai un petit soucis.
    Pour déterminer quels bloc va être mis en jeu, je fais un tirage aléatoire.

    Je voulais savoir si il était possible d'associer la Texture2D à une variable. J'ai pas l'impression d'être clair alors je met un bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Random rand = new Random();
                    int n = rand.Next(6);
                    switch(n)
                    {
                        case(0): active = block_1;break;
                        case(1): active = block_2;break;
                        case(2): active = block_3;break;
                        case(3): active = block_4;break;
                        case(4): active = block_5;break;
                        case(5): active = block_6;break;
                    }
    block_1 à 6 sont mes texture2D. Et active est la variable qui prend en compte le bloc tiré au sort.
    J'ai 2 questions :
    -Est ce que c'est possible ?
    -Si oui comment ? Si non, vous avez un début de piste où je pourrais chercher ?


    Merci !

  2. #2
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2002
    Messages : 255
    Points : 445
    Points
    445
    Par défaut
    Salut Elharion,

    Pourquoi ça ne fonctionnerait pas?
    Si active est une Texture2D et les block aussi.
    Mais je pense qu'avec un tableau ça va plus vite:

    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
     
    Texture2D active;
    Texture2D[] TabTextures = new Texture2D [6] ;
    Random rand = new Random();
    //LoadContent()
                TabTextures[0] = Content.Load<Texture2D>("block1");
                TabTextures[1] = Content.Load<Texture2D>("block2");
                TabTextures[2] = Content.Load<Texture2D>("block3");
                TabTextures[3] = Content.Load<Texture2D>("block4");
                TabTextures[4] = Content.Load<Texture2D>("block5");
                TabTextures[5] = Content.Load<Texture2D>("block6"); 
     
    //ailleurs 
    active = TabTextures[rand.Next(6)];
    //draw
    spriteBatch.Draw(active,...
    Salutations.

  3. #3
    Membre actif Avatar de Chen norris
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 216
    Points : 248
    Points
    248
    Par défaut
    Bonjour,

    Pour aller encore plus loin, prendre une texture de manière aléatoire risque de ne pas être suffisant (je pense notamment à la gestion des collisions où tu devras connaître précisément la forme du prochain bloc à venir). Je conseillerais donc plutôt d'avoir ce schéma de classes :
    • bloc = classe mère non abstraite, qui contient toutes les propriétés communes aux blocs (une texture, une forme, …)
    • blocType1 qui dérive bloc, blocType2 qui dérive de bloc, …

    Lors de la génération aléatoire, tu as une variable de type bloc qui va recevoir tantôt un blocType1, un blocType2, … suivant le tirage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Bloc prochainBloc;
    switch(n) {
        case (0) : prochainBloc = new BlocType1(); break;
        case (1) : prochainBloc = new BlocType2(); break;
        case (2) : prochainBloc = new BlocType3(); break;
        ...
    }
    Ensuite, tu pourras appeler une méthode du style prochainBloc.GetTexture() par exemple et qui te retournera le bon Texture2D.
    Chen norris
    C/C++, C#, Java, PHP & SQL coder
    Web developer

Discussions similaires

  1. Texture à transparence variable
    Par Higestromm dans le forum OpenGL
    Réponses: 15
    Dernier message: 08/08/2008, 17h28
  2. variables locales ou globales ???
    Par elvivo dans le forum C
    Réponses: 13
    Dernier message: 03/07/2002, 08h22
  3. Procédure avec un nombre variable d'arguments
    Par charly dans le forum Langage
    Réponses: 15
    Dernier message: 21/06/2002, 11h08
  4. Réponses: 4
    Dernier message: 05/06/2002, 14h35
  5. les variables globales static
    Par gRRosminet dans le forum C
    Réponses: 8
    Dernier message: 27/04/2002, 08h34

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