avr
28
2010

TUTORIEL NEOFORCE – PARTIE 1

Pré requis :

Visual studio C# 2008 ou Visual Express C#

XNA Game Library 3.1

La bibliothèque de contrôle Neoforce

Introduction :

Qu’est-ce que Neoforce ?

La bibliothèque Neoforce permet d’intégrer un système de GUI à votre application XNA, sans avoir a développer la votre, cette bibliothèque est entièrement personnalisable.

Un système de skins est à disposition dans la librairie, que nous verrons dans un autre tutoriel, vous pouvez créer des fenêtres, des boutons etc… sans trop de soucis et en peut de temps.

Téléchargement et installation :

Rendez vous sur le site de Neoforce et télécharger les neoforce controls ( version 0.6.1910.1437 actuellement ), elle fait environ 8mo, elle contient des exemples et une dll que l’on rajoutera à nos projets pour travailler.

http://www.tomshane.cz/neoforce/Downloads/tabid/56/Default.aspx

Une fois le téléchargement terminé il vous faut exécuter l’installation pour pouvoir utiliser votre contrôle.

Création et configuration du projet :

On ouvre notre IDE (Integrated Development Environment) soit visual studio pour les uns et visual express pour les autres.

Nous allons commencez par créer notre nouveau projet de type XNA.

Création du projet

Création du projet

On se retrouve alors avec notre premier jeu mais vide, on ne peux strictement rien faire et c’est bien dommage mais on va arranger ceci très rapidement.

Fenetre XNA

Fenetre XNA

Nous allons tout d’abord faire en sorte que notre pointeur de souris soit visible au sein de l’application.

Rajoutons la ligne suivante à la suite du code dans le constructeur de notre jeu (Game1)

IsMouseVisible = true;

Et voilà notre souris ne disparaît plus lorsque l’on rentre dans la fenêtre XNA, ce qui sera plus pratique pour gérer les différentes fenêtres du jeu.

On va ajouter le fichier TomShane.Neoforce.Controls.dll en référence à notre projet, celui-ci ce trouve par défaut dans le répertoire (C:\Program Files (x86)\Tom Shane\Neoforce Controls\Bin), sauf si vous avez décidé de l’installer autre part (Clic droit sur le dossier référence et faire ajouter).

Choix de la DLL

Choix de la DLL

Dans notre fichier Game1.cs on rajoute la directive

using TomShane.Neoforce.Controls;

Ce qui nous permettra d’utiliser pleinement le potentiel de la librairie.

On arrive à la fin de la partie d’intégration de Tomshane Neoforce à notre projet on va maintenant créer notre première fenêtre.

Création d’une fenetre

Nous allons commencer par ajouter la variable qui permettra de gérer les objets provenant de Neoforce

Manager manager;

A ajouter en dessous de la déclaration de “SpriteBatch spriteBatch”

Dans notre constructeur nous allons rajouter deux portions de codes :

IsFixedTimeStep = false;

manager = new Manager(this, graphics);

La première ligne correspont au blocage du rafraichissement, celle-ci par défaut est à true ce qui si vous ne le mettez pas a false fera clignotez votre fenêtre avec l’utilisation de Neoforce.

La deuxième ligne permet d’instancier le manager avec en paramétre notre jeu et l’objet graphic.

N’oubliez pas de copier le répertoire skins (C:\Program Files (x86)\Tom Shane\Neoforce Controls\skins) dans votre dossier debug et release du projet sinon vous aurez droit à cette jolie fenêtre

Exception

Exception

Bon et maintenant ? et bien créons ! :w00t:

Dans la fonction LoadContent nous allons rajouter des informations pour créer notre fenêtre

protected override void LoadContent()

{

// Create a new SpriteBatch, which can be used to draw textures.

spriteBatch = new SpriteBatch(GraphicsDevice);

manager.Initialize();

Window maFenetre = new Window(manager);

maFenetre.Init();

maFenetre.Top = 50;

maFenetre.Left = 100;

maFenetre.Width = 300;

maFenetre.Height = 300;

maFenetre.Text = "Ma Fenetre";

manager.Add(maFenetre);

}

