| Tutoriel : Programmation du projet de base XNA 4.0 sous Visual C# Express 2010 |
|
|
| Écrit par Dagal |
| Samedi, 24 Septembre 2011 07:21 |
Projet de base XNA 4.0SousVisual C# Express 2010
Peut on vraiment parler de programmation dans ce cas ci? Pas vraiment! Vous allez vite comprendre pourquoi. Exécutez votre Visual C# et dans l'écran principal, sélectionnez 'Nouveau projet'. En guise de nom de projet, vous pouvez choisir 'PCOTutoXNA1'. Cela va permettre à chacun de pouvoir avoir la même chose que l'auteur du projet. Si vous le désirez, vous pouvez également donner 'PCOTutoXNA' comme nom de solution afin de regrouper tous vos tutos dans une seule solution. Si vous optez pour ceci, n'oubliez pas de définir le projet prioritaire pour l'exécution.
Voila! Une fois que c'est fait, il n'y a plus qu'à appuyer sur la touche F5 et le tour est joué. Si tout se passe bien vous obtiendrez une belle fenêtre bleue à l'écran similaire à celle ci.
Vous comprenez maintenant pourquoi il ne s'agit pas vraiment de programmation. Tout est automatisé au démarrage, c'est après que ça se complique. Vous allez maintenant réaliser quelques modifications de base afin d'être prêt pour la suite des évènements. Regardez donc ce qui a été créé automatiquement. Tout d'abord, 2 projets ont été créé et non un seul. En fait, le deuxième n'est qu'une représentation du dossier 'content' du premier. Donc, vous avez un projet qui va contenir toute la partie programmation et un autre qui reprendra tout les contenus tel que: objet3D, textures, effets, ... Ouvrez donc vos fichiers C#, il y en a 2 pour le moment. Program.cs et Game1.cs . Renommez Game1.cs en PCOTutoXNA.cs, toujours pour assurer la compatibilité avec l'auteur. Normalement, l'ordinateur devrait vous demander pour renommer automatiquement le nom de la classe, cliquez sur oui et laissez le faire. Voila! Maintenant que cela est fait, qu'y a t'il donc dans le premier fichier : Program.cs using System;
namespace PCOTutoXNA1 { #if WINDOWS || XBOX static class Program { ///
/// The main entry point for the application. ///
static void Main(string[] args) { using (PCOTutoXNA game = new PCOTutoXNA()) { game.Run(); } } } #endif } Comme vous pouvez, le voir, rien d'extraordinaire, une classe de base est créée avec une méthode main qui va créer une nouvelle instance d'une classe et lancer sa méthode d'exécution. Cette partie du programme ne devrait jamais être modifiée, sauf dans quelques cas particuliers qui ne seront pas abordés dans cette série de tutoriels.
C'est le moment d'aller voir ce qu'il se passe dans le deuxième fichier.
Le fichier, qui a été renommé en 'PCOTutoXNA.cs', ressence beaucoup plus d'information utile. Il va falloir étudier cela de plus près, à la loupe, voir même au microscope. Bon! Il ne faut rien n'exagérer non, mais... c'est parti...
using System;
using System.Collections.Generic; using System.Linq; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Audio; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.GamerServices; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using Microsoft.Xna.Framework.Media; namespace PCOTutoXNA1 { ///
/// This is the main type for your game ///
public class PCOTutoXNA : Microsoft.Xna.Framework.Game { GraphicsDeviceManager graphics; SpriteBatch spriteBatch; public PCOTutoXNA() { graphics = new GraphicsDeviceManager(this); Content.RootDirectory = "Content"; } ///
/// 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. ///
protected override void Initialize() { // TODO: Add your initialization logic here base.Initialize(); } ///
/// LoadContent will be called once per game and is the place to load /// all of your content. ///
protected override void LoadContent() { // 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 } ///
/// UnloadContent will be called once per game and is the place to unload /// all content. ///
protected override void UnloadContent() { // TODO: Unload any non ContentManager content here } ///
/// Allows the game to run logic such as updating the world, /// checking for collisions, gathering input, and playing audio. ///
/// Provides a snapshot of timing values. protected override void Update(GameTime gameTime) { // Allows the game to exit if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed) this.Exit(); // TODO: Add your update logic here base.Update(gameTime); } ///
/// This is called when the game should draw itself. ///
/// Provides a snapshot of timing values. protected override void Draw(GameTime gameTime) { GraphicsDevice.Clear(Color.CornflowerBlue); // TODO: Add your drawing code here base.Draw(gameTime); } } }
Quelques explications en gros.
public class PCOTutoXNA : Microsoft.Xna.Framework.Game Cette ligne crée une classe qui hérite des fonctionnalités de la classe 'Game'. Cette classe est en queque sorte le moteur de notre programme (jeu).
graphics = new GraphicsDeviceManager(this); Comme la pluspart des systèmes de programmation graphique, Il faut indiquer à l'ordinateur sur quel matériel vous aller dessiner.
Content.RootDirectory = "Content"; Indique où sont placés les contenus multimédia.
Ensuite 5 méthodes apparaissent : Initialize, LoadContent, UnloadContent, Update et Draw
Dans la partie loadcontent, il y a la création d'un SpriteBatch, c'est ce qui va servir dans le prochain tutoriel afin de dessiner des "sprite" à l'écran.
La ligne se trouvant dans la méthode Update sert pour les utilisateurs d'un gamepad de XBOX360 (fonctionne aussi sur pc). Cette méthode Update est appelée, par défaut, 60 fois par secondes.
Et enfin, la fonction Clear appelée dans la méthode Draw permet d'effacer l'écran avec une couleur choisie par le programmeur "CornflowerBlue". Voici d'où vient cet écran bleu. La méthode Draw est, elle aussi, appelée 60x par secondes par défaut, ce qui donne une très bonne sensation de fluidité.
Attention : Pour ceux qui aurait un beau message d'erreur tel que celui illustré ci dessous, il y a une solution, peut être. En effet, si votre carte video n'est pas suffisemment récente (DirectX 11) XNA vous fais savoir qu'il n'est pas capable de travailler avec votre matériel. Il faut donc rentrer dans la page de propriétés de votre projet et de sélectionner le mode reach, qui offre une compatibilité avec du matériel légèrement plus ancien, mais pas trop quand même.
Histoire de rendre le programme un peu plus personnalisé, il va falloir faire quelques légères modifications. Pour des raison de facilité d'utilisation, vous allez créer une nouvelle variable de classe comme ceci :
Ensuite, vous allez l'ininialiser dans la méthode LoadContent() de cette manière :
Et pour bien commencer, dans la méthode draw, vous allez modifier la ligne qui efface l'écran avec un fond bleu de cette façon :
Ceci étant fait, dans la méthode initialize, faites les modification suivant pour changer la taille et le titre de la fenêtre.
Voila, maintenant vous êtes prèt à continuer les différents tutoriels proposés par PC-Overware concernant la 2D sous XNA 4.0 . Si vous le désirez, pour vous entrainer un peu, changer la taille de la fenêtre, changez son titre, changez la couleur de fond lors de l'effacement, faites une fenêtre en plein écran, et voyez ce qui vous plait le mieux.
Merci d'avoir suivi ce petit turoriel, le prochain vous montrera comment afficher des graphiques 2D, de leur appliquer des translations, échelles et rotations. Vous verrez également comment créer un nouveau curseur pour la souris. |





