<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>the void. &#187; update</title>
	<atom:link href="http://francescomalatesta.net/tag/update/feed/" rel="self" type="application/rss+xml" />
	<link>http://francescomalatesta.net</link>
	<description>&#34;La Mia Ignoranza Non Ha Lacune.&#34;</description>
	<lastBuildDate>Sat, 21 Aug 2010 09:42:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
		<item>
		<title>E Questo Codice? &#8211; Inizio e Preparazione &#8211; XNA Tutorials</title>
		<link>http://francescomalatesta.net/2009/12/27/e-questo-codice-inizio-e-preparazione-xna-tutorials/</link>
		<comments>http://francescomalatesta.net/2009/12/27/e-questo-codice-inizio-e-preparazione-xna-tutorials/#comments</comments>
		<pubDate>Sun, 27 Dec 2009 10:21:32 +0000</pubDate>
		<dc:creator>FrancescoMalatesta</dc:creator>
				<category><![CDATA[XNA]]></category>
		<category><![CDATA[codice]]></category>
		<category><![CDATA[draw]]></category>
		<category><![CDATA[inizio]]></category>
		<category><![CDATA[preparazione]]></category>
		<category><![CDATA[update]]></category>

		<guid isPermaLink="false">http://francescomalatesta.net/?p=288</guid>
		<description><![CDATA[Proprio adesso stavo scrivendo il primo articolo della sezione Grafica e stavo pensando: &#8220;cavolo, non ho scritto niente di generale riguardo alla struttura del codice?&#8221;. Certo, su internet si trovano tonnellate di documentazioni a riguardo, e sullo stesso progetto generato automaticamente troviamo un sacco di commenti utili, se si mastica un pò d&#8217;inglese. Ma vogliamo [...]]]></description>
			<content:encoded><![CDATA[<p>Proprio adesso stavo scrivendo il primo articolo della sezione Grafica e stavo pensando: &#8220;cavolo, non ho scritto niente di generale riguardo alla struttura del codice?&#8221;. Certo, su internet si trovano tonnellate di documentazioni a riguardo, e sullo stesso progetto generato automaticamente troviamo un sacco di commenti utili, se si mastica un pò d&#8217;inglese.</p>
<p>Ma vogliamo fare le cose per bene (e io vorrei anche iniziare ad usare sto plugin wordpress per il codice XD) per cui ecco cosa ci ritroviamo davanti all&#8217;avvio, nella scheda &#8220;Esplora Soluzione&#8221;:</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-292" title="Senza titolo-2" src="http://francescomalatesta.net/wp-content/uploads/2009/12/Senza-titolo-22.jpg" alt="Senza titolo-2" width="283" height="226" /></p>
<p style="text-align: left;">Si, il gioco si chiama &#8220;GiocoDiProva&#8221;. Non saltatemi addosso per l&#8217;eccessiva originalità.</p>
<p>Comunque sia, prima di tutto apriamo il file &#8220;Program.cs&#8221;:</p>
<pre class="brush: csharp;">
using System;

namespace GiocoDiProva
{
    static class Program
    {
        /// &lt;summary&gt;
        /// The main entry point for the application.
        /// &lt;/summary&gt;
        static void Main(string[] args)
        {
            using (Game1 game = new Game1())
            {
                game.Run();
            }
        }
    }
}
</pre>
<p>Questo che vedete è il punto d&#8217;ingresso del programma: essendo totalmente ad oggetti il nostro approccio, creiamo un oggetto di tipo Game1 (che rappresenta il nostro gioco) e lo avviamo con il metodo Run(). Niente di più semplice, ma considerate che questo file almeno adesso non lo toccheremo minimamente.</p>
<p>Le cose cambiano per il file Game1.cs, che contiene la definizione della nostra classe principale:</p>
<pre class="brush: csharp;">
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;
using Microsoft.Xna.Framework.Net;
using Microsoft.Xna.Framework.Storage;

namespace GiocoDiProva
{
    /// &lt;summary&gt;
    /// This is the main type for your game
    /// &lt;/summary&gt;
    public class Game1 : Microsoft.Xna.Framework.Game
    {
        GraphicsDeviceManager graphics;
        SpriteBatch spriteBatch;

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

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

            base.Initialize();
        }

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

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

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

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

            // TODO: Add your drawing code here

            base.Draw(gameTime);
        }
    }
}
</pre>
<p>Non andate in stallo subito, in realtà le cose sono molto semplici! Come prima cosa, dovete comprendere che l&#8217;evolversi del nostro gioco, concettualmente, si può riassumere in due &#8220;parti&#8221;, escludendo il momento in cui carichiamo le risorse.</p>
<p>Per prima cosa, la logica del gioco deve essere aggiornata. Per logica del gioco si intende tutto quell&#8217;insieme di variabili ed in generale operazioni da fare che possono tradursi, in parole povere, al capire se un pulsante sulla tastiera è premuto (facendo per esempio muovere il nostro alter-ego virtuale), oppure eseguire dei calcoli (per una battaglia nel nostro gioco di ruolo) e così via.</p>
<p>Dopo la fase di aggiornamento della logica, che chiameremo Update, tutto questo groviglio di dati deve essere disegnato a schermo per rendere il tutto percepibile dal giocatore. Tutto l&#8217;insieme delle operazioni legate al disegno le possiamo raggruppare in quella che è la parte, appunto, di disegno, o Draw in inglese.</p>
<p>E che metodi abbiamo appena visto? <img src='http://francescomalatesta.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Il metodo Update:</p>
<pre class="brush: csharp;">
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);
        }
</pre>
<p>All&#8217;avvio del progetto, ovviamente, il metodo sarà quasi vuoto, in quanto non abbiamo ancora definito nulla. Ed ecco che compare anche il metodo Draw:</p>
<pre class="brush: csharp;">
protected override void Draw(GameTime gameTime)
        {
            GraphicsDevice.Clear(Color.CornflowerBlue);

            // TODO: Add your drawing code here

            base.Draw(gameTime);
        }
</pre>
<p>concettualmente ci siamo, vero? L&#8217;istruzione che vedete in Draw, invece, serve a colorare la nostra schermata con un colore a scelta dell&#8217;utente. Se cambierete colore, scegliendone un&#8217;altro da passare come parametro, cambierà quindi quello della schermata.</p>
<p style="text-align: center;"><a href="http://francescomalatesta.net/wp-content/uploads/2009/12/lol.jpg"><img class="alignnone size-medium wp-image-290" title="lol" src="http://francescomalatesta.net/wp-content/uploads/2009/12/lol-300x234.jpg" alt="lol" width="300" height="234" /></a></p>
<p style="text-align: center;">(Click per Ingrandire)</p>
<p style="text-align: left;">Lo so, come inizio non è molto eccitante, ma non vi aspettate che il gioco si faccia da solo <img src='http://francescomalatesta.net/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Ffrancescomalatesta.net%2F2009%2F12%2F27%2Fe-questo-codice-inizio-e-preparazione-xna-tutorials%2F&amp;linkname=E%20Questo%20Codice%3F%20%26%238211%3B%20Inizio%20e%20Preparazione%20%26%238211%3B%20XNA%20Tutorials"><img src="http://francescomalatesta.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://francescomalatesta.net/2009/12/27/e-questo-codice-inizio-e-preparazione-xna-tutorials/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