La ligne manager.initialize() permet d’initialiser le manger (C’est comme le port salut c’est écrit dessus)

Ensuite on crée et instancie notre fenêtre avec en paramètre le manager, puis on l’initialise et fournit des informations pour son emplacement et son nom, pour terminé on l’ajoute au manager.

Maintenant on compile et par magie ! :biggrin:

Fenetre NEOFORCE

Fenetre NEOFORCE

C’est sublime non ? Ou pas en faite mais on a une fenêtre dans notre projet XNA.

Mais c’est pas super pratique si on crée plusieurs fenêtres faut tout faire à la main dans la page principale et comme on dit ça fait dégueulasse.

On va rajouter une classe nommée CFenetre.cs et on la complète comme suis :

using System;

using TomShane.Neoforce.Controls;

using Microsoft.Xna.Framework;

namespace TutoNeoforce1

{

public class CFenetre : Window

{

public CFenetre(Manager manager, String titre, Rectangle position)

: base(manager)

{

this.Text = titre;

this.Top = position.Y;

this.Left = position.X;

this.Width = position.Width;

this.Height = position.Height;

this.Init();

}

}

}

On se retrouve avec une classe qui permet de créer des fenêtres à la volé sans soucis.

On va modifier le LoadContent encore une fois

protected override void LoadContent()

{

spriteBatch = new SpriteBatch(GraphicsDevice);

manager.Initialize();

CFenetre maFenetre = new CFenetre(manager,"Ma Fenetre",new Rectangle(100,50,300,300));

manager.Add(maFenetre);

}

Et voila on compile une autre fois notre projet et on se retrouve avec la même fenêtre mais plus facilement, voyez toujours à long terme, les objets sont une source intarissable pour facilité la maintenance et la programmation.

Evolutions :

1) Mettre la classe CFenetre en abstraite et heritez de cette classe pour designé plus rapidement vos nouvelles fenetres.

2) Rajoutez des boutons

A Suivre :

Dans la prochaine partie du tutorial on commencera à utiliser les premiers contrôles ainsi que les événements sur eux.

  • xrosenton

    Hello, L’article est super mais moi j’ai un problème avec neoforce, l’utilisation des textbox et des consoles demande un clavié bisard, en effet quand je tape ‘ ” ‘ il m’écrit ‘ 4 ‘ pour l’avoir je dois utiliser ‘ ² ‘ pour les cote et ‘ Maj + ² ‘ pour les doublecote

    merci de ‘indiqué si une solution existe pour palier a ce probleme

  • Pierre-Emmanuel Mercier

    Bizarre bizarre ton affaire, tu pourrais me passer un morceau de code minimaliste qui plante chez toi histoire que je vois si ça fait pareil de mon côté ? Merci par avance ;)

  • Calixte35

    Bonjour,
    je souhaite (rapidement) utiliser cette librairie. or je ne comprend pas …vous parlez “d’installer” après avoir téléchargé… Que faire ?

    Et en effet, dans les using : using TomShane.Neoforce.Controls;
    TomShane reste en rouge…
    Aidez moi s’il vous plaît !!! merci

    Vincent Morin

  • Calixte35

    Problème résolu. Mais n’y a-t-il pas de partie 2 du tuto ??? ;-)

  • http://www.ace-art.fr/wordpress/ Pierre-Emmanuel Mercier

    Non je n’ai pas continué à écrire sur ce sujet, Neoforce ayant changé de main.

  • Sonorhio

    Allons-nous voir un jour un second tutoriel sur NeoForce ?
    En tout cas site et tutoriel très bien fait, bravo ! :cheerful:

    Cordialement.

  • http://www.ace-art.fr/wordpress/ Pierre-Emmanuel Mercier

    Malheureusement non Sonorhio.

    Neoforce n’est plus réellement maintenue dernière MAJ en sep 2010.

    Tu trouveras le code ici

    http://neoforce.codeplex.com/