Casino online









Mercato forex






A1. Introduzione


Cos'è XNA?
XNA è uno strano acronimo ricorsivo che sta per "Xna's Not Acronym" (ossia "Xna non è un acronimo"). È un framework sviluppato in C# che permette di facilitare notevolmente la scrittura di applicazioni grafiche, in particolar modo videogiochi. Questo framework viene usato anche per sviluppare giochi per Xbox 360. Dato che si tratta di un insieme di librerie .Net, è possibile utilizzarlo in uno qualsiasi dei linguaggi .Net, anche se praticamente la totalità dei tutorial online prendono in considerazione solo C#. Dato che questo sito è dedicato al Vb.Net, ovviamente, tutti i sorgenti saranno scritti in questo linguaggio, a costo di inventermi acrobazie informatiche per emulare ciò che con Visual C# è automatico.


Download del software
Per iniziare a lavorare servono queste cose: Dopo averli scaricati, installate Visual C# 2005 e il suo Service Pack 1, poi XNA Framework 2.0 e XNA Game Studio 2.0.


Nuovo progetto: Breakout
Una volta installato tutto il necessario non aprite Visual C# 2005: ci serviva solo per procedere nell'installazione. Invece, aprite il caro Visual Basic 2005 Express e... cosa fare? Non sono stati aggiunti componenti di nessun genere al compilatore Visual Basic, quindi? Quindi ci ho già pensato io. Scaricate questo pacchetto zip e copiatelo in:
Documenti\Visual Studio 2005\Templates\ProjectTemplates 
Ora riavviate il compilatore, andate su New Project e vedrete:


Ecco il nuovo template

Questo è un template che ho (tra)scritto io, per poter iniziare subito a scrivere il codice senza preoccuparsi di ridichiarare sempre tutto: per C#, i template vengono automaticamente installati, ma per VB no, quindi questa ne è una mia versione. Si tratta di una Windows Application senza finestra, che inizia esattamente come una Console Application, nella Sub Main(): in questo modo non c'è la console a dar fastidio e neanche le finestre, poiché l'unica form di cui avremo bisogno verrà automaticamente creata in un momento successivo. Il progetto dovrebbe averli già importanti, ma, se non fosse così, ricordatevi di aggiungere i riferimenti alla nuova libreria Microsof.Xna.Framework e ai suoi sotto-namespace.


La classe principale: Game
Una volta aperto il progetto, si notano tre file sorgenti: Module1.vb, Game.vb e GameObjects.vb. Limitiamoci ai primi due per ora. Nel primo c'è scritto:
Module Program

    Sub Main()
        Using Game As New Game
            Game.Run()
        End Using
    End Sub

End Module 
Sono pochissime linee di codice, che inizializzano un nuovo oggetto Game di tipo Game (sì, hanno lo stesso nome) e lo fa correre. Il costrutto Using, come ricorderete dalla mia guida, si preoccupa prima di inizializzare l'oggetto e, alla fine, di distruggerlo, rilasciando le risorse ad esso associate. Notate che non c'è nessun Console.ReadKey(), perchè non serve: Game.Run non è un metodo asincrono, e il codice a cui appartiene non procede finché non ha terminato la propria esecuzione. Dato che Run termina quando lo decidiamo noi, ossia quando il gioco finisce, Main resta attiva per tutta la durata del videogame. Avrete inoltre notato - spero - che non c'è nessuna direttiva Imports all'inizio del codice, eppure Game non è una classe che rientra nei normali namespace e dovrebbe dare errore. Sbagliato. Infatti è dichiarata nel secondo file sorgente presente nel progetto, come segue:
Imports Microsoft.Xna.Framework
Imports Microsoft.Xna.Framework.Input
Imports Microsoft.Xna.Framework.Graphics

Public Class Game
    Inherits Microsoft.Xna.Framework.Game

    Private Graphics As GraphicsDeviceManager
    Private Batch As SpriteBatch

    Sub New()
        Me.Graphics = New GraphicsDeviceManager(Me)
        Me.Content.RootDirectory = "content"
    End Sub

    ''' <summary>
    ''' Inizializza gli oggetti della classe.
    ''' </summary>
    Protected Overrides Sub Initialize()
        Batch = New SpriteBatch(Me.Graphics.GraphicsDevice)
        MyBase.Initialize()
    End Sub

    ''' <summary>
    ''' Carica tutte le risorse che occorrono (texture, modelli 3D, 
    ''' suoni, ecc...).
    ''' </summary>
    Protected Overrides Sub LoadContent()
        MyBase.LoadContent()
    End Sub

    ''' <summary>
    ''' Rilascia tutte le risorse che non servono più.
    ''' </summary>
    Protected Overrides Sub UnloadContent()
        MyBase.UnloadContent()
    End Sub

    ''' <summary>
    ''' Aggiorna la situazione di gioco (tutti gli oggetti 
    ''' vengono aggiornati). 
    ''' </summary>
    Protected Overrides Sub Update(ByVal GameTime As GameTime)
        If GamePad.GetState(PlayerIndex.One).Buttons.Back = _ 
            ButtonState.Pressed Then
            Me.Exit()
        End If

        MyBase.Update(GameTime)
    End Sub

    ''' <summary>
    ''' Disegna tutti gli oggetti visibili sullo schermo.
    ''' </summary>
    Protected Overrides Sub Draw(ByVal gameTime As GameTime)
        Me.Graphics.GraphicsDevice.Clear(Color.CornflowerBlue)

        MyBase.Draw(gameTime)
    End Sub
End Class 
Game è dunque una nuova classe, derivata da Microsoft.Xna.Framework.Game, che rappresenta tutto il videogioco. Ecco una lista dei membri dichiarati, con le relative descrizioni: Tutta la scrittura del gioco avviene manipolando codice in questi metodi chiave che, se notate, sono dichiarati Protected Overrides, ossia applicano polimorfismo ai corrispettivi metodi della classe base.





 

The Totem's Lair - Copyright (C) 2009
È vietata la riproduzione sia totale che parziale del sito.