CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

C# XNA Probleme variable actualise pas

Nawako
Nawako
Niveau 8
18 septembre 2011 à 13:10:57

Salut,

J'ai un petit probleme en c# sous XNA..
Voici le code :

Classe BattleHelper : http://pastebin.com/dSkc78cY
Classe Game1 : http://pastebin.com/PbdSVWVW

En fait mon probleme est que dans la classe BattleHelper, jai une variable choice qui est initialisee a 1, et quand l utilisateur utilise la touche BAS ou HAUT la valeur s incremente ou decremente.

Cette valeur va donc dire quelle couleur afficher le texte, mais quand je fait BAS ou HAUT ben la couleur ne change pas et je sais pas pourquoi :s

Merci de votre aide!

nikko45
nikko45
Niveau 9
18 septembre 2011 à 13:34:17

Hello,

Tu te compliques la vie avec tes incrémentations et décrémentations de folie la...
Dejà ta variable Choice passe la en boolean qui est true ou false suivant la touche appuyée puis dans ton DrawBasicChoice tu fais :

public void DrawBasicChoice(SpriteBatch spriteBatch, SpriteFont font)
{
if (choice == true)
spriteBatch.DrawString(font, "Attack", new Vector2(100, 500), choiceColor);
spriteBatch.DrawString(font, "Defend", new Vector2(100, 540), defaultColor);
else
spriteBatch.DrawString(font, "Attack", new Vector2(100, 500), defaultColor);
spriteBatch.DrawString(font, "Defend", new Vector2(100, 540), choiceColor);
}

Déjà un boolean et un seul if ca va aider....

a++
Nico

pylon
pylon
Niveau 4
18 septembre 2011 à 18:46:31

Yo ! Je t'ai déjà répondu sur le forum programmation mais bon , je vais c/c ma réponse ici aussi. J'ai réussi a faire fonctionner ton code en changeant la façon dont tu récupère les inputs. J'ai remplacé

if (input.JustPressed(Keys.Down))
this.choice++;
if (input.JustPressed(Keys.Up))
this.choice--;

par

KeyboardState keyState = Keyboard.GetState();

if (keyState.IsKeyDown(Keys.Down))
this.choice++;

if (keyState.IsKeyDown(Keys.Up))
this.choice--;

Nawako
Nawako
Niveau 8
19 septembre 2011 à 10:38:52

Ouais mais en fait la classe Input gere les KeyboardState, donc je vois pas pourquoi ca marche pas :/ je vais essayer. Merci

Nawako
Nawako
Niveau 8
19 septembre 2011 à 10:40:10

Ah et pour repondre a Nikko, avec un bool ca arrange pas mon probleme parce qu en fait ce sera un genre de menu avec plus de 2 choix, et je veux pouvoir choisir en utilisant haut et bas puis entree pour confirmer..

webpsi
webpsi
Niveau 9
19 septembre 2011 à 14:05:57

"if (this.choice > 2)
this.choice = 1;
if (this.choice < 1)
this.choice = 2;"

T'as peut être simplifier pour les tests, mais ne laisse pas des constantes, ça évitera des bugs (de toute façon c'est une erreur de sémantique).

"if (choice == 1)
spriteBatch.DrawString(font, "Attack", new Vector2(100, 500), choiceColor);
else
spriteBatch.DrawString(font, "Attack", new Vector2(100, 500), defaultColor);
if (choice == 2)
spriteBatch.DrawString(font, "Defend", new Vector2(100, 540), choiceColor);
else
spriteBatch.DrawString(font, "Defend", new Vector2(100, 540), defaultColor);"

Mémorise les élements du menu dans une List (avec une structure : nom sprite, position), et dans Draw tu fait une boucle for avec un si à l'intérieur pour colorer le bon élément :

For(int i=0; i<lesItems.length ; i++) //c'est peut être size à la place de length
if(choice==i)
DrawString( ... ,choiceColor)
else
DrawString( ... ,defaultColor)

Nawako
Nawako
Niveau 8
19 septembre 2011 à 14:15:54

Ah merci beaucoup webpsi, bonne idee je trouve.. Je vais changer mon code de ce pas :)

webpsi
webpsi
Niveau 9
19 septembre 2011 à 15:41:29

Si tu compte jeu utiliser beaucoup de menu dans ton jeu, je te conseil de faire une classe Menu, ça ira plus vite pour faire les autres.

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment