Xna

Madaraa Messages postés 22 Date d'inscription mardi 11 août 2009 Statut Membre Dernière intervention 7 février 2013 - 21 août 2009 à 17:55
MasterShadows Messages postés 268 Date d'inscription lundi 1 mars 2004 Statut Membre Dernière intervention 19 avril 2012 - 24 août 2009 à 22:51
Bien le bonjour, je commence à bien m'intéresser à Xna pour mon TPI et comme il faut bien commencer par quelque part je voudrais vous posez quelques question.

1. connaissez vous un tutoriel complet et bien expliquer pour bien commencer ?

2. Savez vous comment insérer un bouton comme par exemple un bouton Play ?

merci d'avoir lu ce message et j'espère avoir des réponse
A voir également:

11 réponses

MasterShadows Messages postés 268 Date d'inscription lundi 1 mars 2004 Statut Membre Dernière intervention 19 avril 2012 12
21 août 2009 à 18:04
Salut,
alors des tutos sur le XNA, tu peux en trouver des tas à commencer par ces sites (en fouillant un peu quand même) :

XNA TUTOS 1
XNA TUTOS 2

Pour le bouton Play, tu verras que dans XNA, tout ce qui est graphique se passe par des textures, des modèles 3D, etc...

Donc voici une piste pour le bouton (et attention c'est faisable en lisant les tutos du dessus) :

- Lire un tuto sur l'affichage d'une texture à l'ecran.
- Lire un tuto sur la gestion de périphériques (souris etc...); pour cela tu peux lire mon article (attention en anglais)ici

Bon courage cela étant
0
Madaraa Messages postés 22 Date d'inscription mardi 11 août 2009 Statut Membre Dernière intervention 7 février 2013
22 août 2009 à 10:24
Salut MasterShadows j'ai déjà commencer certain tuto mais il n'explique pas ce qu'es un bouton, est-ce que c'est du texte simple avec quelque chose à rajouter ? ou c'est quelque chose de totalement différent ?
0
MasterShadows Messages postés 268 Date d'inscription lundi 1 mars 2004 Statut Membre Dernière intervention 19 avril 2012 12
22 août 2009 à 11:35
Salut, il n'existe pas pour l'heure de GUI en XNA. On est donc obligé d'en créer un par nous même dans ton cas, le problème est quelque peu simple :

il s'agit ni plus ni moins que de créer un bouton. De manière toute simple qu'est-ce qu'un bouton ?

Il s'agit d'un texte ou d'une texture qui doit réagir à certaines contraintes (comme par exemple un clic souris). En considérant que tu as lu mon article sur les périphériques et que tu veux utiliser un texte pour simuler ton bouton, en insérant tout comme il faut là où il faut, on peut écrire ceci :

public delegate void ClickEventHandler(TestButton btn);

sealed public class TestButton
{
private SpriteFont text;
private Vector2 position;
private readonly Color nonSelectedColor = Color.White;
private readonly Color hoveredColor = Color.Yellow;
public event ClickEventHandler ClickEvent;
private ContentManager content;
private SpriteBatch spriteBatch;
private bool hovered;
private string textToDraw;
private Vector2 textSize;


public Vector Position
{
get { return position; }
set { position = value; }
}

public string Name
{
get;
set;
}

public TestButton(ContentManager content, SpriteBatch spriteBatch,
string textToDraw)
{
this.content = content;
this.spriteBatch = spriteBatch;
this.textToDraw = textToDraw;
}

public void LoadContent(string spriteFontAssetName)
{
text = content.Load<SpriteFont>(spriteFontAssetName);
textSize = text.MeasureString(textToDraw);
}

public void Update()
{
hovered = false;

if(XInput.GetMousePosition() >= position &&
XInput.GetMousePosition() <= position + textSize)
{
hovered = true;

if(XInput.IsNewMouseButtonPressed(MouseButtons.Left))
{
if(ClickEvent != null)
ClickEvent(this);
}
}
}

public void Draw()
{
spriteBatch.DrawString(text, textToDraw, position, hovered ? hoveredColor : nonSelectedColor);
}
}

Donc voilà là tu as une classe certainement fonctionnelle (je ne l'ai pas testé, mais y devrait pas y avoir de problème)

Ensuite une astuce, il faut que dans le constructeur de Game1 tu ajoutes ceci :

Components.Add(new XInput(this));

pour pouvoir utiliser les spécifités de la classe XInput...

Je te laisses chercher pour le reste...

Tiens moi au courant
0
Madaraa Messages postés 22 Date d'inscription mardi 11 août 2009 Statut Membre Dernière intervention 7 février 2013
23 août 2009 à 11:45
Salut alors en ce qui concerne ton code j'ai quelque soucis:
Erreur 1 Le type ou le nom d'espace de noms 'Vector' est introuvable et je ne comprend pas ce que tu entend pas constructeur
j'étudie sa mtn à l'école mais je ne comprend pas bien pourrais-tu éclaircir ce point svp.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
MasterShadows Messages postés 268 Date d'inscription lundi 1 mars 2004 Statut Membre Dernière intervention 19 avril 2012 12
23 août 2009 à 14:50
Salut,
oups je me suis planté, tu ne dois pas lire

public Vector Position

mais

public Vector2 Position

Ensuite un constructeur permet d'instantier (créer) un objet. Le constructeur doit porter le nom de la classe. Donc si ta classe se nomme Game1, alors ton constructeur est : public Game1

En espérant t'avoir aidé
0
Madaraa Messages postés 22 Date d'inscription mardi 11 août 2009 Statut Membre Dernière intervention 7 février 2013
23 août 2009 à 19:37
Salut alors, j'ai encore un problème Erreur 1 Le type ou le nom d'espace de noms 'Xinput' est introuvable (une directive using ou une référence d'assembly est-elle manquante ?) il est bien mis ici Components.Add(new Xinput(this)); je ne comprend pas
0
MasterShadows Messages postés 268 Date d'inscription lundi 1 mars 2004 Statut Membre Dernière intervention 19 avril 2012 12
23 août 2009 à 20:31
Salut,
donc de ce que je vois tu ne connais pas bien le C#, tout en C# est englobé dans des namespaces, dans l'article j'ai défini le namespace à NeptuneEngine.Input

Donc pour avoir accès à XInput, tu dois écrire là où tu as tous les directives using, tu écris :

using NeptuneEngine.Input

et là tu auras accès à XInput (et XInput et pas Xinput)
0
Madaraa Messages postés 22 Date d'inscription mardi 11 août 2009 Statut Membre Dernière intervention 7 février 2013
24 août 2009 à 18:04
Salut, oui effectivement je ne connais pas très bien le c# mais je fais ceci pour progresser, j'ai fais ce que tu m'as dis mais sa ne fonctionne toujours pas à +.
0
Madaraa Messages postés 22 Date d'inscription mardi 11 août 2009 Statut Membre Dernière intervention 7 février 2013
24 août 2009 à 18:08
Dsl pour double poste petit bug, maintenant le problème c'est que NeptuneEngine.Input est introuvable merci de m'aider c'est simpa
0
MasterShadows Messages postés 268 Date d'inscription lundi 1 mars 2004 Statut Membre Dernière intervention 19 avril 2012 12
24 août 2009 à 22:23
Salut,
bon alors c'est rapide, tu télécharges le sample fournit avec l'article, tu copies les fichiers suivants :

XInput.cs, enum.cs, structure.cs et Extensions.cs et tu les colles dans ton projet, ensuite tu recherches le namespace nommé XInputTest par le nom de ton projet, et ensuite tu pourras retirer using NeptuneEngine.Input

(erreur de ma part lors de la création de l'article)
0
MasterShadows Messages postés 268 Date d'inscription lundi 1 mars 2004 Statut Membre Dernière intervention 19 avril 2012 12
24 août 2009 à 22:51
Oups trompé, il ne faut pas lire : tu recherches le namespace mais tu remplaces le namespace
0
Rejoignez-nous