hey les canards! petit souçis pour afficher les saucisses....me dit que "le nom saucisses n'existe pas dans le contexte actuel" dans la fenetre liste d'erreurs....
merci pour votre aide...
hey les canards! petit souçis pour afficher les saucisses....me dit que "le nom saucisses n'existe pas dans le contexte actuel" dans la fenetre liste d'erreurs....
merci pour votre aide...
Bon, je veux pas faire le relou avec mes saucisses volantes, mais bon, donc je suis le tuto depuis le debut tout se passe bien....j'arrive à avoir le lapin dans la soucoupe volante nikel par contre au niveau du paragraphe
Chapelet de saucisses j'y arrive plus....
y'a marqué "Ajoutez ces lignes dans la méthode Draw donc déjà la, un peu pommé et donc y'a la ligne :
for (int i = 0; i < 4; i += 1)
spriteBatch.Draw(texture_saucisse, new Vector2(saucisse[i], i * 125), Color.White);
Alors j'ai inséré ça dans ce paragraphe je sais pas si c'est le bon ....
/// <summary>
/// This is called when the game should draw itself.
/// </summary>
/// <param name="gameTime">Provides a snapshot of timing values.</param>
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.Gray);
spriteBatch.Begin();
spriteBatch.Draw(texture_lapin, new Vector2(x, y), Color.White);
spriteBatch.End();
for (int i = 0; i < 4; i += 1)
spriteBatch.Draw(texture_saucisse, new Vector2(saucisse[i], i * 125), Color.White);
voilà voilà et désolé de poser des questions de noob monsieur Conan3D.....
Tu dois ajouter ces lignes entre les appels spriteBatch.Begin() et spriteBatch.End(). Sinon, je ne pense pas que tes instructions "Draw" soient prises en compte.
Une communauté sur Warhammer 40k: www.zeliste40k.fr
Chov, je pense que Conan3D se moque plus du message d'erreur contenant le mot saucisse (ce qui est très drôle il faut l'avouer) que de toi.
Merci pour ton aide Stele mais toujours le même problème......
spriteBatch.Begin();
spriteBatch.Draw(texture_lapin, new Vector2(x, y), Color.White);
for (int i = 0; i < 4; i += 1)
spriteBatch.Draw(texture_saucisse, new Vector2(saucisse[i], i * 125), Color.White);
spriteBatch.End();
c'est le nom saucisse après le "new Vector2" qu'il veut pas en marquant dans la liste d'erreur qu'il n'existe pas dans le contexte actuel...
Et désolé Conan3D, cette histoire de saucisse me tiens trop à coeur et me fais perdre mon sens de l'humour.......
Voilà le code en entier :
public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
Texture2D texture_lapin;
Texture2D texture_saucisse;
float x;
float y;
public Game1()
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
}
/// <summary>
/// Allows the game to perform any initialization it needs to before starting to run.
/// This is where it can query for any required services and load any non-graphic
/// related content. Calling base.Initialize will enumerate through any components
/// and initialize them as well.
/// </summary>
protected override void Initialize()
{
// TODO: Add your initialization logic here
base.Initialize();
}
/// <summary>
/// LoadContent will be called once per game and is the place to load
/// all of your content.
/// </summary>
protected override void LoadContent()
{
spriteBatch = new SpriteBatch(GraphicsDevice);
texture_lapin =
Content.Load<Texture2D>("canardage_lapin");
texture_saucisse = Content.Load<Texture2D>("saucisse");
float[]saucisses=new float[4];
saucisses[0] = 750;
saucisses[1] = 700;
saucisses[2] = 650;
saucisses[3] = 600;
x = 0;
y = 0;
// 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
}
/// <summary>
/// UnloadContent will be called once per game and is the place to unload
/// all content.
/// </summary>
protected override void UnloadContent()
{
// TODO: Unload any non ContentManager content here
}
/// <summary>
/// Allows the game to run logic such as updating the world,
/// checking for collisions, gathering input, and playing audio.
/// </summary>
/// <param name="gameTime">Provides a snapshot of timing values.</param>
protected override void Update(GameTime gameTime)
{
if (Keyboard.GetState().IsKeyDown(Keys.Up)) y = y - 1;
if (Keyboard.GetState().IsKeyDown(Keys.Down)) y = y + 1;
if (Keyboard.GetState().IsKeyDown(Keys.Left)) x = x - 1;
if (Keyboard.GetState().IsKeyDown(Keys.Right)) x = x + 1;
base.Update(gameTime);
}
/// <summary>
/// This is called when the game should draw itself.
/// </summary>
/// <param name="gameTime">Provides a snapshot of timing values.</param>
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.Gray);
spriteBatch.Begin();
spriteBatch.Draw(texture_lapin, new Vector2(x, y), Color.White);
for (int i = 0; i < 4; i += 1)
spriteBatch.Draw(texture_saucisse, new Vector2(saucisse[i], i * 125), Color.White);
spriteBatch.End();
// TODO: Add your drawing code here
base.Draw(gameTime);
En espérant que vous y verrez plus clair, moi suis paumé dans tout ça.......
Argh.
Utilise la balise [ code] qui permet de garder l'indentation stp, là ça pique les yeux.
[edit] il manque 2 accolades fermantes à la fin, ça vient du copier-coller ou ça manque vraiment dans ton code ?
J'ai trouvé ton problème : tu déclares ton tableau saucisse dans la method LoadContent. En gros, lorsque tu auras déroulé la method et que tu en sors pour passer à la suite, la variable est supprimée. Donc la method Draw ne peut pas la voir.
Met la ligne
au niveau des déclarations de variables au début. Par exemple juste après la déclaration de x et yCode:float[]saucisses=new float[4];
(pense à supprimer la ligne de la method LoadContent )Code:GraphicsDeviceManager graphics; SpriteBatch spriteBatch; Texture2D texture_lapin; Texture2D texture_saucisse; float x; float y; float[]saucisses=new float[4];
ça vient du copier-coller...
bon je viens de l'insérer dans les déclarations de variables au début
[ code]
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
Texture2D texture_lapin;
Texture2D texture_saucisse;
float x;
float y;
float[] saucisses = new float[4];
je l'ai supprimé du LoadContent :
[code]
protected override void LoadContent()
{
spriteBatch = new SpriteBatch(GraphicsDevice);
texture_lapin =
Content.Load<Texture2D>("canardage_lapin");
texture_saucisse = Content.Load<Texture2D>("saucisse");
saucisses[0] = 750;
saucisses[1] = 700;
saucisses[2] = 650;
saucisses[3] = 600;
Mais toujours le même message d'erreur.....arrrrrggghhhhhhhaarrrghghahrarahhgha
et j'arrive pas à faire les jolies carrés de code...
Dernière modification par Chov ; 06/12/2011 à 12h55.
Pour comprendre un peu à quoi est due ton erreur, vulgarisation rapide de ce qu'est une variable :
- lorsque tu la déclares, par exemple en disant
Tu ne fais que réserver un espace dans la mémoire, espace qui correspond au type de variable (la taille de l'espace en particulier dépend du type). L'adresse de cet espace réservé est identifié par le nom de la variable.Code:float x; Texture2D texture_lapin;
Lorsque tu déclares une variable, elle n'est valable que dans certaines bornes : les accolades qui l'encadrent directement. Hors de ces bornes, la variables n'existe pas.
Donc dans ton exemple, la variable float[] saucisse n'est valable qu'au sein de la method LoadContent, et n'existe pas en dehors des accolades qui la bornent.
---------- Post added at 14h35 ---------- Previous post was at 12h44 ----------
__________________________________________________ _________________________
Pour terminer mon petit laïus : la déclaration d'une variable réserve donc un espace, mais vide. Ce qui fait qu'en essayant de lire la valeur d'une variable non initialisée, la valeur vaut n'importe quoi. Il faut donc lui donner une valeur avant d'y accéder ou de faire des opérations avec.
Par exemple le tableau :
Ici, après la déclaration, on aura en quelque sorte en mémoire un tableau de 4 cases vides, chaque case ayant la taille d'un nombre à virgule flottante.Code:float[] saucisses = new float[4];
Dans LoadObject, avant de faire quelque traitement que ce soit sur le tableau, chacune des cases est remplie avec une valeur.
__________________________________________________ _________________________
Balance le message d'erreur exact si possible ?
Essaie alors de mettre juste la déclaration
en haut,Code:float[] saucisses;
et de mettre une ligne
Ou sinon, faut trouver quelqu'un qui connaît le C#...Code:saucisses = new float[4]; saucisses[0] = 750; saucisses[1] = 700; saucisses[2] = 650; saucisses[3] = 600;
Pour faire un "carré de code, il faut entourer ton code des balises [code] avant et [/code] après . Sinon, ça ne fonctionne pas. A noter : pas d'espace dans la balise (pas de [ code], je l'avais écrit comme ça pour que ce soit interprété comme du texte et pas comme une balise invisible). Tu peux aussi utiliser le bouton avec un dièse '#' dans l'interface d'édition avancée de message du forum : tu sélectionnes le bout de code, puis tu cliques sur le bouton.
ben merci Lavabo pour toutes tes explications! je m'y replongerais ce soir à froid....
Ben si, comme tu le dis si bien "il va par contre y avoir plusieurs saucisses". Après float, on met "saucisses" et dans la ligne spriteBatch.Draw on doit mettre "saucisses" et c'est là que le bât blesse.
---------- Post added at 12h10 ---------- Previous post was at 12h05 ----------
Perso j'avais le même problème de saucisse mais j'ai fait comme Lavabo a dit et ça a fonctionné.
J'avais fait la même erreur que toi, j'avais mis la ligne float… dans LoadContent, au lieu de la mettre au début. C'était pas hyper clair dans l'article faut dire ^^
---------- Post added at 12h14 ---------- Previous post was at 12h10 ----------
Apparemment il te manquerait le x = 0 et y = 0 ensuite.
Mon LoadContent ressemble à ça:
Code:{ spriteBatch = new SpriteBatch(GraphicsDevice); texture_lapin = Content.Load<Texture2D>("canardage_lapin"); texture_saucisse = Content.Load<Texture2D>("saucisse"); saucisses[0] = 750; saucisses[1] = 700; saucisses[2] = 650; saucisses[3] = 600; x = 0; y = 0; }
Pas encore eu le temps de remettre les mains dedans, mais ce week end je testerais comme toi fabest....
Bon, j'ai relu tout l'article et j'ai vérifié mon code, il n'y a pas d'erreur a priori.
Si vous mettez bien la ligne
après les autres déclarations (au début de la classe donc, pas dans la méthode LoadContent), vous ne devriez pas avoir de problème.Code:float[] saucisses = new float[4];
Ce n'était pas une erreur (oh grands dieux non), juste un point pas forcément très précis pour des gros noobs comme nous
Comme l'a écrit Came Yon, Chov déclare et initialise un tableau nommé saucisseS et puis appelle un tableau nommé saucisse dans son code.
On passe tous par là.
Pour éviter ce genre de problème il faut pas hésiter à se servir de l'auto complétion :
Ctrl+espace pour afficher les variable pendant la frappe.
Ctrl+shift+espace pour afficher les paramètres possible des fonctions à l’intérieur des parenthésés.
Ou sinon avec un peu d'expérience, dès que le compilateur te dit "variable inconnue" ça va tilter "j'ai fait une faute de frappe"
Quand tu débutes ça arrive que tu ne comprennes pas pourquoi le compilateur n'accepte pas ton code, alors tu essayes plein de trucs un peu au hasard, ça marche toujours pas, tu galères, etc. Mais une fois que tu maîtrises un langage, les erreurs du compilateur c'est à 98 % des fautes de frappes ou des petits oublis.
Rust fanboy
Dites vous pourriez vendre "Développez couché" en stand alone numérique sur l'apple store?
Excellente idée, j'ai hâte de voir la suite et surtout ce que les autres Canards en feront.
¯\_(シ)_/¯ ♫♪♪♫♪ .......d(oO)b....... ♪♫♪♪♫ ¯\_(ひ)_/¯
Juste une petite erreur à modifier par rapport à la leçon 5 : le fichier pouet.wav doit être renommé boing.wav
Sinon, la musique de fond est vraiment entêtante. On dirait qu'on est à l'entrée d'une boîte de nuit avec la musique en sourdine et qu'on avance dans un couloir sans fin. Très David Lynch dans l'esprit. C'est de l'art, y'a pas.
Dernière modification par Djinn42 ; 17/01/2012 à 21h22.
¯\_(シ)_/¯ ♫♪♪♫♪ .......d(oO)b....... ♪♫♪♪♫ ¯\_(ひ)_/¯
Arghhhhhhhhhhhhhhh....... Bon au beau milieu de la leçon 5, j'ai fini par abandonner! Snif! c'est vraiment trop difficile... c'est vrai quoi, j'en peu plus ! mal au cervicales, j'ai le pisiforme tout gonflé et j'ai bien du me déclencher un rhume de hanche à force d'essayer de caler le clavier pour éviter qu'il tombe sur mes roubignoles.... Non vraiment... Développez couché c'est pas pour moi...
---------- Post added at 20h37 ---------- Previous post was at 20h33 ----------
c'est pour quand l'implémentation du support d'une Wiimote pour diriger notre lapin au gyroscope ? ... http://www.brianpeek.com/page/wiimotelib.aspx
Dernière modification par Vogel ; 19/01/2012 à 16h55.
[transfert de la réplique sur un nouveau Topic]
Dernière modification par Elriks ; 29/01/2012 à 19h13.