Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 13 di 53
  • livello principiante
Indice lezioni

Un primo esempio di gioco

Vediamo in pratica come funziona l'ossatura principale di un gioco
Vediamo in pratica come funziona l'ossatura principale di un gioco
Link copiato negli appunti

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

Ti consigliamo anche