Vediamo un semplice esempio di gioco che non svolge alcuna funzionalità. Come prima cosa ereditiamo la classe Game
:
class ApplicationModelGame : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
nel costruttore della nostra nuova classe creiamo una istanza del GraphicsDeviceManager
, passandole il Game
a cui farà riferimento, inizializziamo alcune proprietà desiderate (per il resto ci accontentiamo dei valori di default) e infine impostiamo la cartella "Content" come radice per il ContentManager
:
public ApplicationModelGame()
{
graphics = new GraphicsDeviceManager(this);
graphics.SynchronizeWithVerticalRetrace = false;
graphics.GraphicsProfile = GraphicsProfile.Reach;
IsFixedTimeStep = false;
Content.RootDirectory = "Content";
}
Nei metodi Initialize e LoadContent stampiamo sulla console di diagnostica che il metodo è stato invocato:
protected override void Initialize()
{
System.Diagnostics.Debug.WriteLine("Initialize");
base.Initialize();
}
protected override void LoadContent()
{
System.Diagnostics.Debug.WriteLine("LoadContent");
}
Nel metodo Update teniamo un contatore del numero di invocazioni fatte finora. Quando questo numero raggiunge il valore 10 chiudiamo l'applicazione con il metodo Exit del Game:
int cnt = 0;
protected override void Update(GameTime gameTime)
{
System.Diagnostics.Debug.WriteLine("Update");
if (cnt++ == 10)
{
Exit();
}
base.Update(gameTime);
}
Infine nel metodo Draw puliamo lo schermo e gli assegnamo un colore azzurro; questa operazione di azzeramento dello schermo (Clear) è necessaria per evitare che il disegno di un fotogramma sia caoticamente mescolato con il disegno del fotogramma precedente, soprattutto in quei casi in cui si fa disegno 3D ed il depth buffer è stato usato mantenendo memorizzate le profondità dei pixel della scena:
protected override void Draw(GameTime gameTime)
{
System.Diagnostics.Debug.WriteLine("Draw");
GraphicsDevice.Clear(Color.CornflowerBlue);
base.Draw(gameTime);
}
L'applicazione produce l'output:
Initialize LoadContent Update Update Draw Update Draw Update ... Update Draw Update Draw Update Draw Update