Computer_Zone
Vuoi reagire a questo messaggio? Crea un account in pochi click o accedi per continuare.

CREARE IL PROPRIO VIDEOGAMES IN C#: DECIMA PARTE sezione prima

Andare in basso

CREARE IL PROPRIO VIDEOGAMES IN C#: DECIMA PARTE sezione prima Empty CREARE IL PROPRIO VIDEOGAMES IN C#: DECIMA PARTE sezione prima

Messaggio  Admin Mar Mag 12, 2009 4:03 pm

10) APRIAMO UN PROGETTO XNA

Immagino che, da quando lo avete scaricato, avrete già aperto decine di progetti XNA per fare le vostre prove. Vediamo ora di raccapezzarci qualche cosa.



Scegliamo di creare un nuovo progetto Windows Game(2.0) e diamo il nome che vogliamo al nostro progetto.
Aprendo questo nuovo progetto ci troveremo di fronte un nuovo file .cs chiamato Game1.cs con del codice già inserito dal Visual Studio:
using System;
using System.Collections.Generic;
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.Net;
using Microsoft.Xna.Framework.Storage;

namespace tutorial_XNA
{
/// <summary>
/// This is the main type for your game
/// </summary>
public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;

public Game1()
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
}

/// <summary>
/// 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.
/// </summary>
protected override void Initialize()
{
// TODO: Add your initialization logic here

base.Initialize();
}

/// <summary>
/// LoadContent will be called once per game and is the place to load
/// all of your content.
/// </summary>
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
}

/// <summary>
/// UnloadContent will be called once per game and is the place to unload
/// all content.
/// </summary>
protected override void UnloadContent()
{
// TODO: Unload any non ContentManager content here
}

/// <summary>
/// Allows the game to run logic such as updating the world,
/// checking for collisions, gathering input, and playing audio.
/// </summary>
/// <param name="gameTime">Provides a snapshot of timing values.</param>
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);
}

/// <summary>
/// This is called when the game should draw itself.
/// </summary>
/// <param name="gameTime">Provides a snapshot of timing values.</param>
protected override void Draw(GameTime gameTime)
{
graphics.GraphicsDevice.Clear(Color.CornflowerBlue);

// TODO: Add your drawing code here

base.Draw(gameTime);
}
}
}

Un bel po' di cose!
Iniziamo subito a cancellare i commenti che ci XNA ci pone in inglese.
In questo modo potremmo commentare il nostro codice in italiano:
using System;
using System.Collections.Generic;
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.Net;
using Microsoft.Xna.Framework.Storage;

//Quì sopra avremo specificato diversi dei namespace di XNA e non solo (System è sempre lì).
//Per ora molti di questi namespace sono inutili e provvederemo a cancellarli.
namespace tutorial_XNA
{
public class Game1 : Microsoft.Xna.Framework.Game // <-- La classe principale del nostro gioco: Game1.
{
GraphicsDeviceManager graphics; //<-- Dichiara la classe GraphicsDeviceManager, una classe di XNA indispensabile.
SpriteBatch spriteBatch; //<-- Dichiara la classe SpriteBatch, un'altra classe di XNA necessaria per il 2D.

public Game1() //<-- Questo è il nostro "costruttore", vedremo a cosa serve. Anche lui è necessario.
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
}




protected override void Initialize()
{
// Dentro a questo metodo metteremo il codice che vorremmo venga eseguito all'avvio.
// Infatti, questo metodo viene eseguito solo all'apertura del programma.

base.Initialize();
}



protected override void LoadContent()
{
// Dentro a questo metodo caricheremo i contenuti del nostro gioco, modelli, immagini ecc..
//Anche questo metodo viene eseguito solo all'inizio del programma.
spriteBatch = new SpriteBatch(GraphicsDevice); <-- Assegnamo alla variabile spriteBath un nuovo SpriteBatch.
}



protected override void UnloadContent()
{
// Dentro questo metodo elimineremo i contenuti quando non ci serviranno più, per liberare memoria.
}



protected override void Update(GameTime gameTime)
{
/* Questo metodo è molto importante, esso viene eseguito ed aggiornato continuamente(updated)
ad ogni fotogramma del gioco. All'interno di esso andrà tutto il codice
che riguarderà "l'azione" del gioco. */

/* La riga sottostante è messa di default da XNA all'interno del metodo Update.
E' in if che serve per chiudere il nostro gioco se si eseguisse su XBOX.
Noi, per ora provvederemo subito a cancellarla */
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed) <--Se premuto il tasto..
this.Exit(); <--esci.

base.Update(gameTime);
}




protected override void Draw(GameTime gameTime)
{

/* Questo è il metodo Draw che rende possibile la visualizzazione di ogni cosa sullo schermo, Draw disegna su schermo
i nostri modelli, le nostre immagini ecc.. */

// La riga sottostante provvede a cancellare il fotogramma precedente a quello corrente..
graphics.GraphicsDevice.Clear(Color.CornflowerBlue);

base.Draw(gameTime);
}
}
}
Anche con i commenti in italiano però, a causa delle nostre scarse conoscenze, non saremo in grado di capire tutto quello che un progetto XNA ci propone al suo avvio.
Allora andiamo a vedere a cosa serve tutto questo codice per prendere confidenza con XNA.
Non preoccupatevi se anche dopo questa descrizione ci saranno delle perplessità, questa sarà solo una panoramica iniziale.
Admin
Admin
Admin

Messaggi : 17
Data di iscrizione : 14.02.09
Età : 32
Località : Vicenza

https://computerzone.elencoforum.com

Torna in alto Andare in basso

Torna in alto

- Argomenti simili

 
Permessi in questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum.