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 :

XNA et VC# express : mes débuts difficiles


Sujet :

XNA/Monogame

  1. #1
    Membre habitué

    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 90
    Points : 154
    Points
    154
    Par défaut XNA et VC# express : mes débuts difficiles
    je tape ce code :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    using System;
    using System.Collections.Generic;
    using Microsoft.Xna.Framework;
    using Microsoft.Xna.Framework.Audio;
    using Microsoft.Xna.Framework.Components;
    using Microsoft.Xna.Framework.Graphics;
    using Microsoft.Xna.Framework.Input;
    using Microsoft.Xna.Framework.Storage;
     
    namespace Essai
    {
        /// <summary>
        /// This is the main type for your game
        /// </summary>
        partial class Game1 : Microsoft.Xna.Framework.Game
        {
            public Game1()
            {
                InitializeComponent();
            }
     
            //Ceci contient la texture de la balle
            Texture2D m_textureBalle;
            //Position de la balle
            int m_balleX = 0;
            int m_balleY = 0;
            //La vitesse de la balle
            int m_vx = 3;
            int m_vy = 3;
            //L'objet qui dessinera la balle
            SpriteBatch m_spriteBatch;
     
     
            protected override void OnStarting()
            {
                base.OnStarting();
                graphics.GraphicsDevice.DeviceReset += new EventHandler(GraphicsDevice_DeviceReset);
                LoadResources();
     
            }
     
            void GraphicsDevice_DeviceReset(object sender, EventArgs e)
            {
                LoadResources();
            }
     
            void LoadResources()
            {
                m_textureBalle = Texture2D.FromFile(graphics.GraphicsDevice, "balle.dds");
                m_spriteBatch = new SpriteBatch(graphics.GraphicsDevice);
            }
     
     
            protected override void Update()
            {
                // The time since Update was called last
                float elapsed = (float)ElapsedTime.TotalSeconds;
     
                //Bouger la balle
                BougeBalle();
     
                // Let the GameComponents update
                UpdateComponents();
            }
     
            void BougeBalle()
            {
                //Bouger la balle par rapport a la vitesse
                m_balleX += m_vx;
                m_balleY += m_vy;
     
                int MaxX = Window.ClientWidth - m_textureBalle.Width;
                int MinX = 0;
                int MaxY = Window.ClientHeight - m_textureBalle.Height;
                int MinY = 0;
     
                //check for bounce
                if (m_balleX > MaxX)
                {
                    m_vx *= -1;
                    m_balleX = MaxX;
                }
                else if (m_balleX < MinX)
                {
                    m_vx *= -1;
                    m_balleX = MinX;
                }
     
                if (m_balleY > MaxY)
                {
                    m_vy *= -1;
                    m_balleY = MaxY;
                }
                else if (m_balleY < MinY)
                {
                    m_vy *= -1;
                    m_balleY = MinY;
                }
            }
     
            protected override void Draw()
            {
                if (!graphics.EnsureDevice())
                {
                    return;
                }
     
                graphics.GraphicsDevice.Clear(Color.CornflowerBlue);
                graphics.GraphicsDevice.BeginScene();
     
                //Dessiner la balle
                m_spriteBatch.Begin(SpriteBlendMode.AlphaBlend);
                m_spriteBatch.Draw(m_textureBalle, 
                        new Rectangle(m_balleX, m_balleY, m_textureBalle.Width, m_textureBalle.Height), 
                        Color.Red);
                m_spriteBatch.End();
     
                // Let the GameComponents draw
                DrawComponents();
     
                graphics.GraphicsDevice.EndScene();
                graphics.GraphicsDevice.Present();
            }
        }
    }
    pour afficher une image (le tuto de la balle trouvé ici mais je remplace la balle par une autre image sauvegardé aussi sous balle.dds)
    et voilà le résultat ,débutant je souhaiterais avoir une explication et savoir corriger mon code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Erreur	1	'Game1.OnStarting()'*: aucune méthode appropriée n'a été trouvée pour la substitution	C:\Users\thomas\Documents\Visual Studio 2008\Projects\WindowsGame1\WindowsGame1\Game1.cs	38	29	WindowsGame1
    Erreur	2	'Game1.Update()'*: aucune méthode appropriée n'a été trouvée pour la substitution	C:\Users\thomas\Documents\Visual Studio 2008\Projects\WindowsGame1\WindowsGame1\Game1.cs	58	29	WindowsGame1
    Erreur	3	'Game1.Draw()'*: aucune méthode appropriée n'a été trouvée pour la substitution	C:\Users\thomas\Documents\Visual Studio 2008\Projects\WindowsGame1\WindowsGame1\Game1.cs	105	29	WindowsGame1
    Merci bien et sinon quelqu'un aurait -t-il une methode pour afficher un objet . x sous VB.net (j'ai réussi à configurer XNA et faire une appli affichant un ecran bleu ainsi que le framerate dans la fenetre)

    en tout cas ce site est superbe j'y apprend vachement alors bonne continuation à tous.

  2. #2
    Membre actif Avatar de Gulix
    Inscrit en
    Septembre 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2005
    Messages : 268
    Points : 273
    Points
    273
    Par défaut
    1. Pense à présenter ton code à l'aide de la balise Code, ça facilite grandement la lecture

    2. Tu déclares trois fonctions (OnStarting(), Update(), Draw() ) avec le mot-clé override. Cela signifie que tu les redéfinis par rapport à la classe parente de ta classe, ici Microsoft.Xna.Framework.Game
    Or, si tu regardes cette classe, ces méthodes n'existent pas. On a bien une méthode Update et une méthode Draw, mais elles nécessitent des paramètres que tu n'utilises pas. Ton erreur vient de là.

    3. En une simple requête google, j'ai trouvé ce lien pour afficher un objet tournant sur lui même en VB.Net
    Je pense néanmoins qu'il est plus intéressant de développer en C# avec XNA.
    "L'univers... on croit qu'il est infini mais quand on arrive au bout un gorille géant vous balance des tonneaux."
    Phillip J. Fry

    http://www.gulix.fr/

    BlindShark, Logiciel de Blind Test - Pull N' Bounce - Jeu XNA

  3. #3
    Membre habitué

    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 90
    Points : 154
    Points
    154
    Par défaut
    Merci de la réponse ,comment utiliser les dits parametres? J'ai juste pris le code trouvé dans le tuto et changé l'image mais même en prenant le projet tout fait sur le net ça me fait la même chose . Si il était possible d'avoir une version corrigée du code pour que je comprenne au mieux mon erreur.
    Le site d'alan shipps j'ai vu ça j'ai réussi à faire certains trucs mais le truc du Dé en 3D j'ai encore du mal à saisir.

  4. #4
    Membre actif Avatar de Gulix
    Inscrit en
    Septembre 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2005
    Messages : 268
    Points : 273
    Points
    273
    Par défaut
    Pour commencer, quand tu fais cette fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    protected override void OnStarting()
    {
       base.OnStarting();
       graphics.GraphicsDevice.DeviceReset += new    EventHandler(GraphicsDevice_DeviceReset);
       LoadResources();
    }
    C'est clair que ça ne va pas marcher, car la classe Game de l'espace de nom Microsoft.Xna.Framework ne possède pas de méthode OnStarting(). Or, tu l'appelles par base.OnStarting(). As-tu un lien du projet duquel tu es parti ? Peut-être la classe a-t-elle été redéfinie ?

    Pour les deux autres fonctions, tu trouveras les paramètres dans la MSDN. Il s'agit d'un paramètre de type GameTime. Il te permett de faire évoluer ton affichage selon le temps. Pour afficher un simple sprite, tu ne les utiliseras pas, mais ils sont quand même nécessaire au code.

    [EDIT]
    En regardant le tutorial de FearYourself, j'ai trouvé d'où vient ton erreur (je pense). Le code fourni dans ce tutorial n'est plus compatible avec les nouvelles versions de XNA (2.0 ou Beta 3.0). Si tu utilises une de ces versions (ce que tu devrais ), ce code ne marchera pas.

    Voilà quelques pistes qui pourront t'orienter vers un code fonctionnant avec les nouvelles versions :
    MSDN - Your First Game
    http://www.xnadevelopment.com/tutorials.shtml

    J'ai développé un jeu en 2D avec XNA 2.0. Si tu as des questions, n'hésite pas.
    "L'univers... on croit qu'il est infini mais quand on arrive au bout un gorille géant vous balance des tonneaux."
    Phillip J. Fry

    http://www.gulix.fr/

    BlindShark, Logiciel de Blind Test - Pull N' Bounce - Jeu XNA

  5. #5
    Membre habitué

    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 90
    Points : 154
    Points
    154
    Par défaut
    En effet c'est bien ce tuto que j'avais suivi ,voilà le probleme ,j'aurais jamais pensé à ça , je suis en effet sous XNA 3.0

  6. #6
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 33
    Points : 26
    Points
    26
    Par défaut
    Je suis d'accord avec Gulix sur le fait qu'utiliser C# avec XNA est beaucoup plus intéressant...
    Surtout que de mémoire, avec VB .Net tu n'as pas accès à toutes les fonctions de XNA, genre le Content Pipeline pourtant si utile :s

Discussions similaires

  1. [DB2 Express-C] Démarrage difficile
    Par mccricri dans le forum DB2
    Réponses: 7
    Dernier message: 15/04/2010, 11h00
  2. Début difficile en Visual C++ 2005 .NET
    Par kinouseb dans le forum C++/CLI
    Réponses: 6
    Dernier message: 22/11/2006, 09h20
  3. [Expression régulière] Début de chaine
    Par navis84 dans le forum Oracle
    Réponses: 8
    Dernier message: 10/10/2006, 13h52
  4. [RCP]Début difficile - Ou est ma vue ?
    Par Procyon dans le forum Eclipse Platform
    Réponses: 15
    Dernier message: 09/10/2006, 09h16
  5. mes débuts
    Par steph35 dans le forum Mon site
    Réponses: 6
    Dernier message: 09/06/2006, 20h33

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