<?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>blog tequilarapido. &#187; Techno</title>
	<atom:link href="http://blog.tequilarapido.com/category/techno/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.tequilarapido.com</link>
	<description>Les usages numériques vus par les collaborateurs de tequilarapido.</description>
	<lastBuildDate>Thu, 09 Sep 2010 09:24:17 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Tutoriel de développement XNA / Partie II : Mon premier jeu avec XNA 4.0 (Part 4)</title>
		<link>http://blog.tequilarapido.com/2010/08/30/tutoriel-de-developpement-xna-partie-ii-mon-premier-jeu-avec-xna-4-0-part-4/</link>
		<comments>http://blog.tequilarapido.com/2010/08/30/tutoriel-de-developpement-xna-partie-ii-mon-premier-jeu-avec-xna-4-0-part-4/#comments</comments>
		<pubDate>Mon, 30 Aug 2010 12:29:07 +0000</pubDate>
		<dc:creator>yann</dc:creator>
				<category><![CDATA[L'agence]]></category>
		<category><![CDATA[Techno]]></category>

		<guid isPermaLink="false">http://blog.tequilarapido.com/?p=3226</guid>
		<description><![CDATA[Dans le chapitre précédent, nous avons vu comment faire défiler un background. Comme vous avez pu vous en rendre compte, le style du jeu se rapproche petit à petit d’un shoot’em up. C’est pourquoi, dans cette partie, nous allons apprendre à notre petit vaisseau Tequila Rapido, à faire feu.]]></description>
			<content:encoded><![CDATA[<p>Dans le chapitre précédent, nous avons vu comment faire défiler un background. Comme vous avez pu vous en rendre compte, le style du jeu se rapproche petit à petit d’un shoot’em up. C’est pourquoi, dans cette partie, nous allons apprendre à notre petit vaisseau Tequila Rapido, à faire feu.</p>
<p><span id="more-3226"></span></p>
<p>Ce chapitre va être l’occasion structurer un peu notre code, la base étant toujours la classe <strong>Sprite</strong>. Nous allons créer une classe <strong>Ship</strong> et une classe <strong>Bullet</strong> qui héritent de <strong>Sprite</strong>.</p>
<p><strong>Modifier la classe Sprite</strong></p>
<p>Pour commencer, modifiez la classe Sprite en fonction des lignes suivantes :</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #FF0000;">class</span> Sprite
<span style="color: #000000;">&#123;</span>
<span style="color: #008080; font-style: italic;">//Position actuelle du sprite</span>
<span style="color: #0600FF;">public</span> Vector2 Position <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Vector2<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">0</span>,<span style="color: #FF0000;">0</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">//Texture utilisée lors de l'affichage dans la méthode Draw</span>
<span style="color: #0600FF;">private</span> Texture2D _texture<span style="color: #008000;">;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">//Taille du Sprite</span>
<span style="color: #0600FF;">public</span> Rectangle Size<span style="color: #008000;">;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">//Utilisé pour augmenter ou diminuer la taille du Sprite</span>
<span style="color: #0600FF;">private</span> <span style="color: #FF0000;">float</span> _scale <span style="color: #008000;">=</span> 1.0f<span style="color: #008000;">;</span>
&nbsp;
<span style="color: #0600FF;">public</span> <span style="color: #FF0000;">float</span> Scale
<span style="color: #000000;">&#123;</span>
get <span style="color: #000000;">&#123;</span> <span style="color: #0600FF;">return</span> _scale<span style="color: #008000;">;</span> <span style="color: #000000;">&#125;</span>
set
<span style="color: #000000;">&#123;</span>
_scale <span style="color: #008000;">=</span> value<span style="color: #008000;">;</span>
<span style="color: #008080; font-style: italic;">//Recalule la taille du Sprite avec la nouvelle echelle (scale)</span>
Size <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Rectangle<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">0</span>, <span style="color: #FF0000;">0</span>, <span style="color: #000000;">&#40;</span><span style="color: #FF0000;">int</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#40;</span>_texture.<span style="color: #0000FF;">Width</span> <span style="color: #008000;">*</span> Scale<span style="color: #000000;">&#41;</span>, <span style="color: #000000;">&#40;</span><span style="color: #FF0000;">int</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#40;</span>_texture.<span style="color: #0000FF;">Height</span> <span style="color: #008000;">*</span> Scale<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">//Nom de l'image en ressource</span>
<span style="color: #0600FF;">public</span> <span style="color: #FF0000;">string</span> AssetName<span style="color: #008000;">;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">//Charge la texture du sprite en utilsant le ContentPipeLine</span>
<span style="color: #0600FF;">public</span> <span style="color: #0600FF;">void</span> LoadContent<span style="color: #000000;">&#40;</span>ContentManager monContentManager, <span style="color: #FF0000;">string</span> nomTexture<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
_texture <span style="color: #008000;">=</span> monContentManager.<span style="color: #0000FF;">Load</span><span style="color: #008000;">&amp;</span>lt<span style="color: #008000;">;</span>Texture2D<span style="color: #008000;">&amp;</span>gt<span style="color: #008000;">;</span><span style="color: #000000;">&#40;</span>nomTexture<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
AssetName <span style="color: #008000;">=</span> nomTexture<span style="color: #008000;">;</span>
Size <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Rectangle<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">0</span>, <span style="color: #FF0000;">0</span>, <span style="color: #000000;">&#40;</span><span style="color: #FF0000;">int</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#40;</span>_texture.<span style="color: #0000FF;">Width</span> <span style="color: #008000;">*</span> Scale<span style="color: #000000;">&#41;</span>, <span style="color: #000000;">&#40;</span><span style="color: #FF0000;">int</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#40;</span>_texture.<span style="color: #0000FF;">Height</span> <span style="color: #008000;">*</span> Scale<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #0600FF;">public</span> <span style="color: #0600FF;">void</span> Update<span style="color: #000000;">&#40;</span>GameTime theGameTime, Vector2 theSpeed, Vector2 theDirection<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
Position <span style="color: #008000;">+=</span> theDirection <span style="color: #008000;">*</span> theSpeed <span style="color: #008000;">*</span> <span style="color: #000000;">&#40;</span><span style="color: #FF0000;">float</span><span style="color: #000000;">&#41;</span>theGameTime.<span style="color: #0000FF;">ElapsedGameTime</span>.<span style="color: #0000FF;">TotalSeconds</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">//Affiche le sprite à l’écran</span>
<span style="color: #0600FF;">public</span> <span style="color: #0600FF;">virtual</span> <span style="color: #0600FF;">void</span> Draw<span style="color: #000000;">&#40;</span>SpriteBatch monSpriteBatch<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
monSpriteBatch.<span style="color: #0000FF;">Draw</span><span style="color: #000000;">&#40;</span>_texture, Position, <span style="color: #008000;">new</span> Rectangle<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">0</span>,<span style="color: #FF0000;">0</span>,_texture.<span style="color: #0000FF;">Width</span>,_texture.<span style="color: #0000FF;">Height</span><span style="color: #000000;">&#41;</span>
, Color.<span style="color: #0000FF;">White</span>,0.0f,Vector2.<span style="color: #0000FF;">Zero</span>,Scale,SpriteEffects.<span style="color: #0000FF;">None</span>,<span style="color: #FF0000;">0</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Notez le mot-clé virtual de la méthode Draw. Cela permettra de réaliser un override de cette méthode dans les classes héritées.</p>
<p><strong>Ajouter la classe Bullet</strong></p>
<p>Maintenant ajoutez la classe Bullet, celle-ci hérite de la classe Sprite et va correspondre à un tir de vaisseau. Dans cette classe nous allons gérer la vitesse du tir ainsi que son affichage en fonction sa position. C’est-à-dire que si le tire sort de l’écran on ne l’affiche plus. Il serait dommage de perdre des ressources en affichant quelque chose que l’on ne voit pas!</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #FF0000;">class</span> Bullet <span style="color: #008000;">:</span> Sprite
<span style="color: #000000;">&#123;</span>
<span style="color: #0600FF;">const</span> <span style="color: #FF0000;">int</span> MAX_DISTANCE <span style="color: #008000;">=</span> <span style="color: #FF0000;">500</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">public</span> <span style="color: #FF0000;">bool</span> Visible <span style="color: #008000;">=</span> false<span style="color: #008000;">;</span>
Vector2 _startPosition<span style="color: #008000;">;</span>
Vector2 _speed<span style="color: #008000;">;</span>
Vector2 _direction<span style="color: #008000;">;</span>
&nbsp;
<span style="color: #0600FF;">public</span> <span style="color: #0600FF;">void</span> LoadContent<span style="color: #000000;">&#40;</span>ContentManager theContentManager<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
<span style="color: #0600FF;">base</span>.<span style="color: #0000FF;">LoadContent</span><span style="color: #000000;">&#40;</span>theContentManager, <span style="color: #666666;">&quot;red_bullet&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
Scale <span style="color: #008000;">=</span> 1.0f<span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #0600FF;">public</span> <span style="color: #0600FF;">void</span> Update<span style="color: #000000;">&#40;</span>GameTime theGameTime<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>Vector2.<span style="color: #0000FF;">Distance</span><span style="color: #000000;">&#40;</span>_startPosition, Position<span style="color: #000000;">&#41;</span> <span style="color: #008000;">&amp;</span>gt<span style="color: #008000;">;</span> MAX_DISTANCE<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
Visible <span style="color: #008000;">=</span> false<span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>Visible <span style="color: #008000;">==</span> <span style="color: #0600FF;">true</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
<span style="color: #0600FF;">base</span>.<span style="color: #0000FF;">Update</span><span style="color: #000000;">&#40;</span>theGameTime, _speed, _direction<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #0600FF;">public</span> <span style="color: #0600FF;">override</span> <span style="color: #0600FF;">void</span> Draw<span style="color: #000000;">&#40;</span>SpriteBatch theSpriteBatch<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>Visible <span style="color: #008000;">==</span> <span style="color: #0600FF;">true</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
<span style="color: #0600FF;">base</span>.<span style="color: #0000FF;">Draw</span><span style="color: #000000;">&#40;</span>theSpriteBatch<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #0600FF;">public</span> <span style="color: #0600FF;">void</span> Fire<span style="color: #000000;">&#40;</span>Vector2 theStartPosition, Vector2 theSpeed, Vector2 theDirection<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
Position <span style="color: #008000;">=</span> theStartPosition<span style="color: #008000;">;</span>
_startPosition <span style="color: #008000;">=</span> theStartPosition<span style="color: #008000;">;</span>
_speed <span style="color: #008000;">=</span> theSpeed<span style="color: #008000;">;</span>
_direction <span style="color: #008000;">=</span> theDirection<span style="color: #008000;">;</span>
Visible <span style="color: #008000;">=</span> true<span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Comme vous pouvez le constater, la méthode Draw  de notre classe <strong>Bullet </strong>remplace celle de la classe <strong>Sprite</strong>. On ne lance la méthode Draw de la classe Sprite uniquement si notre objet Bullet est visible ou du moins si la distance parcourue est inférieure à MAX_DISTANCE.</p>
<p><strong>Ajouter la classe Ship</strong></p>
<p>Nous allons maintenant ajouter la classe <strong>Ship</strong> qui elle aussi hérite de la classe <strong>Sprite</strong>. La classe Ship représente le vaisseau et possède dans ses propriétés une liste de Bullet, ainsi on peut savoir à qui appartiennent les tirs.</p>
<p>Commencez par ajouter ces quelques lignes en haut de la classe</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #FF0000;">class</span> Ship <span style="color: #008000;">:</span>Sprite
<span style="color: #000000;">&#123;</span>
<span style="color: #0600FF;">const</span> <span style="color: #FF0000;">string</span> SHIP_ASSETNAME <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;logo_HD&quot;</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">const</span> <span style="color: #FF0000;">int</span> START_POSITION_X <span style="color: #008000;">=</span> <span style="color: #FF0000;">240</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">const</span> <span style="color: #FF0000;">int</span> START_POSITION_Y <span style="color: #008000;">=</span> <span style="color: #FF0000;">400</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">const</span> <span style="color: #FF0000;">int</span> SHIP_SPEED <span style="color: #008000;">=</span> <span style="color: #FF0000;">160</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">const</span> <span style="color: #FF0000;">int</span> MOVE_UP <span style="color: #008000;">=</span> <span style="color: #008000;">-</span><span style="color: #FF0000;">1</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">const</span> <span style="color: #FF0000;">int</span> MOVE_DOWN <span style="color: #008000;">=</span> <span style="color: #FF0000;">1</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">const</span> <span style="color: #FF0000;">int</span> MOVE_LEFT <span style="color: #008000;">=</span> <span style="color: #008000;">-</span><span style="color: #FF0000;">1</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">const</span> <span style="color: #FF0000;">int</span> MOVE_RIGHT <span style="color: #008000;">=</span> <span style="color: #FF0000;">1</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">const</span> <span style="color: #FF0000;">int</span> BackBufferWidth <span style="color: #008000;">=</span> Game1.<span style="color: #0000FF;">BackBufferWidth</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">const</span> <span style="color: #FF0000;">int</span> BackBufferHeight <span style="color: #008000;">=</span> Game1.<span style="color: #0000FF;">BackBufferHeight</span><span style="color: #008000;">;</span>
&nbsp;
<span style="color: #FF0000;">enum</span> State
<span style="color: #000000;">&#123;</span>
Moving
<span style="color: #000000;">&#125;</span>
&nbsp;
State _currentState <span style="color: #008000;">=</span> State.<span style="color: #0000FF;">Moving</span><span style="color: #008000;">;</span>
Vector2 _direction <span style="color: #008000;">=</span> Vector2.<span style="color: #0000FF;">Zero</span><span style="color: #008000;">;</span>
Vector2 _speed <span style="color: #008000;">=</span> Vector2.<span style="color: #0000FF;">Zero</span><span style="color: #008000;">;</span>
TouchCollection _previousTouchCollection<span style="color: #008000;">;</span>
List _bullets <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> List<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
ContentManager _contentManager<span style="color: #008000;">;</span></pre></div></div>

<p>Les constantes (position de départ, vitesse max , etc) ainsi que l’état (State) serviront à définir le comportement du vaisseau. Le vaisseau possède également une liste de <strong>Bullet</strong> correspondant aux tirs.</p>
<p>Dans la méthode LoadContent, nous allons charger les textures, initialiser la position du vaisseau et récupérer l’état de l’écran (via TouchPanel). Ajoutez les lignes suivantes :</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF;">public</span> <span style="color: #0600FF;">void</span> LoadContent<span style="color: #000000;">&#40;</span>ContentManager theContentManager<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
_contentManager <span style="color: #008000;">=</span> theContentManager<span style="color: #008000;">;</span>
<span style="color: #0600FF;">foreach</span> <span style="color: #000000;">&#40;</span>Bullet aBullet <span style="color: #0600FF;">in</span> _bullets<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
aBullet.<span style="color: #0000FF;">LoadContent</span><span style="color: #000000;">&#40;</span>theContentManager<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
Position <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Vector2<span style="color: #000000;">&#40;</span>START_POSITION_X, START_POSITION_Y<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">base</span>.<span style="color: #0000FF;">LoadContent</span><span style="color: #000000;">&#40;</span>theContentManager, SHIP_ASSETNAME<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
_previousTouchCollection <span style="color: #008000;">=</span> TouchPanel.<span style="color: #0000FF;">GetState</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Vous remarquerez cette ligne base.LoadContent(theContentManager, SHIP_ASSETNAME). Elle permet de faire appel à la méthode LoadContent de la classe mère autrement dit la classe <strong>Sprite.</strong></p>
<p>Nous allons à présent ajouter la méthode Update.</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF;">public</span> <span style="color: #0600FF;">void</span> Update<span style="color: #000000;">&#40;</span>GameTime theGameTime<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
TouchCollection _currentTouchCollection <span style="color: #008000;">=</span> TouchPanel.<span style="color: #0000FF;">GetState</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
UpdateMovement<span style="color: #000000;">&#40;</span>_currentTouchCollection<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
UpdateBullet<span style="color: #000000;">&#40;</span>theGameTime, _currentTouchCollection<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
_previousTouchCollection <span style="color: #008000;">=</span> _currentTouchCollection<span style="color: #008000;">;</span>
<span style="color: #0600FF;">base</span>.<span style="color: #0000FF;">Update</span><span style="color: #000000;">&#40;</span>theGameTime, _speed, _direction<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>La première chose à faire est de mettre à jour l’état de l’écran pour pouvoir gérer les commandes (Déplacement). C’est ce que font les deux premières lignes. La méthode UpdateMovement sera détaillée dans quelques secondes suivie de la méthode UpdateBullet. La 4<sup>e</sup> ligne  permettra de comparer au prochain tour de boucle, l’état actuel et l’état précédent.</p>
<p>Voilà la méthode UpdateMovement. Ajoutez la à votre code.</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF;">private</span> <span style="color: #0600FF;">void</span> UpdateMovement<span style="color: #000000;">&#40;</span>TouchCollection _currentTouchCollection<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
<span style="color: #FF0000;">bool</span> buttonTouched <span style="color: #008000;">=</span> false<span style="color: #008000;">;</span>
<span style="color: #008080; font-style: italic;">//interprete le touch sur l'écran</span>
<span style="color: #0600FF;">foreach</span> <span style="color: #000000;">&#40;</span>TouchLocation location <span style="color: #0600FF;">in</span> _currentTouchCollection<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
<span style="color: #0600FF;">switch</span> <span style="color: #000000;">&#40;</span>location.<span style="color: #0000FF;">State</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
<span style="color: #0600FF;">case</span> TouchLocationState.<span style="color: #0000FF;">Pressed</span><span style="color: #008000;">:</span>
buttonTouched <span style="color: #008000;">=</span> true<span style="color: #008000;">;</span>
break<span style="color: #008000;">;</span>
<span style="color: #0600FF;">case</span> TouchLocationState.<span style="color: #0000FF;">Moved</span><span style="color: #008000;">:</span>
buttonTouched <span style="color: #008000;">=</span> true<span style="color: #008000;">;</span>
break<span style="color: #008000;">;</span>
<span style="color: #0600FF;">case</span> TouchLocationState.<span style="color: #0000FF;">Released</span><span style="color: #008000;">:</span>
break<span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>_currentState <span style="color: #008000;">==</span> State.<span style="color: #0000FF;">Moving</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
_speed <span style="color: #008000;">=</span> Vector2.<span style="color: #0000FF;">Zero</span><span style="color: #008000;">;</span>
_direction <span style="color: #008000;">=</span> Vector2.<span style="color: #0000FF;">Zero</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>buttonTouched<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>_currentTouchCollection<span style="color: #000000;">&#91;</span><span style="color: #FF0000;">0</span><span style="color: #000000;">&#93;</span>.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">&amp;</span>lt<span style="color: #008000;">;</span> <span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">&amp;</span>amp<span style="color: #008000;">;&amp;</span>amp<span style="color: #008000;">;</span> <span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">&amp;</span>gt<span style="color: #008000;">;</span> <span style="color: #FF0000;">0</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
_speed.<span style="color: #0000FF;">X</span> <span style="color: #008000;">=</span> SHIP_SPEED<span style="color: #008000;">;</span>
_direction.<span style="color: #0000FF;">X</span> <span style="color: #008000;">=</span> MOVE_LEFT<span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>_currentTouchCollection<span style="color: #000000;">&#91;</span><span style="color: #FF0000;">0</span><span style="color: #000000;">&#93;</span>.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">&amp;</span>gt<span style="color: #008000;">;</span> <span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">&amp;</span>amp<span style="color: #008000;">;&amp;</span>amp<span style="color: #008000;">;</span> <span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">&amp;</span>lt<span style="color: #008000;">;</span> BackBufferWidth <span style="color: #008000;">-</span> <span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Width</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
_speed.<span style="color: #0000FF;">X</span> <span style="color: #008000;">=</span> SHIP_SPEED<span style="color: #008000;">;</span>
_direction.<span style="color: #0000FF;">X</span> <span style="color: #008000;">=</span> MOVE_RIGHT<span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>_currentTouchCollection<span style="color: #000000;">&#91;</span><span style="color: #FF0000;">0</span><span style="color: #000000;">&#93;</span>.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">Y</span> <span style="color: #008000;">&amp;</span>lt<span style="color: #008000;">;</span> <span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">Y</span> <span style="color: #008000;">&amp;</span>amp<span style="color: #008000;">;&amp;</span>amp<span style="color: #008000;">;</span> <span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">Y</span> <span style="color: #008000;">&amp;</span>gt<span style="color: #008000;">;</span> <span style="color: #FF0000;">0</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
_speed.<span style="color: #0000FF;">Y</span> <span style="color: #008000;">=</span> SHIP_SPEED<span style="color: #008000;">;</span>
_direction.<span style="color: #0000FF;">Y</span> <span style="color: #008000;">=</span> MOVE_UP<span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>_currentTouchCollection<span style="color: #000000;">&#91;</span><span style="color: #FF0000;">0</span><span style="color: #000000;">&#93;</span>.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">Y</span> <span style="color: #008000;">&amp;</span>gt<span style="color: #008000;">;</span> <span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">Y</span> <span style="color: #008000;">&amp;</span>amp<span style="color: #008000;">;&amp;</span>amp<span style="color: #008000;">;</span> <span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">Y</span> <span style="color: #008000;">&amp;</span>lt<span style="color: #008000;">;</span> BackBufferHeight <span style="color: #008000;">-</span> <span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Height</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
_speed.<span style="color: #0000FF;">Y</span> <span style="color: #008000;">=</span> SHIP_SPEED<span style="color: #008000;">;</span>
_direction.<span style="color: #0000FF;">Y</span> <span style="color: #008000;">=</span> MOVE_DOWN<span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>La première partie de la méthode détermine la nature des « touch » sur l’écran et la seconde partie permet de déplacer le vaisseau en fonction de la position du « touch » sur l’écran.</p>
<p>Nous allons maintenant passer à la méthode UpdateBullet qui va mettre à jour la liste de <strong>Bullet </strong>en fonction du TouchPanel. Ajoutez ces lignes :</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF;">private</span> <span style="color: #0600FF;">void</span> UpdateBullet<span style="color: #000000;">&#40;</span>GameTime theGameTime, TouchCollection aCurrentTouchCollection<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
<span style="color: #0600FF;">foreach</span> <span style="color: #000000;">&#40;</span>Bullet aBullet <span style="color: #0600FF;">in</span> _bullets<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
aBullet.<span style="color: #0000FF;">Update</span><span style="color: #000000;">&#40;</span>theGameTime<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #FF0000;">bool</span> buttonTouched <span style="color: #008000;">=</span> false<span style="color: #008000;">;</span>
<span style="color: #008080; font-style: italic;">//interprete le touch sur l'écran</span>
<span style="color: #0600FF;">foreach</span> <span style="color: #000000;">&#40;</span>TouchLocation location <span style="color: #0600FF;">in</span> aCurrentTouchCollection<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
<span style="color: #0600FF;">switch</span> <span style="color: #000000;">&#40;</span>location.<span style="color: #0000FF;">State</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
<span style="color: #0600FF;">case</span> TouchLocationState.<span style="color: #0000FF;">Pressed</span><span style="color: #008000;">:</span>
buttonTouched <span style="color: #008000;">=</span> true<span style="color: #008000;">;</span>
break<span style="color: #008000;">;</span>
<span style="color: #0600FF;">case</span> TouchLocationState.<span style="color: #0000FF;">Moved</span><span style="color: #008000;">:</span>
buttonTouched <span style="color: #008000;">=</span> true<span style="color: #008000;">;</span>
break<span style="color: #008000;">;</span>
<span style="color: #0600FF;">case</span> TouchLocationState.<span style="color: #0000FF;">Released</span><span style="color: #008000;">:</span>
break<span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>buttonTouched<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>aCurrentTouchCollection<span style="color: #000000;">&#91;</span><span style="color: #FF0000;">0</span><span style="color: #000000;">&#93;</span>.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">&amp;</span>gt<span style="color: #008000;">;</span> <span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">&amp;</span>amp<span style="color: #008000;">;&amp;</span>amp<span style="color: #008000;">;</span> <span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">&amp;</span>lt<span style="color: #008000;">;</span> BackBufferWidth <span style="color: #008000;">-</span> <span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Width</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
ShootBullet<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Comme pour la méthode UpdateMovement, la première partie du code permet de déterminer la nature des « touch ». La seconde partie fait tirer le vaisseau (ShootBullet) si ce dernier se déplace vers l’avant.</p>
<p>Et voici le code la méthode ShootBullet :</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF;">private</span> <span style="color: #0600FF;">void</span> ShootBullet<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>_currentState <span style="color: #008000;">==</span> State.<span style="color: #0000FF;">Moving</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
<span style="color: #FF0000;">bool</span> aCreateNew <span style="color: #008000;">=</span> true<span style="color: #008000;">;</span>
<span style="color: #0600FF;">foreach</span> <span style="color: #000000;">&#40;</span>Bullet aBullet <span style="color: #0600FF;">in</span> _bullets<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>aBullet.<span style="color: #0000FF;">Visible</span> <span style="color: #008000;">==</span> <span style="color: #0600FF;">false</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
aCreateNew <span style="color: #008000;">=</span> false<span style="color: #008000;">;</span>
aBullet.<span style="color: #0000FF;">Fire</span><span style="color: #000000;">&#40;</span>Position <span style="color: #008000;">+</span> <span style="color: #008000;">new</span> Vector2<span style="color: #000000;">&#40;</span>Size.<span style="color: #0000FF;">Width</span> <span style="color: #008000;">/</span> <span style="color: #FF0000;">2</span>, Size.<span style="color: #0000FF;">Height</span> <span style="color: #008000;">/</span> <span style="color: #FF0000;">2</span><span style="color: #000000;">&#41;</span>,
<span style="color: #008000;">new</span> Vector2<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">200</span>, <span style="color: #FF0000;">0</span><span style="color: #000000;">&#41;</span>, <span style="color: #008000;">new</span> Vector2<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">1</span>, <span style="color: #FF0000;">0</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
break<span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>aCreateNew <span style="color: #008000;">==</span> <span style="color: #0600FF;">true</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
Bullet aFireball <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Bullet<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
aFireball.<span style="color: #0000FF;">LoadContent</span><span style="color: #000000;">&#40;</span>_contentManager<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
aFireball.<span style="color: #0000FF;">Fire</span><span style="color: #000000;">&#40;</span>Position <span style="color: #008000;">+</span> <span style="color: #008000;">new</span> Vector2<span style="color: #000000;">&#40;</span>Size.<span style="color: #0000FF;">Width</span> <span style="color: #008000;">/</span> <span style="color: #FF0000;">2</span>, Size.<span style="color: #0000FF;">Height</span> <span style="color: #008000;">/</span> <span style="color: #FF0000;">2</span><span style="color: #000000;">&#41;</span>,
<span style="color: #008000;">new</span> Vector2<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">200</span>, <span style="color: #FF0000;">200</span><span style="color: #000000;">&#41;</span>, <span style="color: #008000;">new</span> Vector2<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">1</span>, <span style="color: #FF0000;">0</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
_bullets.<span style="color: #0000FF;">Add</span><span style="color: #000000;">&#40;</span>aFireball<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Si un des <strong>Bullet</strong> se trouve en dehors de l’écran, plutôt que d’en créer un nouveau, on le déplace au niveau du vaisseau sans que le joueur ne s’en aperçoive. Ceci permet d’économiser de la ressource en évitant de créer infiniment de nouveaux objets à chaque tir. Dans le cas où aucun <strong>Bullet</strong> ne se trouve en dehors de l’écran, on crée un nouvel objet.</p>
<p>Enfin, il reste à ajouter la méthode Draw dans laquelle nous faire appel à la méthode Draw de chaque <strong>Bullet </strong>du vaisseau. Ajoutez ces lignes :</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF;">public</span> <span style="color: #0600FF;">override</span> <span style="color: #0600FF;">void</span> Draw<span style="color: #000000;">&#40;</span>SpriteBatch theSpriteBatch<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
<span style="color: #0600FF;">foreach</span> <span style="color: #000000;">&#40;</span>Bullet aBullet <span style="color: #0600FF;">in</span> _bullets<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
aBullet.<span style="color: #0000FF;">Draw</span><span style="color: #000000;">&#40;</span>theSpriteBatch<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #0600FF;">base</span>.<span style="color: #0000FF;">Draw</span><span style="color: #000000;">&#40;</span>theSpriteBatch<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Voilà pour ce qui est de la classe <strong>Ship</strong>, le plus gros du travail est fait.</p>
<p><strong>Modifier la classe Game1</strong></p>
<p>Nous allons maintenant modifier la classe Game1 pour qu’elle s’occupe de coordonner tout le reste. Elle s’occupe toujours de faire défiler le Background. Modifiez la classe <strong>Game1</strong> en fonction des lignes suivantes, il n’y a pas beaucoup de changements à faire :</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF;">public</span> <span style="color: #FF0000;">class</span> Game1 <span style="color: #008000;">:</span> Microsoft.<span style="color: #0000FF;">Xna</span>.<span style="color: #0000FF;">Framework</span>.<span style="color: #0000FF;">Game</span>
<span style="color: #000000;">&#123;</span>
GraphicsDeviceManager graphics<span style="color: #008000;">;</span>
SpriteBatch spriteBatch<span style="color: #008000;">;</span>
Ship monVaisseau<span style="color: #008000;">;</span>
&nbsp;
Sprite BackgroundOne<span style="color: #008000;">;</span>
Sprite BackgroundTwo<span style="color: #008000;">;</span>
Sprite BackgroundThree<span style="color: #008000;">;</span>
Sprite BackgroundFour<span style="color: #008000;">;</span>
Sprite BackgroundFive<span style="color: #008000;">;</span>
&nbsp;
TouchCollection touchCollection<span style="color: #008000;">;</span>
&nbsp;
<span style="color: #0600FF;">public</span> <span style="color: #0600FF;">const</span> <span style="color: #FF0000;">int</span> BackBufferWidth <span style="color: #008000;">=</span> <span style="color: #FF0000;">480</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">public</span> <span style="color: #0600FF;">const</span> <span style="color: #FF0000;">int</span> BackBufferHeight <span style="color: #008000;">=</span> <span style="color: #FF0000;">800</span><span style="color: #008000;">;</span>
&nbsp;
<span style="color: #0600FF;">public</span> Game1<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
graphics <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> GraphicsDeviceManager<span style="color: #000000;">&#40;</span><span style="color: #0600FF;">this</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
Content.<span style="color: #0000FF;">RootDirectory</span> <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;Content&quot;</span><span style="color: #008000;">;</span>
graphics.<span style="color: #0000FF;">PreferredBackBufferWidth</span> <span style="color: #008000;">=</span> BackBufferWidth<span style="color: #008000;">;</span>
graphics.<span style="color: #0000FF;">PreferredBackBufferHeight</span> <span style="color: #008000;">=</span> BackBufferHeight<span style="color: #008000;">;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">// Frame rate is 30 fps by default for Windows Phone.</span>
TargetElapsedTime <span style="color: #008000;">=</span> TimeSpan.<span style="color: #0000FF;">FromTicks</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">333333</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #0600FF;">protected</span> <span style="color: #0600FF;">override</span> <span style="color: #0600FF;">void</span> Initialize<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
<span style="color: #008080; font-style: italic;">// TODO: Add your initialization logic here</span>
touchCollection <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> TouchCollection<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
monVaisseau <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Ship<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
BackgroundOne <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Sprite<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
BackgroundTwo <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Sprite<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
BackgroundThree <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Sprite<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
BackgroundFour <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Sprite<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
BackgroundFive <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Sprite<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">base</span>.<span style="color: #0000FF;">Initialize</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #0600FF;">protected</span> <span style="color: #0600FF;">override</span> <span style="color: #0600FF;">void</span> LoadContent<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
<span style="color: #008080; font-style: italic;">// Create a new SpriteBatch, which can be used to draw textures.</span>
spriteBatch <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> SpriteBatch<span style="color: #000000;">&#40;</span>GraphicsDevice<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
monVaisseau.<span style="color: #0000FF;">LoadContent</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">Content</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
monVaisseau.<span style="color: #0000FF;">Scale</span> <span style="color: #008000;">=</span> 2.0f<span style="color: #008000;">;</span>
&nbsp;
BackgroundOne.<span style="color: #0000FF;">LoadContent</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">Content</span>, <span style="color: #666666;">&quot;BackgroundOne&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
BackgroundOne.<span style="color: #0000FF;">Position</span> <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Vector2<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">0</span>, <span style="color: #FF0000;">0</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
BackgroundTwo.<span style="color: #0000FF;">LoadContent</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">Content</span>, <span style="color: #666666;">&quot;BackgroundTwo&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
BackgroundTwo.<span style="color: #0000FF;">Position</span> <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Vector2<span style="color: #000000;">&#40;</span>BackgroundOne.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">+</span> BackgroundOne.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Width</span>, <span style="color: #FF0000;">0</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
BackgroundThree.<span style="color: #0000FF;">LoadContent</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">Content</span>, <span style="color: #666666;">&quot;BackgroundThree&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
BackgroundThree.<span style="color: #0000FF;">Position</span> <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Vector2<span style="color: #000000;">&#40;</span>BackgroundTwo.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">+</span> BackgroundTwo.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Width</span>, <span style="color: #FF0000;">0</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
BackgroundFour.<span style="color: #0000FF;">LoadContent</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">Content</span>, <span style="color: #666666;">&quot;BackgroundFour&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
BackgroundFour.<span style="color: #0000FF;">Position</span> <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Vector2<span style="color: #000000;">&#40;</span>BackgroundThree.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">+</span> BackgroundThree.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Width</span>, <span style="color: #FF0000;">0</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
BackgroundFive.<span style="color: #0000FF;">LoadContent</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">Content</span>, <span style="color: #666666;">&quot;BackgroundFive&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
BackgroundFive.<span style="color: #0000FF;">Position</span> <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Vector2<span style="color: #000000;">&#40;</span>BackgroundFour.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">+</span> BackgroundFour.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Width</span>, <span style="color: #FF0000;">0</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #0600FF;">protected</span> <span style="color: #0600FF;">override</span> <span style="color: #0600FF;">void</span> UnloadContent<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
<span style="color: #008080; font-style: italic;">// TODO: Unload any non ContentManager content here</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #0600FF;">protected</span> <span style="color: #0600FF;">override</span> <span style="color: #0600FF;">void</span> Update<span style="color: #000000;">&#40;</span>GameTime gameTime<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
<span style="color: #008080; font-style: italic;">// Allows the game to exit</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>GamePad.<span style="color: #0000FF;">GetState</span><span style="color: #000000;">&#40;</span>PlayerIndex.<span style="color: #0000FF;">One</span><span style="color: #000000;">&#41;</span>.<span style="color: #0000FF;">Buttons</span>.<span style="color: #0000FF;">Back</span> <span style="color: #008000;">==</span> ButtonState.<span style="color: #0000FF;">Pressed</span><span style="color: #000000;">&#41;</span>
<span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">Exit</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
monVaisseau.<span style="color: #0000FF;">Update</span><span style="color: #000000;">&#40;</span>gameTime<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>BackgroundOne.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">&amp;</span>lt<span style="color: #008000;">;</span> <span style="color: #008000;">-</span>BackgroundOne.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Width</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
BackgroundOne.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">=</span> BackgroundFive.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">+</span> BackgroundFive.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Width</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>BackgroundTwo.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">&amp;</span>lt<span style="color: #008000;">;</span> <span style="color: #008000;">-</span>BackgroundTwo.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Width</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
BackgroundTwo.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">=</span> BackgroundOne.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">+</span> BackgroundOne.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Width</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>BackgroundThree.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">&amp;</span>lt<span style="color: #008000;">;</span> <span style="color: #008000;">-</span>BackgroundThree.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Width</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
BackgroundThree.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">=</span> BackgroundTwo.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">+</span> BackgroundTwo.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Width</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>BackgroundFour.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">&amp;</span>lt<span style="color: #008000;">;</span> <span style="color: #008000;">-</span>BackgroundFour.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Width</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
BackgroundFour.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">=</span> BackgroundThree.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">+</span> BackgroundThree.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Width</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>BackgroundFive.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">&amp;</span>lt<span style="color: #008000;">;</span> <span style="color: #008000;">-</span>BackgroundFive.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Width</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
BackgroundFive.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">=</span> BackgroundFour.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">+</span> BackgroundFour.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Width</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
Vector2 aDirection <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Vector2<span style="color: #000000;">&#40;</span><span style="color: #008000;">-</span><span style="color: #FF0000;">1</span>, <span style="color: #FF0000;">0</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
Vector2 aSpeed <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Vector2<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">160</span>, <span style="color: #FF0000;">0</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
BackgroundOne.<span style="color: #0000FF;">Position</span> <span style="color: #008000;">+=</span> aDirection <span style="color: #008000;">*</span> aSpeed <span style="color: #008000;">*</span> <span style="color: #000000;">&#40;</span><span style="color: #FF0000;">float</span><span style="color: #000000;">&#41;</span>gameTime.<span style="color: #0000FF;">ElapsedGameTime</span>.<span style="color: #0000FF;">TotalSeconds</span><span style="color: #008000;">;</span>
BackgroundTwo.<span style="color: #0000FF;">Position</span> <span style="color: #008000;">+=</span> aDirection <span style="color: #008000;">*</span> aSpeed <span style="color: #008000;">*</span> <span style="color: #000000;">&#40;</span><span style="color: #FF0000;">float</span><span style="color: #000000;">&#41;</span>gameTime.<span style="color: #0000FF;">ElapsedGameTime</span>.<span style="color: #0000FF;">TotalSeconds</span><span style="color: #008000;">;</span>
BackgroundThree.<span style="color: #0000FF;">Position</span> <span style="color: #008000;">+=</span> aDirection <span style="color: #008000;">*</span> aSpeed <span style="color: #008000;">*</span> <span style="color: #000000;">&#40;</span><span style="color: #FF0000;">float</span><span style="color: #000000;">&#41;</span>gameTime.<span style="color: #0000FF;">ElapsedGameTime</span>.<span style="color: #0000FF;">TotalSeconds</span><span style="color: #008000;">;</span>
BackgroundFour.<span style="color: #0000FF;">Position</span> <span style="color: #008000;">+=</span> aDirection <span style="color: #008000;">*</span> aSpeed <span style="color: #008000;">*</span> <span style="color: #000000;">&#40;</span><span style="color: #FF0000;">float</span><span style="color: #000000;">&#41;</span>gameTime.<span style="color: #0000FF;">ElapsedGameTime</span>.<span style="color: #0000FF;">TotalSeconds</span><span style="color: #008000;">;</span>
BackgroundFive.<span style="color: #0000FF;">Position</span> <span style="color: #008000;">+=</span> aDirection <span style="color: #008000;">*</span> aSpeed <span style="color: #008000;">*</span> <span style="color: #000000;">&#40;</span><span style="color: #FF0000;">float</span><span style="color: #000000;">&#41;</span>gameTime.<span style="color: #0000FF;">ElapsedGameTime</span>.<span style="color: #0000FF;">TotalSeconds</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">base</span>.<span style="color: #0000FF;">Update</span><span style="color: #000000;">&#40;</span>gameTime<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #0600FF;">protected</span> <span style="color: #0600FF;">override</span> <span style="color: #0600FF;">void</span> Draw<span style="color: #000000;">&#40;</span>GameTime gameTime<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
GraphicsDevice.<span style="color: #0000FF;">Clear</span><span style="color: #000000;">&#40;</span>Color.<span style="color: #0000FF;">CornflowerBlue</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
spriteBatch.<span style="color: #0000FF;">Begin</span><span style="color: #000000;">&#40;</span>SpriteSortMode.<span style="color: #0000FF;">Immediate</span>, BlendState.<span style="color: #0000FF;">AlphaBlend</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
BackgroundOne.<span style="color: #0000FF;">Draw</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">spriteBatch</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
BackgroundTwo.<span style="color: #0000FF;">Draw</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">spriteBatch</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
BackgroundThree.<span style="color: #0000FF;">Draw</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">spriteBatch</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
BackgroundFour.<span style="color: #0000FF;">Draw</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">spriteBatch</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
BackgroundFive.<span style="color: #0000FF;">Draw</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">spriteBatch</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
monVaisseau.<span style="color: #0000FF;">Draw</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">spriteBatch</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
spriteBatch.<span style="color: #0000FF;">End</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
<span style="color: #0600FF;">base</span>.<span style="color: #0000FF;">Draw</span><span style="color: #000000;">&#40;</span>gameTime<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Et voilà, c’est terminé. Lancez un Debug et lorsque vous vous déplacez d’arrière en avant vous devriez voir le vaisseau Tequila apparaître à l’écran tirant des boules de feu !</p>
<div id="attachment_3227" class="wp-caption alignnone" style="width: 310px"><a href="http://blog.tequilarapido.com/wp-content/uploads/2010/08/Shoot.png"><img class="size-full wp-image-3227" title="Shoot" src="http://blog.tequilarapido.com/wp-content/uploads/2010/08/Shoot.png" alt="tequilashoot" width="300" height="552" /></a><p class="wp-caption-text">tequilashoot</p></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.tequilarapido.com/2010/08/30/tutoriel-de-developpement-xna-partie-ii-mon-premier-jeu-avec-xna-4-0-part-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tutoriel de développement XNA / Partie II : Mon premier jeu avec XNA 4.0 (Part 3)</title>
		<link>http://blog.tequilarapido.com/2010/08/17/tutoriel-de-developpement-xna-partie-ii-mon-premier-jeu-avec-xna-4-0-part-3/</link>
		<comments>http://blog.tequilarapido.com/2010/08/17/tutoriel-de-developpement-xna-partie-ii-mon-premier-jeu-avec-xna-4-0-part-3/#comments</comments>
		<pubDate>Tue, 17 Aug 2010 16:52:51 +0000</pubDate>
		<dc:creator>yann</dc:creator>
				<category><![CDATA[L'agence]]></category>
		<category><![CDATA[Techno]]></category>

		<guid isPermaLink="false">http://blog.tequilarapido.com/?p=3190</guid>
		<description><![CDATA[Si vous souhaitez réaliser  un jeu 2D, à un moment ou à un autre vous aurez besoin de créer un Background défilant. Ce tutoriel va vous apprendre à créer un Background défilant horizontalement en auto-scroll, un peu dans le genre shoot’em up, mais le même principe peut-être utilisé pour un jeu de plateforme par exemple.]]></description>
			<content:encoded><![CDATA[<p>Si vous souhaitez réaliser  un jeu 2D, à un moment ou à un autre vous aurez besoin de créer un Background défilant. Ce tutoriel va vous apprendre à créer un Background défilant horizontalement en auto-scroll, un peu dans le genre shoot’em up, mais le même principe peut-être utilisé pour un jeu de plateforme par exemple.</p>
<p><span id="more-3190"></span></p>
<p>Nous allons réutiliser la classe <strong>Sprite</strong> que nous avions créé dans la partie précédente en la modifiant un peu. Ouvrez la solution « MonPermierJeu ».</p>
<p><strong>Ajouter les images</strong></p>
<p>Maintenant ajoutons les images des backgrounds que nous allons utiliser. Vous pouvez télécharger les images du projet ici. Une fois les images téléchargées. Ajoutez-les au projet Content. Si vous ne vous souvenez plus comment faire, consultez la partie précédente pour rafraichir la mémoire : Mon premier jeu avec XNA 4.0 (Part 2).</p>
<p><strong>Modifier la classe Sprite</strong></p>
<p>Pour commencer nous allons faire quelques modifications sur la classe <strong>Sprite. </strong>Ces modifications vont rendre la classe un peu plus souple et  nous permettre d’ajouter plus simplement les backgrounds.</p>
<p>Ajoutez les lignes suivantes en haut de la classe <strong>Sprite</strong>.</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #008080; font-style: italic;">//Taille du Sprite</span>
<span style="color: #0600FF;">public</span> Rectangle Size<span style="color: #008000;">;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">//Utilisé pour augmenter ou diminuer la taille du Sprite</span>
<span style="color: #0600FF;">public</span> <span style="color: #FF0000;">float</span> Scale <span style="color: #008000;">=</span> 1.0f<span style="color: #008000;">;</span></pre></div></div>

<p>L’objet Size nous permettra de connaitre la hauteur et la largeur de notre sprite et l’objet Scale permet d’augmenter ou diminuer proportionnellement la taille du sprite.</p>
<p>Ensuite nous allons modifier la méthode <strong>LoadContent </strong>pour calculer et initialiser la taille de notre sprite. Modifiez la méthode LoadContent comme suit.</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #008080; font-style: italic;">//Charge la texture du sprite en utilsant le ContentPipeLine</span>
<span style="color: #0600FF;">public</span> <span style="color: #0600FF;">void</span> LoadContent<span style="color: #000000;">&#40;</span>ContentManager monContentManager, <span style="color: #FF0000;">string</span> nomTexture<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
_texture <span style="color: #008000;">=</span> monContentManager.<span style="color: #0000FF;">Load</span><span style="color: #000000;">&#40;</span>nomTexture<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
Size <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Rectangle<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">0</span>, <span style="color: #FF0000;">0</span>, <span style="color: #000000;">&#40;</span><span style="color: #FF0000;">int</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#40;</span>_texture.<span style="color: #0000FF;">Width</span> <span style="color: #008000;">*</span> Scale<span style="color: #000000;">&#41;</span>, <span style="color: #000000;">&#40;</span><span style="color: #FF0000;">int</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#40;</span>_texture.<span style="color: #0000FF;">Height</span> <span style="color: #008000;">*</span> Scale<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Supprimez la méthode Update de la classe <strong>Sprite</strong> car celle-ci n’est pas adaptée aux backgrounds. Nous coderons la logique de jeu dans la méthode Update de la classe <strong>Game1</strong>.</p>
<p>Ensuite nous voulons utiliser une des nombreuses méthodes d’override du SpriteBatch dans la méthode Draw. Appliquez les modifications.</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #008080; font-style: italic;">//Affiche le sprite à l’écran</span>
<span style="color: #0600FF;">public</span> <span style="color: #0600FF;">void</span> Draw<span style="color: #000000;">&#40;</span>SpriteBatch monSpriteBatch<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
monSpriteBatch.<span style="color: #0000FF;">Draw</span><span style="color: #000000;">&#40;</span>_texture, Position, <span style="color: #008000;">new</span> Rectangle<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">0</span>,<span style="color: #FF0000;">0</span>,_texture.<span style="color: #0000FF;">Width</span>,_texture.<span style="color: #0000FF;">Height</span><span style="color: #000000;">&#41;</span>
, Color.<span style="color: #0000FF;">White</span>,0.0f,Vector2.<span style="color: #0000FF;">Zero</span>,Scale,SpriteEffects.<span style="color: #0000FF;">None</span>,<span style="color: #FF0000;">0</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Faite un rapide Debug pour voir si tout compile bien.</p>
<p>Maintenant que tout le travail sur la classe Sprite a été fait, nous allons pouvoir ajouter les backgrounds défilants au projet.</p>
<p>Commençons par ajouter de nouveaux sprites à la classe <strong>Game1.cs. </strong>Ajoutez les objets suivants en haut de la classe.</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">Sprite BackgroundOne<span style="color: #008000;">;</span>
Sprite BackgroundTwo<span style="color: #008000;">;</span>
Sprite BackgroundThree<span style="color: #008000;">;</span>
Sprite BackgroundFour<span style="color: #008000;">;</span>
Sprite BackgroundFive<span style="color: #008000;">;</span></pre></div></div>

<p>Ces objets Sprite seront utilisés pour faire défiler les images de background sur l’écran.</p>
<p>A présent, initialisez  les nouveaux Sprite. La taille originale du logo étant un peu petite nous allons pouvoir l’augmenter à l’écran grâce à la propriété Scale.</p>
<p>Modifiez la méthode <strong>Initialize</strong>.</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF;">protected</span> <span style="color: #0600FF;">override</span> <span style="color: #0600FF;">void</span> Initialize<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
<span style="color: #008080; font-style: italic;">// TODO: Add your initialization logic here</span>
touchCollection <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> TouchCollection<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
logo <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Sprite<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
logo.<span style="color: #0000FF;">Scale</span> <span style="color: #008000;">=</span> 2.0f<span style="color: #008000;">;</span>
&nbsp;
BackgroundOne <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Sprite<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
BackgroundTwo <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Sprite<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
BackgroundThree <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Sprite<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
BackgroundFour <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Sprite<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
BackgroundFive <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Sprite<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
<span style="color: #0600FF;">base</span>.<span style="color: #0000FF;">Initialize</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Maintenant que les sprites sont initialisés, nous devons nous occuper de la méthode <strong>LoadContent</strong>.</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF;">protected</span> <span style="color: #0600FF;">override</span> <span style="color: #0600FF;">void</span> LoadContent<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
<span style="color: #008080; font-style: italic;">// Create a new SpriteBatch, which can be used to draw textures.</span>
spriteBatch <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> SpriteBatch<span style="color: #000000;">&#40;</span>GraphicsDevice<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
logo.<span style="color: #0000FF;">LoadContent</span><span style="color: #000000;">&#40;</span>Content, <span style="color: #666666;">&quot;logo_HD&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
logo.<span style="color: #0000FF;">Position</span> <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Vector2<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">240</span>, <span style="color: #FF0000;">400</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
BackgroundOne.<span style="color: #0000FF;">LoadContent</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">Content</span>, <span style="color: #666666;">&quot;BackgroundOne&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
BackgroundOne.<span style="color: #0000FF;">Position</span> <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Vector2<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">0</span>, <span style="color: #FF0000;">0</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
BackgroundTwo.<span style="color: #0000FF;">LoadContent</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">Content</span>, <span style="color: #666666;">&quot;BackgroundTwo&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
BackgroundTwo.<span style="color: #0000FF;">Position</span> <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Vector2<span style="color: #000000;">&#40;</span>BackgroundOne.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">+</span> BackgroundOne.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Width</span>, <span style="color: #FF0000;">0</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
BackgroundThree.<span style="color: #0000FF;">LoadContent</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">Content</span>, <span style="color: #666666;">&quot;BackgroundThree&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
BackgroundThree.<span style="color: #0000FF;">Position</span> <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Vector2<span style="color: #000000;">&#40;</span>BackgroundTwo.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">+</span> BackgroundTwo.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Width</span>, <span style="color: #FF0000;">0</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
BackgroundFour.<span style="color: #0000FF;">LoadContent</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">Content</span>, <span style="color: #666666;">&quot;BackgroundFour&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
BackgroundFour.<span style="color: #0000FF;">Position</span> <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Vector2<span style="color: #000000;">&#40;</span>BackgroundThree.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">+</span> BackgroundThree.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Width</span>, <span style="color: #FF0000;">0</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
BackgroundFive.<span style="color: #0000FF;">LoadContent</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">Content</span>, <span style="color: #666666;">&quot;BackgroundFive&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
BackgroundFive.<span style="color: #0000FF;">Position</span> <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Vector2<span style="color: #000000;">&#40;</span>BackgroundFour.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">+</span> BackgroundFour.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Width</span>, <span style="color: #FF0000;">0</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Vous pouvez voir que le contenu de chaque Sprite est chargé avec les images des Backgrounds. Chaque Sprite est positionné en fin de chaine. La première image est positionnée en (0,0), ce qui correspond au coin supérieur gauche de l’écran et les autres suivent sur la droite.</p>
<p>Faire défiler un Background correspond à déplacer les images de background à travers l’écran à la façon d’un train. Quand une image passe outre l’écran sur la gauche, elle est déplacée en fin de queue.</p>
<p>Pour créer cet effet nous allons modifier la méthode Update pour qu’elle vérifie la position de chaque background et la déplace en fin de queue si nécessaire et également effectuer un déplacement régulier vers la gauche des images pour donner cet effet de défilement.</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF;">protected</span> <span style="color: #0600FF;">override</span> <span style="color: #0600FF;">void</span> Update<span style="color: #000000;">&#40;</span>GameTime gameTime<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
<span style="color: #008080; font-style: italic;">// Allows the game to exit</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>GamePad.<span style="color: #0000FF;">GetState</span><span style="color: #000000;">&#40;</span>PlayerIndex.<span style="color: #0000FF;">One</span><span style="color: #000000;">&#41;</span>.<span style="color: #0000FF;">Buttons</span>.<span style="color: #0000FF;">Back</span> <span style="color: #008000;">==</span> ButtonState.<span style="color: #0000FF;">Pressed</span><span style="color: #000000;">&#41;</span>
<span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">Exit</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
touchCollection <span style="color: #008000;">=</span> TouchPanel.<span style="color: #0000FF;">GetState</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #FF0000;">bool</span> buttonTouched <span style="color: #008000;">=</span> false<span style="color: #008000;">;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">//interprete le touch sur l'écran</span>
<span style="color: #0600FF;">foreach</span> <span style="color: #000000;">&#40;</span>TouchLocation location <span style="color: #0600FF;">in</span> touchCollection<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
<span style="color: #0600FF;">switch</span> <span style="color: #000000;">&#40;</span>location.<span style="color: #0000FF;">State</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
<span style="color: #0600FF;">case</span> TouchLocationState.<span style="color: #0000FF;">Pressed</span><span style="color: #008000;">:</span>
buttonTouched <span style="color: #008000;">=</span> true<span style="color: #008000;">;</span>
break<span style="color: #008000;">;</span>
<span style="color: #0600FF;">case</span> TouchLocationState.<span style="color: #0000FF;">Moved</span><span style="color: #008000;">:</span>
buttonTouched <span style="color: #008000;">=</span> true<span style="color: #008000;">;</span>
break<span style="color: #008000;">;</span>
<span style="color: #0600FF;">case</span> TouchLocationState.<span style="color: #0000FF;">Released</span><span style="color: #008000;">:</span>
break<span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>buttonTouched<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>touchCollection<span style="color: #000000;">&#91;</span><span style="color: #FF0000;">0</span><span style="color: #000000;">&#93;</span>.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">&amp;</span>lt<span style="color: #008000;">;</span> logo.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">&amp;</span>amp<span style="color: #008000;">;&amp;</span>amp<span style="color: #008000;">;</span> logo.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">&amp;</span>gt<span style="color: #008000;">;</span> <span style="color: #FF0000;">0</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
logo.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">-=</span> <span style="color: #FF0000;">10</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>touchCollection<span style="color: #000000;">&#91;</span><span style="color: #FF0000;">0</span><span style="color: #000000;">&#93;</span>.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">&amp;</span>gt<span style="color: #008000;">;</span> logo.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">&amp;</span>amp<span style="color: #008000;">;&amp;</span>amp<span style="color: #008000;">;</span> logo.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">&amp;</span>lt<span style="color: #008000;">;</span> BackBufferWidth <span style="color: #008000;">-</span> logo.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Width</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
logo.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">+=</span> <span style="color: #FF0000;">10</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>touchCollection<span style="color: #000000;">&#91;</span><span style="color: #FF0000;">0</span><span style="color: #000000;">&#93;</span>.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">Y</span> <span style="color: #008000;">&amp;</span>lt<span style="color: #008000;">;</span> logo.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">Y</span> <span style="color: #008000;">&amp;</span>amp<span style="color: #008000;">;&amp;</span>amp<span style="color: #008000;">;</span> logo.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">Y</span> <span style="color: #008000;">&amp;</span>gt<span style="color: #008000;">;</span> <span style="color: #FF0000;">0</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
logo.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">Y</span> <span style="color: #008000;">-=</span> <span style="color: #FF0000;">10</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>touchCollection<span style="color: #000000;">&#91;</span><span style="color: #FF0000;">0</span><span style="color: #000000;">&#93;</span>.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">Y</span> <span style="color: #008000;">&amp;</span>gt<span style="color: #008000;">;</span> logo.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">Y</span> <span style="color: #008000;">&amp;</span>amp<span style="color: #008000;">;&amp;</span>amp<span style="color: #008000;">;</span> logo.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">Y</span> <span style="color: #008000;">&amp;</span>lt<span style="color: #008000;">;</span> BackBufferHeight <span style="color: #008000;">-</span> logo.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Height</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
logo.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">Y</span> <span style="color: #008000;">+=</span> <span style="color: #FF0000;">10</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>BackgroundOne.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">&amp;</span>lt<span style="color: #008000;">;</span> <span style="color: #008000;">-</span>BackgroundOne.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Width</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
BackgroundOne.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">=</span> BackgroundFive.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">+</span> BackgroundFive.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Width</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>BackgroundTwo.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">&amp;</span>lt<span style="color: #008000;">;</span> <span style="color: #008000;">-</span>BackgroundTwo.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Width</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
BackgroundTwo.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">=</span> BackgroundOne.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">+</span> BackgroundOne.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Width</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>BackgroundThree.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">&amp;</span>lt<span style="color: #008000;">;</span> <span style="color: #008000;">-</span>BackgroundThree.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Width</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
BackgroundThree.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">=</span> BackgroundTwo.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">+</span> BackgroundTwo.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Width</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>BackgroundFour.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">&amp;</span>lt<span style="color: #008000;">;</span> <span style="color: #008000;">-</span>BackgroundFour.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Width</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
BackgroundFour.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">=</span> BackgroundThree.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">+</span> BackgroundThree.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Width</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>BackgroundFive.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">&amp;</span>lt<span style="color: #008000;">;</span> <span style="color: #008000;">-</span>BackgroundFive.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Width</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
BackgroundFive.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">=</span> BackgroundFour.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">+</span> BackgroundFour.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Width</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
Vector2 aDirection <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Vector2<span style="color: #000000;">&#40;</span><span style="color: #008000;">-</span><span style="color: #FF0000;">1</span>, <span style="color: #FF0000;">0</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
Vector2 aSpeed <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Vector2<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">160</span>, <span style="color: #FF0000;">0</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
BackgroundOne.<span style="color: #0000FF;">Position</span> <span style="color: #008000;">+=</span> aDirection <span style="color: #008000;">*</span> aSpeed <span style="color: #008000;">*</span> <span style="color: #000000;">&#40;</span><span style="color: #FF0000;">float</span><span style="color: #000000;">&#41;</span>gameTime.<span style="color: #0000FF;">ElapsedGameTime</span>.<span style="color: #0000FF;">TotalSeconds</span><span style="color: #008000;">;</span>
BackgroundTwo.<span style="color: #0000FF;">Position</span> <span style="color: #008000;">+=</span> aDirection <span style="color: #008000;">*</span> aSpeed <span style="color: #008000;">*</span> <span style="color: #000000;">&#40;</span><span style="color: #FF0000;">float</span><span style="color: #000000;">&#41;</span>gameTime.<span style="color: #0000FF;">ElapsedGameTime</span>.<span style="color: #0000FF;">TotalSeconds</span><span style="color: #008000;">;</span>
BackgroundThree.<span style="color: #0000FF;">Position</span> <span style="color: #008000;">+=</span> aDirection <span style="color: #008000;">*</span> aSpeed <span style="color: #008000;">*</span> <span style="color: #000000;">&#40;</span><span style="color: #FF0000;">float</span><span style="color: #000000;">&#41;</span>gameTime.<span style="color: #0000FF;">ElapsedGameTime</span>.<span style="color: #0000FF;">TotalSeconds</span><span style="color: #008000;">;</span>
BackgroundFour.<span style="color: #0000FF;">Position</span> <span style="color: #008000;">+=</span> aDirection <span style="color: #008000;">*</span> aSpeed <span style="color: #008000;">*</span> <span style="color: #000000;">&#40;</span><span style="color: #FF0000;">float</span><span style="color: #000000;">&#41;</span>gameTime.<span style="color: #0000FF;">ElapsedGameTime</span>.<span style="color: #0000FF;">TotalSeconds</span><span style="color: #008000;">;</span>
BackgroundFive.<span style="color: #0000FF;">Position</span> <span style="color: #008000;">+=</span> aDirection <span style="color: #008000;">*</span> aSpeed <span style="color: #008000;">*</span> <span style="color: #000000;">&#40;</span><span style="color: #FF0000;">float</span><span style="color: #000000;">&#41;</span>gameTime.<span style="color: #0000FF;">ElapsedGameTime</span>.<span style="color: #0000FF;">TotalSeconds</span><span style="color: #008000;">;</span>
&nbsp;
<span style="color: #0600FF;">base</span>.<span style="color: #0000FF;">Update</span><span style="color: #000000;">&#40;</span>gameTime<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Le code se décompose en trois sections. Commençons par la première section qui concerne le déplacement du joueur (notre logo).</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">touchCollection <span style="color: #008000;">=</span> TouchPanel.<span style="color: #0000FF;">GetState</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #FF0000;">bool</span> buttonTouched <span style="color: #008000;">=</span> false<span style="color: #008000;">;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">//interprete le touch sur l'écran</span>
<span style="color: #0600FF;">foreach</span> <span style="color: #000000;">&#40;</span>TouchLocation location <span style="color: #0600FF;">in</span> touchCollection<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
<span style="color: #0600FF;">switch</span> <span style="color: #000000;">&#40;</span>location.<span style="color: #0000FF;">State</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
<span style="color: #0600FF;">case</span> TouchLocationState.<span style="color: #0000FF;">Pressed</span><span style="color: #008000;">:</span>
buttonTouched <span style="color: #008000;">=</span> true<span style="color: #008000;">;</span>
break<span style="color: #008000;">;</span>
<span style="color: #0600FF;">case</span> TouchLocationState.<span style="color: #0000FF;">Moved</span><span style="color: #008000;">:</span>
buttonTouched <span style="color: #008000;">=</span> true<span style="color: #008000;">;</span>
break<span style="color: #008000;">;</span>
<span style="color: #0600FF;">case</span> TouchLocationState.<span style="color: #0000FF;">Released</span><span style="color: #008000;">:</span>
break<span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>buttonTouched<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>touchCollection<span style="color: #000000;">&#91;</span><span style="color: #FF0000;">0</span><span style="color: #000000;">&#93;</span>.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">&amp;</span>lt<span style="color: #008000;">;</span> logo.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">&amp;</span>amp<span style="color: #008000;">;&amp;</span>amp<span style="color: #008000;">;</span> logo.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">&amp;</span>gt<span style="color: #008000;">;</span> <span style="color: #FF0000;">0</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
logo.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">-=</span> <span style="color: #FF0000;">10</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>touchCollection<span style="color: #000000;">&#91;</span><span style="color: #FF0000;">0</span><span style="color: #000000;">&#93;</span>.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">&amp;</span>gt<span style="color: #008000;">;</span> logo.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">&amp;</span>amp<span style="color: #008000;">;&amp;</span>amp<span style="color: #008000;">;</span> logo.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">&amp;</span>lt<span style="color: #008000;">;</span> BackBufferWidth <span style="color: #008000;">-</span> logo.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Width</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
logo.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">+=</span> <span style="color: #FF0000;">10</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>touchCollection<span style="color: #000000;">&#91;</span><span style="color: #FF0000;">0</span><span style="color: #000000;">&#93;</span>.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">Y</span> <span style="color: #008000;">&amp;</span>lt<span style="color: #008000;">;</span> logo.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">Y</span> <span style="color: #008000;">&amp;</span>amp<span style="color: #008000;">;&amp;</span>amp<span style="color: #008000;">;</span> logo.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">Y</span> <span style="color: #008000;">&amp;</span>gt<span style="color: #008000;">;</span> <span style="color: #FF0000;">0</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
logo.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">Y</span> <span style="color: #008000;">-=</span> <span style="color: #FF0000;">10</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>touchCollection<span style="color: #000000;">&#91;</span><span style="color: #FF0000;">0</span><span style="color: #000000;">&#93;</span>.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">Y</span> <span style="color: #008000;">&amp;</span>gt<span style="color: #008000;">;</span> logo.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">Y</span> <span style="color: #008000;">&amp;</span>amp<span style="color: #008000;">;&amp;</span>amp<span style="color: #008000;">;</span> logo.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">Y</span> <span style="color: #008000;">&amp;</span>lt<span style="color: #008000;">;</span> BackBufferHeight <span style="color: #008000;">-</span> logo.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Height</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
logo.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">Y</span> <span style="color: #008000;">+=</span> <span style="color: #FF0000;">10</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Il s’agit en fait du même code que celui de méthode Update de la classe Sprite du chapitre précédent. Il permet de gérer le déplacement du logo.</p>
<p>Analysons la deuxième section maintenant. Celle-ci permet de garder la « chaine » d’image continue.</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>BackgroundOne.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">&amp;</span>lt<span style="color: #008000;">;</span> <span style="color: #008000;">-</span>BackgroundOne.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Width</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
BackgroundOne.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">=</span> BackgroundFive.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">+</span> BackgroundFive.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Width</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>BackgroundTwo.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">&amp;</span>lt<span style="color: #008000;">;</span> <span style="color: #008000;">-</span>BackgroundTwo.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Width</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
BackgroundTwo.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">=</span> BackgroundOne.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">+</span> BackgroundOne.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Width</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>BackgroundThree.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">&amp;</span>lt<span style="color: #008000;">;</span> <span style="color: #008000;">-</span>BackgroundThree.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Width</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
BackgroundThree.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">=</span> BackgroundTwo.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">+</span> BackgroundTwo.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Width</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>BackgroundFour.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">&amp;</span>lt<span style="color: #008000;">;</span> <span style="color: #008000;">-</span>BackgroundFour.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Width</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
BackgroundFour.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">=</span> BackgroundThree.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">+</span> BackgroundThree.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Width</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>BackgroundFive.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">&amp;</span>lt<span style="color: #008000;">;</span> <span style="color: #008000;">-</span>BackgroundFive.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Width</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
BackgroundFive.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">=</span> BackgroundFour.<span style="color: #0000FF;">Position</span>.<span style="color: #0000FF;">X</span> <span style="color: #008000;">+</span> BackgroundFour.<span style="color: #0000FF;">Size</span>.<span style="color: #0000FF;">Width</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>On pourrait pût vouloir déplacer en premier lieu les backgrounds avant de vérifier leur position. Mais comme souvent dans le jeu vidéo, l’ordre d’exécution est très important. Si l’on avait développé sous cette logique, un décalage entre les images de background se serait formé.</p>
<p>Voyons maintenant la dernière partie de code de cette méthode.</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">Vector2 aDirection <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Vector2<span style="color: #000000;">&#40;</span><span style="color: #008000;">-</span><span style="color: #FF0000;">1</span>, <span style="color: #FF0000;">0</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
Vector2 aSpeed <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Vector2<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">160</span>, <span style="color: #FF0000;">0</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
BackgroundOne.<span style="color: #0000FF;">Position</span> <span style="color: #008000;">+=</span> aDirection <span style="color: #008000;">*</span> aSpeed <span style="color: #008000;">*</span> <span style="color: #000000;">&#40;</span><span style="color: #FF0000;">float</span><span style="color: #000000;">&#41;</span>gameTime.<span style="color: #0000FF;">ElapsedGameTime</span>.<span style="color: #0000FF;">TotalSeconds</span><span style="color: #008000;">;</span>
BackgroundTwo.<span style="color: #0000FF;">Position</span> <span style="color: #008000;">+=</span> aDirection <span style="color: #008000;">*</span> aSpeed <span style="color: #008000;">*</span> <span style="color: #000000;">&#40;</span><span style="color: #FF0000;">float</span><span style="color: #000000;">&#41;</span>gameTime.<span style="color: #0000FF;">ElapsedGameTime</span>.<span style="color: #0000FF;">TotalSeconds</span><span style="color: #008000;">;</span>
BackgroundThree.<span style="color: #0000FF;">Position</span> <span style="color: #008000;">+=</span> aDirection <span style="color: #008000;">*</span> aSpeed <span style="color: #008000;">*</span> <span style="color: #000000;">&#40;</span><span style="color: #FF0000;">float</span><span style="color: #000000;">&#41;</span>gameTime.<span style="color: #0000FF;">ElapsedGameTime</span>.<span style="color: #0000FF;">TotalSeconds</span><span style="color: #008000;">;</span>
BackgroundFour.<span style="color: #0000FF;">Position</span> <span style="color: #008000;">+=</span> aDirection <span style="color: #008000;">*</span> aSpeed <span style="color: #008000;">*</span> <span style="color: #000000;">&#40;</span><span style="color: #FF0000;">float</span><span style="color: #000000;">&#41;</span>gameTime.<span style="color: #0000FF;">ElapsedGameTime</span>.<span style="color: #0000FF;">TotalSeconds</span><span style="color: #008000;">;</span>
BackgroundFive.<span style="color: #0000FF;">Position</span> <span style="color: #008000;">+=</span> aDirection <span style="color: #008000;">*</span> aSpeed <span style="color: #008000;">*</span> <span style="color: #000000;">&#40;</span><span style="color: #FF0000;">float</span><span style="color: #000000;">&#41;</span>gameTime.<span style="color: #0000FF;">ElapsedGameTime</span>.<span style="color: #0000FF;">TotalSeconds</span><span style="color: #008000;">;</span>
&nbsp;
<span style="color: #0600FF;">base</span>.<span style="color: #0000FF;">Update</span><span style="color: #000000;">&#40;</span>gameTime<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p>Le vecteur <strong>aDirection</strong> détermine dans quel sens le défilement va s’effectuer en X et en Y avec -1 pour la gauche et 1 pour la droite. Ici (-1,0) signifie un déplacement uniquement horizontal vers la gauche.</p>
<p>Le vecteur <strong>aSpeed</strong> indique la vitesse de défilement du background en X et en Y. Ici on a une vitesse horizontale de 160 pixel/s et de 0 pixel/s verticalement.</p>
<p>Pour obtenir la nouvelle position il suffit donc de multiplier la direction par la vitesse et d’ajouter le tout à l’ancienne position.</p>
<p>Fin des explications pour cette méthode. Il ne reste plus qu’à nous occuper de la méthode <strong>Draw</strong>. Modifiez la méthode en fonction des lignes suivantes.</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF;">protected</span> <span style="color: #0600FF;">override</span> <span style="color: #0600FF;">void</span> Draw<span style="color: #000000;">&#40;</span>GameTime gameTime<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
GraphicsDevice.<span style="color: #0000FF;">Clear</span><span style="color: #000000;">&#40;</span>Color.<span style="color: #0000FF;">CornflowerBlue</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
spriteBatch.<span style="color: #0000FF;">Begin</span><span style="color: #000000;">&#40;</span>SpriteSortMode.<span style="color: #0000FF;">Immediate</span>, BlendState.<span style="color: #0000FF;">AlphaBlend</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
BackgroundOne.<span style="color: #0000FF;">Draw</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">spriteBatch</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
BackgroundTwo.<span style="color: #0000FF;">Draw</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">spriteBatch</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
BackgroundThree.<span style="color: #0000FF;">Draw</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">spriteBatch</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
BackgroundFour.<span style="color: #0000FF;">Draw</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">spriteBatch</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
BackgroundFive.<span style="color: #0000FF;">Draw</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">spriteBatch</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
logo.<span style="color: #0000FF;">Draw</span><span style="color: #000000;">&#40;</span>spriteBatch<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
spriteBatch.<span style="color: #0000FF;">End</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
<span style="color: #0600FF;">base</span>.<span style="color: #0000FF;">Draw</span><span style="color: #000000;">&#40;</span>gameTime<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Lancez le Debug, l’émulateur charge le projet et vous devez maintenant voir apparaître le logo Tequila Rapido dans les nuages, volant tel superman à travers le ciel.</p>
<p>Vous pouvez voir ce que donne le résultat dans cette <a title="lapin" href="http://www.youtube.com/watch?v=FoYGb8bp8_k">vidéo</a></p>
<p>Les sources du projet sont disponibles en téléchargement ici.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tequilarapido.com/2010/08/17/tutoriel-de-developpement-xna-partie-ii-mon-premier-jeu-avec-xna-4-0-part-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tutoriel de développement XNA / Partie II : Mon premier jeu avec XNA 4.0 (Part 2)</title>
		<link>http://blog.tequilarapido.com/2010/08/12/tutoriel-de-developpement-xna-partie-ii-mon-premier-jeu-avec-xna-4-0-part-2/</link>
		<comments>http://blog.tequilarapido.com/2010/08/12/tutoriel-de-developpement-xna-partie-ii-mon-premier-jeu-avec-xna-4-0-part-2/#comments</comments>
		<pubDate>Thu, 12 Aug 2010 13:32:16 +0000</pubDate>
		<dc:creator>yann</dc:creator>
				<category><![CDATA[L'agence]]></category>
		<category><![CDATA[Techno]]></category>

		<guid isPermaLink="false">http://blog.tequilarapido.com/?p=3179</guid>
		<description><![CDATA[Dans la partie précédente nous avons créé un nouveau projet XNA. Nous allons maintenant ajouter à l’écran un sprite. Pour l’exemple nous utiliserons le logo de l’agence (logo_HD.png ) mais rien ne vous empêche de choisir autre chose. Dans le même temps, nous ajouterons une gestion des contrôles pour pouvoir déplacer notre sprite.]]></description>
			<content:encoded><![CDATA[<p>Dans la partie précédente nous avons créé un nouveau projet XNA. Nous allons maintenant ajouter à l’écran un sprite. Pour l’exemple nous utiliserons le logo de l’agence (logo_HD.png ) mais rien ne vous empêche de choisir autre chose. Dans le même temps, nous ajouterons une gestion des contrôles pour pouvoir déplacer notre sprite.</p>
<p><span id="more-3179"></span></p>
<p>Ouvrez votre solution « MonPremierJeu ». Dans l’explorateur faites un clic droit sur le projet « MonPremierJeuContent » et choisissez Add &gt; Existing Item puis choisissez votre sprite et enfin OK.</p>
<p><a href="http://blog.tequilarapido.com/wp-content/uploads/2010/08/AddContent.png"><img class="alignnone size-full wp-image-3180" title="AddContent" src="http://blog.tequilarapido.com/wp-content/uploads/2010/08/AddContent.png" alt="AddContent" width="407" height="434" /></a></p>
<p>Affichez maintenant la classe Game1.cs. Dans le haut de la classe ajoutez les lignes suivantes :</p>
<pre style="background-color: white;"><span style="color: #008080;">1</span> <span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> Game1 : Microsoft.Xna.Framework.Game
</span><span style="color: #008080;">2</span> <span style="color: #000000;">{
</span><span style="color: #008080;">3</span> <span style="color: #000000;">  GraphicsDeviceManager graphics;
</span><span style="color: #008080;">4</span> <span style="color: #000000;">  SpriteBatch spriteBatch;
</span><span style="color: #008080;">5</span> <span style="color: #000000;">  Texture2D logo;
</span><span style="color: #008080;">6</span> <span style="color: #000000;">  Vector2 position;
</span><span style="color: #008080;">7</span> <span style="color: #000000;">  TouchCollection touchCollection;
</span><span style="color: #008080;">8</span> <span style="color: #000000;">  </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">const</span><span style="color: #000000;"> </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> BackBufferWidth </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800080;">480</span><span style="color: #000000;">;
</span><span style="color: #008080;">9</span> <span style="color: #000000;">  </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">const</span><span style="color: #000000;"> </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> BackBufferHeight </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800080;">800</span><span style="color: #000000;">;</span></pre>
<p>…</p>
<p>Nous venons d’ajouter une Texture2D qui contiendra l’image logo_HD.png qui vient d’être ajoutée. C’est cette texture qui sera affichée dans la méthode Draw().</p>
<p>“Vector2 position” représente la position du sprite sur l’écran.</p>
<p>“TouchCollection touchCollection” représente la collection de « touch » sur l’écran.</p>
<p>BackBufferWidth et BackBufferHeight représentent la résolution de l’écran. Par défaut sur le Windows Phone elle est de 480 par 800.</p>
<p>Dans le constructeur on va appliquer notre résolution au Windows Phone via le graphicsDeviceManager.</p>
<pre style="background-color: white;">
<pre style="background-color: white;">
<pre style="background-color: white;"><span style="color: #008080;">1</span> <span style="color: #0000ff;">public</span><span style="color: #000000;"> Game1()
</span><span style="color: #008080;">2</span> <span style="color: #000000;">{
</span><span style="color: #008080;">3</span> <span style="color: #000000;">graphics </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> GraphicsDeviceManager(</span><span style="color: #0000ff;">this</span><span style="color: #000000;">);
</span><span style="color: #008080;">4</span> <span style="color: #000000;">Content.RootDirectory </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800000;">"</span><span style="color: #800000;">Content</span><span style="color: #800000;">"</span><span style="color: #000000;">;
</span><span style="color: #008080;">5</span> <span style="color: #000000;">graphics.PreferredBackBufferWidth </span><span style="color: #000000;">=</span><span style="color: #000000;"> BackBufferWidth;
</span><span style="color: #008080;">6</span> <span style="color: #000000;">graphics.PreferredBackBufferHeight </span><span style="color: #000000;">=</span><span style="color: #000000;"> BackBufferHeight;
</span><span style="color: #008080;">7</span> <span style="color: #000000;">
</span><span style="color: #008080;">8</span> <span style="color: #008000;">//</span><span style="color: #008000;"> Frame rate is 30 fps by default for Windows Phone.</span><span style="color: #008000;">
</span><span style="color: #008080;">9</span> <span style="color: #000000;">TargetElapsedTime </span><span style="color: #000000;">=</span><span style="color: #000000;"> TimeSpan.FromTicks(</span><span style="color: #800080;">333333</span><span style="color: #000000;">);
</span><span style="color: #008080;">10</span> <span style="color: #000000;">}</span><span style="color: #000000;"> </span><span style="color: #000000;"> </span></pre>
</pre>
</pre>
<p>Dans la méthode Initialize(), on initialize la TouchCollection et la position de notre sprite au centre de l’écran.</p>
<pre style="background-color: white;"><span style="color: #008080;">1</span> <span style="color: #0000ff;">protected</span><span style="color: #000000;"> </span><span style="color: #0000ff;">override</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> Initialize()
</span><span style="color: #008080;">2</span> <span style="color: #000000;">{
</span><span style="color: #008080;">3</span> <span style="color: #000000;">touchCollection </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> TouchCollection();
</span><span style="color: #008080;">4</span> <span style="color: #000000;">position </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> Vector2(</span><span style="color: #800080;">240</span><span style="color: #000000;">, </span><span style="color: #800080;">400</span><span style="color: #000000;">);
</span><span style="color: #008080;">5</span> <span style="color: #0000ff;">base</span><span style="color: #000000;">.Initialize();
</span><span style="color: #008080;">6</span> <span style="color: #000000;">}</span></pre>
<p>A présent dans le LoadContent dédié au chargement des Contents, ajoutez les lignes suivantes :</p>
<pre style="background-color: white;"><span style="color: #008080;">1</span> <span style="color: #0000ff;">protected</span><span style="color: #000000;"> </span><span style="color: #0000ff;">override</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> LoadContent()
</span><span style="color: #008080;">2</span> <span style="color: #000000;">{
</span><span style="color: #008080;">3</span> <span style="color: #000000;">  </span><span style="color: #008000;">//</span><span style="color: #008000;"> Create a new SpriteBatch, which can be used to draw textures.</span><span style="color: #008000;">
</span><span style="color: #008080;">4</span> <span style="color: #000000;">  spriteBatch </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> SpriteBatch(GraphicsDevice);
</span><span style="color: #008080;">5</span> <span style="color: #000000;">  logo </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">this</span><span style="color: #000000;">.Content.Load</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">Texture2D</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">(</span><span style="color: #800000;">"</span><span style="color: #800000;">logo_HD</span><span style="color: #800000;">"</span><span style="color: #000000;">);
</span><span style="color: #008080;">6</span> <span style="color: #000000;">}</span></pre>
<p>“<span style="color: #000000;">logo </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">this</span><span style="color: #000000;">.Content.Load</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">Texture2D</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">(</span><span style="color: #800000;">&laquo;&nbsp;</span><span style="color: #800000;">logo_HD</span><span style="color: #800000;">&laquo;&nbsp;</span><span style="color: #000000;">)</span>” charge la resource “logo_HD” sous forme de Texture2D dans notre variable logo.</p>
<p>Arrivé à cette étape, tout est chargé et prêt à être utilisé dans la boucle Update/Draw. Modifiez la méthode Update en y ajoutant les lignes suivantes :</p>
<pre style="background-color: white;"><span style="color: #008080;"> 1</span> <span style="color: #0000ff;">protected</span><span style="color: #000000;"> </span><span style="color: #0000ff;">override</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> Update(GameTime gameTime)
</span><span style="color: #008080;"> 2</span> <span style="color: #000000;">{
</span><span style="color: #008080;"> 3</span> <span style="color: #000000;">  </span><span style="color: #008000;">//</span><span style="color: #008000;"> Allows the game to exit</span><span style="color: #008000;">
</span><span style="color: #008080;"> 4</span> <span style="color: #000000;">  </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (GamePad.GetState(PlayerIndex.One).Buttons.Back </span><span style="color: #000000;">==</span><span style="color: #000000;"> ButtonState.Pressed)
</span><span style="color: #008080;"> 5</span> <span style="color: #000000;">  </span><span style="color: #0000ff;">this</span><span style="color: #000000;">.Exit();
</span><span style="color: #008080;"> 6</span> <span style="color: #000000;">
</span><span style="color: #008080;"> 7</span> <span style="color: #000000;">  touchCollection </span><span style="color: #000000;">=</span><span style="color: #000000;"> TouchPanel.GetState();
</span><span style="color: #008080;"> 8</span> <span style="color: #000000;">  </span><span style="color: #0000ff;">bool</span><span style="color: #000000;"> buttonTouched </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">false</span><span style="color: #000000;">;
</span><span style="color: #008080;"> 9</span> <span style="color: #000000;">
</span><span style="color: #008080;">10</span> <span style="color: #000000;">  </span><span style="color: #008000;">//</span><span style="color: #008000;">interprete le touch sur l’écran</span><span style="color: #008000;">
</span><span style="color: #008080;">11</span> <span style="color: #000000;">  </span><span style="color: #0000ff;">foreach</span><span style="color: #000000;"> (TouchLocation location </span><span style="color: #0000ff;">in</span><span style="color: #000000;"> touchCollection)
</span><span style="color: #008080;">12</span> <span style="color: #000000;">  {
</span><span style="color: #008080;">13</span> <span style="color: #000000;">     </span><span style="color: #0000ff;">switch</span><span style="color: #000000;"> (location.State)
</span><span style="color: #008080;">14</span> <span style="color: #000000;">     {
</span><span style="color: #008080;">15</span> <span style="color: #000000;">        </span><span style="color: #0000ff;">case</span><span style="color: #000000;"> TouchLocationState.Pressed:
</span><span style="color: #008080;">16</span> <span style="color: #000000;">        buttonTouched </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">true</span><span style="color: #000000;">;
</span><span style="color: #008080;">17</span> <span style="color: #000000;">        </span><span style="color: #0000ff;">break</span><span style="color: #000000;">;
</span><span style="color: #008080;">18</span> <span style="color: #000000;">        </span><span style="color: #0000ff;">case</span><span style="color: #000000;"> TouchLocationState.Moved:
</span><span style="color: #008080;">19</span> <span style="color: #000000;">        buttonTouched </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">true</span><span style="color: #000000;">;
</span><span style="color: #008080;">20</span> <span style="color: #000000;">        </span><span style="color: #0000ff;">break</span><span style="color: #000000;">;
</span><span style="color: #008080;">21</span> <span style="color: #000000;">        </span><span style="color: #0000ff;">case</span><span style="color: #000000;"> TouchLocationState.Released:
</span><span style="color: #008080;">22</span> <span style="color: #000000;">        </span><span style="color: #0000ff;">break</span><span style="color: #000000;">;
</span><span style="color: #008080;">23</span> <span style="color: #000000;">     }
</span><span style="color: #008080;">24</span> <span style="color: #000000;">  }
</span><span style="color: #008080;">25</span> <span style="color: #000000;">  </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (buttonTouched)
</span><span style="color: #008080;">26</span> <span style="color: #000000;">  {
</span><span style="color: #008080;">27</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (touchCollection[</span><span style="color: #800080;">0</span><span style="color: #000000;">].Position.X </span><span style="color: #000000;">&lt;</span><span style="color: #000000;"> position.X </span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;"> position.X </span><span style="color: #000000;">&gt;</span><span style="color: #800080;">0</span><span style="color: #000000;">)
</span><span style="color: #008080;">28</span> <span style="color: #000000;">    {
</span><span style="color: #008080;">29</span> <span style="color: #000000;">       position.X </span><span style="color: #000000;">-=</span><span style="color: #000000;"> </span><span style="color: #800080;">10</span><span style="color: #000000;">;
</span><span style="color: #008080;">30</span> <span style="color: #000000;">    }
</span><span style="color: #008080;">31</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (touchCollection[</span><span style="color: #800080;">0</span><span style="color: #000000;">].Position.X </span><span style="color: #000000;">&gt;</span><span style="color: #000000;"> position.X </span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;"> position.X </span><span style="color: #000000;">&lt;</span><span style="color: #000000;">BackBufferWidth</span><span style="color: #000000;">-</span><span style="color: #000000;">logo.Width)
</span><span style="color: #008080;">32</span> <span style="color: #000000;">    {
</span><span style="color: #008080;">33</span> <span style="color: #000000;">        position.X </span><span style="color: #000000;">+=</span><span style="color: #000000;"> </span><span style="color: #800080;">10</span><span style="color: #000000;">;
</span><span style="color: #008080;">34</span> <span style="color: #000000;">    }
</span><span style="color: #008080;">35</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (touchCollection[</span><span style="color: #800080;">0</span><span style="color: #000000;">].Position.Y </span><span style="color: #000000;">&lt;</span><span style="color: #000000;"> position.Y </span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;"> position.Y </span><span style="color: #000000;">&gt;</span><span style="color: #000000;"> </span><span style="color: #800080;">0</span><span style="color: #000000;">)
</span><span style="color: #008080;">36</span> <span style="color: #000000;">    {
</span><span style="color: #008080;">37</span> <span style="color: #000000;">       position.Y </span><span style="color: #000000;">-=</span><span style="color: #000000;"> </span><span style="color: #800080;">10</span><span style="color: #000000;">;
</span><span style="color: #008080;">38</span> <span style="color: #000000;">    }
</span><span style="color: #008080;">39</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (touchCollection[</span><span style="color: #800080;">0</span><span style="color: #000000;">].Position.Y </span><span style="color: #000000;">&gt;</span><span style="color: #000000;"> position.Y </span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;"> position.Y </span><span style="color: #000000;">&lt;</span><span style="color: #000000;"> BackBufferHeight</span><span style="color: #000000;">-</span><span style="color: #000000;">logo.Height)
</span><span style="color: #008080;">40</span> <span style="color: #000000;">   {
</span><span style="color: #008080;">41</span> <span style="color: #000000;">      position.Y </span><span style="color: #000000;">+=</span><span style="color: #000000;"> </span><span style="color: #800080;">10</span><span style="color: #000000;">;
</span><span style="color: #008080;">42</span> <span style="color: #000000;">   }
</span><span style="color: #008080;">43</span> <span style="color: #000000;"> }
</span><span style="color: #008080;">44</span> <span style="color: #000000;">
</span><span style="color: #008080;">45</span> <span style="color: #000000;"> </span><span style="color: #0000ff;">base</span><span style="color: #000000;">.Update(gameTime);
</span><span style="color: #008080;">46</span> <span style="color: #000000;">}</span></pre>
<p>Cette partie de code permet de modifier la position de l’image en fonction de l’endroit où l’on appuie sur l’écran par rapport à la position actuelle de notre sprite.</p>
<p>Il ne reste plus qu’à nous occuper de la méthode Draw(), celle-là même, qui gère le rendu graphique de notre jeu. C’est le SpriteBatch qui va appliquer le rendu graphique n’oubliez pas de l’ouvrir en début de méthode et de le refermer à la fin de la méthode.</p>
<pre style="background-color: white;"><span style="color: #008080;"> 1</span> <span style="color: #0000ff;">protected</span><span style="color: #000000;"> </span><span style="color: #0000ff;">override</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> Draw(GameTime gameTime)
</span><span style="color: #008080;"> 2</span> <span style="color: #000000;">{
</span><span style="color: #008080;"> 3</span> <span style="color: #000000;">  GraphicsDevice.Clear(Color.CornflowerBlue);
</span><span style="color: #008080;"> 4</span> <span style="color: #000000;">
</span><span style="color: #008080;"> 5</span> <span style="color: #000000;">  spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend);
</span><span style="color: #008080;"> 6</span> <span style="color: #000000;">  spriteBatch.Draw(logo, position, Color.White);
</span><span style="color: #008080;"> 7</span> <span style="color: #000000;">  spriteBatch.End();
</span><span style="color: #008080;"> 8</span> <span style="color: #000000;">
</span><span style="color: #008080;"> 9</span> <span style="color: #000000;">  </span><span style="color: #0000ff;">base</span><span style="color: #000000;">.Draw(gameTime);
</span><span style="color: #008080;">10</span> <span style="color: #000000;">}</span></pre>
<p>Voilà, lancez le debug et vous devriez voir apparaitre ceci et en bougeant votre doigt sur l’écran le sprite se déplace !</p>
<p><a href="http://blog.tequilarapido.com/wp-content/uploads/2010/08/logoTel.png"><img class="alignnone size-full wp-image-3181" title="logoTel" src="http://blog.tequilarapido.com/wp-content/uploads/2010/08/logoTel.png" alt="logoTel" width="300" height="551" /></a></p>
<p><strong>Créer une Classe Sprite</strong></p>
<p>Ok on a réussi à faire se déplacer un sprite sur l’écran, et c’est un bon début, mais ce n’est pas très « Objet » comme comportement. Je vous propose donc de créer un composant Sprite réutilisable, ainsi vous pourrez travailler en multi-sprite plus facilement.</p>
<p>Commencez par créer une nouvelle classe intitulée « Sprite ».</p>
<p><a href="http://blog.tequilarapido.com/wp-content/uploads/2010/08/newClassSprite.png"><img class="alignnone size-full wp-image-3182" title="newClassSprite" src="http://blog.tequilarapido.com/wp-content/uploads/2010/08/newClassSprite.png" alt="newClassSprite" width="625" height="432" /></a></p>
<p>Dans le haut de la classe nous allons maintenant ajouter deux propriétés : la position et la texture de notre sprite</p>
<pre style="background-color: white;"><span style="color: #008080;">1</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> Sprite
</span><span style="color: #008080;">2</span> <span style="color: #000000;">    {
</span><span style="color: #008080;">3</span> <span style="color: #000000;">        </span><span style="color: #008000;">//</span><span style="color: #008000;">Position actuelle du sprite</span><span style="color: #008000;">
</span><span style="color: #008080;">4</span> <span style="color: #000000;">        </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> Vector2 Position </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> Vector2(</span><span style="color: #800080;">0</span><span style="color: #000000;">,</span><span style="color: #800080;">0</span><span style="color: #000000;">);
</span><span style="color: #008080;">5</span> <span style="color: #000000;">
</span><span style="color: #008080;">6</span> <span style="color: #000000;">        </span><span style="color: #008000;">//</span><span style="color: #008000;">Texture utilisée lors de l'affichage dans la méthode Draw</span><span style="color: #008000;">
</span><span style="color: #008080;">7</span> <span style="color: #000000;">        </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> Texture2D _texture;</span></pre>
<p>Nous allons légèrement copier le fonctionnement de la classe Game1.cs et créer notre propre méthode « LoadContent ». Ajoutez cette méthode à la classe Sprite.</p>
<pre style="background-color: white;"><span style="color: #008080;">1</span> <span style="color: #000000;">        </span><span style="color: #008000;">//</span><span style="color: #008000;">Charge la texture du sprite en utilsant le ContentPipeLine</span><span style="color: #008000;">
</span><span style="color: #008080;">2</span> <span style="color: #000000;">        </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> LoadContent(ContentManager monContentManager, </span><span style="color: #0000ff;">string</span><span style="color: #000000;"> nomTexture)
</span><span style="color: #008080;">3</span> <span style="color: #000000;">        {
</span><span style="color: #008080;">4</span> <span style="color: #000000;">            _texture </span><span style="color: #000000;">=</span><span style="color: #000000;"> monContentManager.Load</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">Texture2D</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">(nomTexture);
</span><span style="color: #008080;">5</span> <span style="color: #000000;">        }</span></pre>
<p>Vous pouvez voir que la méthode prend quelques paramètres dont un ContentManager qui sera celui de la classe Game1.</p>
<p>Nous devons maintenant nous occuper de la gestion du déplacement de notre sprite (cette méthode est à utiliser uniquement pour sprite contrôlable). Ajoutez la méthode suivante :</p>
<pre style="background-color: white;"><span style="color: #008080;"> 1</span>         <span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> Update(TouchCollection touchCollection, </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> BackBufferWidth, </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> BackBufferHeight)
</span><span style="color: #008080;"> 2</span> <span style="color: #000000;">        {
</span><span style="color: #008080;"> 3</span> <span style="color: #000000;">            </span><span style="color: #0000ff;">bool</span><span style="color: #000000;"> buttonTouched </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">false</span><span style="color: #000000;">;
</span><span style="color: #008080;"> 4</span> <span style="color: #000000;">
</span><span style="color: #008080;"> 5</span> <span style="color: #000000;">            </span><span style="color: #008000;">//</span><span style="color: #008000;">interprete le touch sur l'écran</span><span style="color: #008000;">
</span><span style="color: #008080;"> 6</span> <span style="color: #000000;">            </span><span style="color: #0000ff;">foreach</span><span style="color: #000000;"> (TouchLocation location </span><span style="color: #0000ff;">in</span><span style="color: #000000;"> touchCollection)
</span><span style="color: #008080;"> 7</span> <span style="color: #000000;">            {
</span><span style="color: #008080;"> 8</span> <span style="color: #000000;">                </span><span style="color: #0000ff;">switch</span><span style="color: #000000;"> (location.State)
</span><span style="color: #008080;"> 9</span> <span style="color: #000000;">                {
</span><span style="color: #008080;">10</span> <span style="color: #000000;">                    </span><span style="color: #0000ff;">case</span><span style="color: #000000;"> TouchLocationState.Pressed:
</span><span style="color: #008080;">11</span> <span style="color: #000000;">                        buttonTouched </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">true</span><span style="color: #000000;">;
</span><span style="color: #008080;">12</span> <span style="color: #000000;">                        </span><span style="color: #0000ff;">break</span><span style="color: #000000;">;
</span><span style="color: #008080;">13</span> <span style="color: #000000;">                    </span><span style="color: #0000ff;">case</span><span style="color: #000000;"> TouchLocationState.Moved:
</span><span style="color: #008080;">14</span> <span style="color: #000000;">                        buttonTouched </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">true</span><span style="color: #000000;">;
</span><span style="color: #008080;">15</span> <span style="color: #000000;">                        </span><span style="color: #0000ff;">break</span><span style="color: #000000;">;
</span><span style="color: #008080;">16</span> <span style="color: #000000;">                    </span><span style="color: #0000ff;">case</span><span style="color: #000000;"> TouchLocationState.Released:
</span><span style="color: #008080;">17</span> <span style="color: #000000;">                        </span><span style="color: #0000ff;">break</span><span style="color: #000000;">;
</span><span style="color: #008080;">18</span> <span style="color: #000000;">                }
</span><span style="color: #008080;">19</span> <span style="color: #000000;">            }
</span><span style="color: #008080;">20</span> <span style="color: #000000;">            </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (buttonTouched)
</span><span style="color: #008080;">21</span> <span style="color: #000000;">            {
</span><span style="color: #008080;">22</span> <span style="color: #000000;">                </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (touchCollection[</span><span style="color: #800080;">0</span><span style="color: #000000;">].Position.X </span><span style="color: #000000;">&lt;</span><span style="color: #000000;"> Position.X </span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;"> Position.X </span><span style="color: #000000;">&gt;</span><span style="color: #000000;"> </span><span style="color: #800080;">0</span><span style="color: #000000;">)
</span><span style="color: #008080;">23</span> <span style="color: #000000;">                {
</span><span style="color: #008080;">24</span> <span style="color: #000000;">                    Position.X </span><span style="color: #000000;">-=</span><span style="color: #000000;"> </span><span style="color: #800080;">10</span><span style="color: #000000;">;
</span><span style="color: #008080;">25</span> <span style="color: #000000;">                }
</span><span style="color: #008080;">26</span> <span style="color: #000000;">                </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (touchCollection[</span><span style="color: #800080;">0</span><span style="color: #000000;">].Position.X </span><span style="color: #000000;">&gt;</span><span style="color: #000000;"> Position.X </span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;"> Position.X </span><span style="color: #000000;">&lt;</span><span style="color: #000000;"> BackBufferWidth </span><span style="color: #000000;">-</span><span style="color: #000000;"> _texture.Width)
</span><span style="color: #008080;">27</span> <span style="color: #000000;">                {
</span><span style="color: #008080;">28</span> <span style="color: #000000;">                    Position.X </span><span style="color: #000000;">+=</span><span style="color: #000000;"> </span><span style="color: #800080;">10</span><span style="color: #000000;">;
</span><span style="color: #008080;">29</span> <span style="color: #000000;">                }
</span><span style="color: #008080;">30</span> <span style="color: #000000;">                </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (touchCollection[</span><span style="color: #800080;">0</span><span style="color: #000000;">].Position.Y </span><span style="color: #000000;">&lt;</span><span style="color: #000000;"> Position.Y </span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;"> Position.Y </span><span style="color: #000000;">&gt;</span><span style="color: #000000;"> </span><span style="color: #800080;">0</span><span style="color: #000000;">)
</span><span style="color: #008080;">31</span> <span style="color: #000000;">                {
</span><span style="color: #008080;">32</span> <span style="color: #000000;">                    Position.Y </span><span style="color: #000000;">-=</span><span style="color: #000000;"> </span><span style="color: #800080;">10</span><span style="color: #000000;">;
</span><span style="color: #008080;">33</span> <span style="color: #000000;">                }
</span><span style="color: #008080;">34</span> <span style="color: #000000;">                </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (touchCollection[</span><span style="color: #800080;">0</span><span style="color: #000000;">].Position.Y </span><span style="color: #000000;">&gt;</span><span style="color: #000000;"> Position.Y </span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;"> Position.Y </span><span style="color: #000000;">&lt;</span><span style="color: #000000;"> BackBufferHeight </span><span style="color: #000000;">-</span><span style="color: #000000;"> _texture.Height)
</span><span style="color: #008080;">35</span> <span style="color: #000000;">                {
</span><span style="color: #008080;">36</span> <span style="color: #000000;">                    Position.Y </span><span style="color: #000000;">+=</span><span style="color: #000000;"> </span><span style="color: #800080;">10</span><span style="color: #000000;">;
</span><span style="color: #008080;">37</span> <span style="color: #000000;">                }
</span><span style="color: #008080;">38</span> <span style="color: #000000;">            }
</span><span style="color: #008080;">39</span> <span style="color: #000000;">        }</span></pre>
<p>Il ne reste plus qu’à afficher notre sprite grâce à une méthode Draw qui prendra en paramètre un SpriteBatch. Il est important de rappeler qu’il faut toujours limiter le nombre d’instance de SpriteBatch. C’est pour cette raison que nous passons celui de la classe Game1 en paramètre. Ajoutez la méthode Draw.</p>
<pre style="background-color: white;"><span style="color: #008080;">1</span> <span style="color: #000000;">        </span><span style="color: #008000;">//</span><span style="color: #008000;">Affiche le sprite à l’écran</span><span style="color: #008000;">
</span><span style="color: #008080;">2</span> <span style="color: #000000;">        </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> Draw(SpriteBatch monSpriteBatch)
</span><span style="color: #008080;">3</span> <span style="color: #000000;">        {
</span><span style="color: #008080;">4</span> <span style="color: #000000;">            monSpriteBatch.Draw(_texture, Position, Color.White);
</span><span style="color: #008080;">5</span> <span style="color: #000000;">        }</span></pre>
<p><strong>Utiliser la classe Sprite</strong></p>
<p>Et voilà, la classe Sprite.cs est terminée. N’oubliez pas de modifier la classe Game1.cs pour utiliser notre nouvelle classe Sprite. Voici un exemple :</p>
<pre style="background-color: white;"><span style="color: #008080;"> 1</span> <span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> Game1 : Microsoft.Xna.Framework.Game
</span><span style="color: #008080;"> 2</span> <span style="color: #000000;">    {
</span><span style="color: #008080;"> 3</span> <span style="color: #000000;">        GraphicsDeviceManager graphics;
</span><span style="color: #008080;"> 4</span> <span style="color: #000000;">        SpriteBatch spriteBatch;
</span><span style="color: #008080;"> 5</span> <span style="color: #000000;">        Sprite logo;
</span><span style="color: #008080;"> 6</span> <span style="color: #000000;">        TouchCollection touchCollection;
</span><span style="color: #008080;"> 7</span> <span style="color: #000000;">        </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">const</span><span style="color: #000000;"> </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> BackBufferWidth </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800080;">480</span><span style="color: #000000;">;
</span><span style="color: #008080;"> 8</span> <span style="color: #000000;">        </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">const</span><span style="color: #000000;"> </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> BackBufferHeight </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800080;">800</span><span style="color: #000000;">;
</span><span style="color: #008080;"> 9</span> <span style="color: #000000;">
</span><span style="color: #008080;">10</span> <span style="color: #000000;">        </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> Game1()
</span><span style="color: #008080;">11</span> <span style="color: #000000;">        {
</span><span style="color: #008080;">12</span> <span style="color: #000000;">            graphics </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> GraphicsDeviceManager(</span><span style="color: #0000ff;">this</span><span style="color: #000000;">);
</span><span style="color: #008080;">13</span> <span style="color: #000000;">            Content.RootDirectory </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800000;">"</span><span style="color: #800000;">Content</span><span style="color: #800000;">"</span><span style="color: #000000;">;
</span><span style="color: #008080;">14</span> <span style="color: #000000;">            graphics.PreferredBackBufferWidth </span><span style="color: #000000;">=</span><span style="color: #000000;"> BackBufferWidth;
</span><span style="color: #008080;">15</span> <span style="color: #000000;">            graphics.PreferredBackBufferHeight </span><span style="color: #000000;">=</span><span style="color: #000000;"> BackBufferHeight;
</span><span style="color: #008080;">16</span> <span style="color: #000000;">
</span><span style="color: #008080;">17</span> <span style="color: #000000;">            </span><span style="color: #008000;">//</span><span style="color: #008000;"> Frame rate is 30 fps by default for Windows Phone.</span><span style="color: #008000;">
</span><span style="color: #008080;">18</span> <span style="color: #000000;">            TargetElapsedTime </span><span style="color: #000000;">=</span><span style="color: #000000;"> TimeSpan.FromTicks(</span><span style="color: #800080;">333333</span><span style="color: #000000;">);
</span><span style="color: #008080;">19</span> <span style="color: #000000;">        }
</span><span style="color: #008080;">20</span> <span style="color: #000000;">
</span><span style="color: #008080;">21</span> <span style="color: #000000;">        </span><span style="color: #0000ff;">protected</span><span style="color: #000000;"> </span><span style="color: #0000ff;">override</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> Initialize()
</span><span style="color: #008080;">22</span> <span style="color: #000000;">        {
</span><span style="color: #008080;">23</span> <span style="color: #000000;">            </span><span style="color: #008000;">//</span><span style="color: #008000;"> TODO: Add your initialization logic here</span><span style="color: #008000;">
</span><span style="color: #008080;">24</span> <span style="color: #000000;">            touchCollection </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> TouchCollection();
</span><span style="color: #008080;">25</span> <span style="color: #000000;">            logo </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> Sprite();
</span><span style="color: #008080;">26</span> <span style="color: #000000;">            </span><span style="color: #0000ff;">base</span><span style="color: #000000;">.Initialize();
</span><span style="color: #008080;">27</span> <span style="color: #000000;">        }
</span><span style="color: #008080;">28</span> <span style="color: #000000;">
</span><span style="color: #008080;">29</span> <span style="color: #000000;">        </span><span style="color: #0000ff;">protected</span><span style="color: #000000;"> </span><span style="color: #0000ff;">override</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> LoadContent()
</span><span style="color: #008080;">30</span> <span style="color: #000000;">        {
</span><span style="color: #008080;">31</span> <span style="color: #000000;">            </span><span style="color: #008000;">//</span><span style="color: #008000;"> Create a new SpriteBatch, which can be used to draw textures.</span><span style="color: #008000;">
</span><span style="color: #008080;">32</span> <span style="color: #000000;">            spriteBatch </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> SpriteBatch(GraphicsDevice);
</span><span style="color: #008080;">33</span> <span style="color: #000000;">            logo.LoadContent(Content, </span><span style="color: #800000;">"</span><span style="color: #800000;">logo_HD</span><span style="color: #800000;">"</span><span style="color: #000000;">);
</span><span style="color: #008080;">34</span> <span style="color: #000000;">            logo.Position </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> Vector2(</span><span style="color: #800080;">240</span><span style="color: #000000;">, </span><span style="color: #800080;">400</span><span style="color: #000000;">);
</span><span style="color: #008080;">35</span> <span style="color: #000000;">        }
</span><span style="color: #008080;">36</span> <span style="color: #000000;">
</span><span style="color: #008080;">37</span> <span style="color: #000000;">        </span><span style="color: #0000ff;">protected</span><span style="color: #000000;"> </span><span style="color: #0000ff;">override</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> UnloadContent()
</span><span style="color: #008080;">38</span> <span style="color: #000000;">        {
</span><span style="color: #008080;">39</span> <span style="color: #000000;">            </span><span style="color: #008000;">//</span><span style="color: #008000;"> TODO: Unload any non ContentManager content here</span><span style="color: #008000;">
</span><span style="color: #008080;">40</span> <span style="color: #000000;">        }
</span><span style="color: #008080;">41</span> <span style="color: #000000;">
</span><span style="color: #008080;">42</span> <span style="color: #000000;">        </span><span style="color: #0000ff;">protected</span><span style="color: #000000;"> </span><span style="color: #0000ff;">override</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> Update(GameTime gameTime)
</span><span style="color: #008080;">43</span> <span style="color: #000000;">        {
</span><span style="color: #008080;">44</span> <span style="color: #000000;">            </span><span style="color: #008000;">//</span><span style="color: #008000;"> Allows the game to exit</span><span style="color: #008000;">
</span><span style="color: #008080;">45</span> <span style="color: #000000;">            </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (GamePad.GetState(PlayerIndex.One).Buttons.Back </span><span style="color: #000000;">==</span><span style="color: #000000;"> ButtonState.Pressed)
</span><span style="color: #008080;">46</span> <span style="color: #000000;">                </span><span style="color: #0000ff;">this</span><span style="color: #000000;">.Exit();
</span><span style="color: #008080;">47</span> <span style="color: #000000;">
</span><span style="color: #008080;">48</span> <span style="color: #000000;">            touchCollection </span><span style="color: #000000;">=</span><span style="color: #000000;"> TouchPanel.GetState();
</span><span style="color: #008080;">49</span> <span style="color: #000000;">            logo.Update(touchCollection, BackBufferWidth, BackBufferHeight);
</span><span style="color: #008080;">50</span> <span style="color: #000000;">
</span><span style="color: #008080;">51</span> <span style="color: #000000;">            </span><span style="color: #0000ff;">base</span><span style="color: #000000;">.Update(gameTime);
</span><span style="color: #008080;">52</span> <span style="color: #000000;">        }
</span><span style="color: #008080;">53</span> <span style="color: #000000;">
</span><span style="color: #008080;">54</span> <span style="color: #000000;">        </span><span style="color: #0000ff;">protected</span><span style="color: #000000;"> </span><span style="color: #0000ff;">override</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> Draw(GameTime gameTime)
</span><span style="color: #008080;">55</span> <span style="color: #000000;">        {
</span><span style="color: #008080;">56</span> <span style="color: #000000;">            GraphicsDevice.Clear(Color.CornflowerBlue);
</span><span style="color: #008080;">57</span> <span style="color: #000000;">
</span><span style="color: #008080;">58</span> <span style="color: #000000;">            spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend);
</span><span style="color: #008080;">59</span> <span style="color: #000000;">            logo.Draw(spriteBatch);
</span><span style="color: #008080;">60</span> <span style="color: #000000;">            spriteBatch.End();
</span><span style="color: #008080;">61</span> <span style="color: #000000;">            </span><span style="color: #0000ff;">base</span><span style="color: #000000;">.Draw(gameTime);
</span><span style="color: #008080;">62</span> <span style="color: #000000;">        }
</span><span style="color: #008080;">63</span> <span style="color: #000000;">    }

</span></pre>
<p>Dans la prochaine partie de cette série de tutos, nous découvrirons comment ajouter un background défilant à notre jeu. A très bientôt donc.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tequilarapido.com/2010/08/12/tutoriel-de-developpement-xna-partie-ii-mon-premier-jeu-avec-xna-4-0-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>La platine Dj du futur?</title>
		<link>http://blog.tequilarapido.com/2010/08/11/la-platine-dj-du-futur/</link>
		<comments>http://blog.tequilarapido.com/2010/08/11/la-platine-dj-du-futur/#comments</comments>
		<pubDate>Wed, 11 Aug 2010 15:38:02 +0000</pubDate>
		<dc:creator>Laurent</dc:creator>
				<category><![CDATA[Design, Création, Art]]></category>
		<category><![CDATA[Ergonomie]]></category>
		<category><![CDATA[Insolite]]></category>
		<category><![CDATA[Interfaces riches]]></category>
		<category><![CDATA[Techno]]></category>

		<guid isPermaLink="false">http://blog.tequilarapido.com/?p=3169</guid>
		<description><![CDATA[Grâce au logiciel Emulator (compatible Windows 7), on peut faire comme Dj pablo, mixer de manière tactile, faire un peu comme les Daft Punk mais en plus grand. Moi je dis la grande classe!! Regardez la vidéo ci-dessous, vous allez être bluffé!


]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;">Grâce au logiciel Emulator (compatible Windows 7), on peut faire comme Dj pablo, mixer de manière tactile, faire un peu comme les Daft Punk mais en plus grand. Moi je dis la grande classe!! Regardez la vidéo ci-dessous, vous allez être bluffé!<span id="more-3169"></span></p>
<p style="text-align: center;"><img class="aligncenter" src="http://createdigitalmusic.com/images/2010/06/emulator1.jpg" alt="Image" /></p>
<p style="text-align: center;"><a href="http://blog.tequilarapido.com/2010/08/11/la-platine-dj-du-futur/"><p><em>Cliquer ici pour voir la vidéo.</em></p></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tequilarapido.com/2010/08/11/la-platine-dj-du-futur/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Tutoriel de développement XNA / Partie II : Mon premier jeu avec XNA 4.0 (Part 1)</title>
		<link>http://blog.tequilarapido.com/2010/08/11/tutoriel-de-developpement-xna-partie-ii-mon-premier-jeu-avec-xna-4-0-part-1/</link>
		<comments>http://blog.tequilarapido.com/2010/08/11/tutoriel-de-developpement-xna-partie-ii-mon-premier-jeu-avec-xna-4-0-part-1/#comments</comments>
		<pubDate>Wed, 11 Aug 2010 14:38:56 +0000</pubDate>
		<dc:creator>yann</dc:creator>
				<category><![CDATA[L'agence]]></category>
		<category><![CDATA[Techno]]></category>

		<guid isPermaLink="false">http://blog.tequilarapido.com/?p=3156</guid>
		<description><![CDATA[Et voilà, ca y est, vous avez votre version du XNA Game Studio 4.0 installée, flambant neuve. L’émulateur Windows Phone 7 est lancé. Vous êtes maintenant prêt à créer votre premier jeu. La voie de la 2D étant la meilleure pour l’apprentissage, je vous propose d’en créer un.

Cette première partie sera dédiée à la création du projet et son premier lancement.]]></description>
			<content:encoded><![CDATA[<p>Et voilà, ca y est, vous avez votre version du XNA Game Studio 4.0 installée, flambant neuve. L’émulateur Windows Phone 7 est lancé. Vous êtes maintenant prêt à créer votre premier jeu. La voie de la 2D étant la meilleure pour l’apprentissage, je vous propose d’en créer un.</p>
<p>Cette première partie sera dédiée à la création du projet et son premier lancement.</p>
<p><span id="more-3156"></span></p>
<p><strong>Créer un nouveau projet de jeu</strong></p>
<p>Pour créer un jeu avec le framework XNA, rien de plus simple, vous devez d’abord créer un nouveau <strong>Windows Phone Game (4.0)</strong>. Comme c’est notre premier jeu, nous allons lui donner un nom original : « MonPremierJeu ». Il ne reste plus qu’à cliquer sur « OK ».</p>
<p><a href="http://blog.tequilarapido.com/wp-content/uploads/2010/08/newproject1.png"><img class="alignnone size-full wp-image-3160" title="newproject" src="http://blog.tequilarapido.com/wp-content/uploads/2010/08/newproject1.png" alt="newproject" width="609" height="422" /></a></p>
<p><strong>Découverte</strong></p>
<p>Nous voilà devant une page de code bien mystérieuse :</p>
<p><span style="color: #0000ff;">public class</span> <span style="color: #33cccc;">Game1 </span>: Microsoft.Xna.Framework.<span style="color: #33cccc;">Game</span></p>
<p>{</p>
<p><span style="color: #33cccc;">GraphicsDeviceManager </span>graphics;</p>
<p><span style="color: #33cccc;">SpriteBatch </span>spriteBatch;</p>
<p><span style="color: #0000ff;">public </span>Game1()</p>
<p>{</p>
<p>graphics = <span style="color: #0000ff;">new </span><span style="color: #33cccc;">GraphicsDeviceManager</span>(<span style="color: #0000ff;">this</span>);</p>
<p>Content.RootDirectory =<span style="color: #993300;"> &laquo;&nbsp;Content&nbsp;&raquo;</span>;</p>
<p><span style="color: #339966;">// Frame rate is 30 fps by default for Windows Phone.</span></p>
<p>TargetElapsedTime = <span style="color: #33cccc;">TimeSpan</span>.FromTicks(333333);</p>
<p>}</p>
<p><span style="color: #999999;">/// &lt;summary&gt;</span></p>
<p><span style="color: #999999;">/// </span><span style="color: #339966;">Allows the game to perform any initialization it needs to before starting to run.</span></p>
<p><span style="color: #999999;">/// </span><span style="color: #339966;">This is where it can query for any required services and load any non-graphic</span></p>
<p><span style="color: #999999;">///<span style="color: #339966;"> </span></span><span style="color: #339966;">related content.  Calling base.Initialize will enumerate through any components</span></p>
<p><span style="color: #999999;">/// </span><span style="color: #339966;">and initialize them as well.</span></p>
<p><span style="color: #999999;">///<span style="color: #999999;"> </span></span><span style="color: #999999;">&lt;/summary&gt;</span></p>
<p><span style="color: #0000ff;">protected override void</span> Initialize()</p>
<p>{</p>
<p><span style="color: #339966;">// TODO: Add your initialization logic here</span></p>
<p><span style="color: #0000ff;">base</span>.Initialize();</p>
<p>}</p>
<p><span style="color: #999999;">/// &lt;summary&gt;</span></p>
<p><span style="color: #999999;">/// </span><span style="color: #339966;">LoadContent will be called once per game and is the place to load</span></p>
<p><span style="color: #999999;">///<span style="color: #339966;"> </span></span><span style="color: #339966;">all of your content.</span></p>
<p><span style="color: #999999;">/// &lt;/summary&gt;</span></p>
<p><span style="color: #0000ff;">protected override void</span> LoadContent()</p>
<p>{</p>
<p><span style="color: #339966;">// Create a new SpriteBatch, which can be used to draw textures.</span></p>
<p>spriteBatch = new <span style="color: #33cccc;">SpriteBatch</span>(GraphicsDevice);</p>
<p><span style="color: #339966;">// TODO: use this.Content to load your game content here</span></p>
<p>}</p>
<p><span style="color: #999999;">/// &lt;summary&gt;</span></p>
<p><span style="color: #999999;">/// </span><span style="color: #339966;">UnloadContent will be called once per game and is the place to unload</span></p>
<p><span style="color: #999999;">/// </span><span style="color: #339966;">all content.</span></p>
<p><span style="color: #999999;">/// &lt;/summary&gt;</span></p>
<p><span style="color: #0000ff;">protected override void</span> UnloadContent()</p>
<p>{</p>
<p><span style="color: #339966;">// TODO: Unload any non ContentManager content here</span></p>
<p>}</p>
<p><span style="color: #999999;">/// &lt;summary&gt;</span></p>
<p><span style="color: #999999;">/// </span><span style="color: #339966;">Allows the game to run logic such as updating the world,</span></p>
<p><span style="color: #999999;">/// </span><span style="color: #339966;">checking for collisions, gathering input, and playing audio.</span></p>
<p><span style="color: #999999;">/// &lt;/summary&gt;</span></p>
<p><span style="color: #999999;">/// &lt;param name=&nbsp;&raquo;gameTime&nbsp;&raquo;&gt;Provides a snapshot of timing values.&lt;/param&gt;</span></p>
<p><span style="color: #0000ff;">protected override void</span> Update(<span style="color: #33cccc;">GameTime </span>gameTime)</p>
<p>{</p>
<p><span style="color: #339966;">// Allows the game to exit</span></p>
<p><span style="color: #0000ff;">if </span>(<span style="color: #33cccc;">GamePad</span>.GetState(<span style="color: #33cccc;">PlayerIndex</span>.One).Buttons.Back == <span style="color: #33cccc;">ButtonState</span>.Pressed)</p>
<p><span style="color: #0000ff;">this</span>.Exit();</p>
<p><span style="color: #339966;">// TODO: Add your update logic here</span></p>
<p><span style="color: #0000ff;">base</span>.Update(gameTime);</p>
<p>}</p>
<p><span style="color: #999999;">/// &lt;summary&gt;</span></p>
<p><span style="color: #999999;">///<span style="color: #339966;"> </span></span><span style="color: #339966;">This is called when the game should draw itself.</span></p>
<p><span style="color: #999999;">/// &lt;/summary&gt;</span></p>
<p><span style="color: #999999;">/// &lt;param name=&nbsp;&raquo;gameTime&nbsp;&raquo;&gt;Provides a snapshot of timing values.&lt;/param&gt;</span></p>
<p><span style="color: #0000ff;">protected override void</span> Draw(<span style="color: #33cccc;">GameTime </span>gameTime)</p>
<p>{</p>
<p><span style="color: #333333;">GraphicsDevice</span>.Clear(<span style="color: #33cccc;">Color</span>.CornflowerBlue);</p>
<p><span style="color: #339966;">// TODO: Add your drawing code here</span></p>
<p><span style="color: #0000ff;">base</span>.Draw(gameTime);</p>
<p>}</p>
<p>}</p>
<p>Analysons un peu cette classe. La classe Game1 est la base de tout nouveau projet de jeu. Elle comporte différentes méthodes que nous allons voir et qui sont appelées automatiquement selon le modèle suivant</p>
<p><a href="http://blog.tequilarapido.com/wp-content/uploads/2010/08/modeleXNA.png"><img class="alignnone size-full wp-image-3161" title="modeleXNA" src="http://blog.tequilarapido.com/wp-content/uploads/2010/08/modeleXNA.png" alt="modeleXNA" width="583" height="340" /></a></p>
<p>En premier lieu, le constructeur de la classe est appelé. Puis la méthode Initialize, dans laquelle toutes la variables vont être initialisées comme par exemple la taille d’affichage (480&#215;800 sur WP7). En bref tout ce qui n’est du contenu à afficher sur l’écran.</p>
<p>Ensuite la méthode LoadContent est appelée, permettant d’initialiser toutes les textures qui seront affichées à l’écran, les sprites, les sons…</p>
<p>Nous arrivons maintenant au cœur du processus, la boucle Upload/Draw. A partir de maintenant on entre dans une boucle qui ne s’arrêtera qu’au moment de quitter le jeu.</p>
<p>Dans la méthode Update, on place la logique du jeu, c&#8217;est-à-dire comment réagit le jeu lorsque l’on appuie sur tel ou tel bouton ou que l’on touche à telle ou telle partie de l’écran.</p>
<p>La méthode Draw permet de gérer toute la logique d’affichage du jeu, c’est dans cette méthode que l’on affichera à l’écran les personnages ou le monde par exemple.</p>
<p>Lorsque l’on décide de quitter le jeu, en appuyant sur  la touche Back du téléphone par exemple, la boucle s’arrête et on entre dans la méthode UnloadContent. Cette dernière permet de « décharger » le contenu graphique.</p>
<p><strong>Lancer le jeu</strong></p>
<p>Trêve de blabla et place à l’action, lancez le Debug et découvrez enfin ce que donne votre premier jeu ! Un bel écran bleu par défaut, ce n’est pas fameux me direz vous, mais vous en avez déjà appris beaucoup sur la logique de création de jeu car tout va tourner autour de cette classe Game1 et de la boucle de jeu.</p>
<p><a href="http://blog.tequilarapido.com/wp-content/uploads/2010/08/newTel.png"><img class="alignnone size-full wp-image-3162" title="newTel" src="http://blog.tequilarapido.com/wp-content/uploads/2010/08/newTel.png" alt="newTel" width="304" height="555" /></a></p>
<p>Dans le chapitre suivant, place au mouvement! Nous verrons comment afficher un Sprite à l’écran et le faire se déplacer grâce à l’écran tactile.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tequilarapido.com/2010/08/11/tutoriel-de-developpement-xna-partie-ii-mon-premier-jeu-avec-xna-4-0-part-1/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Tutoriel de développement XNA / Partie I : Commencer avec XNA</title>
		<link>http://blog.tequilarapido.com/2010/08/11/tutoriel-de-developpement-xna-partie-i-commencer-avec-xna/</link>
		<comments>http://blog.tequilarapido.com/2010/08/11/tutoriel-de-developpement-xna-partie-i-commencer-avec-xna/#comments</comments>
		<pubDate>Wed, 11 Aug 2010 12:48:30 +0000</pubDate>
		<dc:creator>yann</dc:creator>
				<category><![CDATA[L'agence]]></category>
		<category><![CDATA[Techno]]></category>

		<guid isPermaLink="false">http://blog.tequilarapido.com/?p=3145</guid>
		<description><![CDATA[Partie I : Commencer avec XNA

Tout ce que vous devez savoir avant de commencer la réalisation de votre jeu avec le framework XNA.

Vous avez entendu parler de ce génial truc machin chose à faire des jeux qu’est XNA et vous êtes surexcité à l’idée de créer le jeu de vos rêves, mais petit problème, vous n’êtes pas sur de ce qu’est exactement XNA, comment il fonctionne et par où commencer. Pas de problème cette série de tutos va vous prendre par la main et vous apprendre à faire vos premiers pas dans le domaine.]]></description>
			<content:encoded><![CDATA[<p><strong>Partie I : Commencer avec XNA</strong></p>
<p>Tout ce que vous devez savoir avant de commencer la réalisation de votre jeu avec le framework XNA.</p>
<p>Vous avez entendu parler de ce génial truc machin chose à faire des jeux qu’est XNA et vous êtes surexcité à l’idée de créer le jeu de vos rêves, mais petit problème, vous n’êtes pas sur de ce qu’est exactement XNA, comment il fonctionne et par où commencer. Pas de problème cette série de tutos va vous prendre par la main et vous apprendre à faire vos premiers pas dans le domaine.</p>
<p><span id="more-3145"></span></p>
<p>Pour ceux qui n’aiment pas lire, un petit résumé rapide de ce que vous devez savoir :</p>
<ul>
<li>Vous devez connaître la programmation C# pour développer sur XNA.</li>
<li>Vous devez avoir un PC avec une carte graphique qui respecte les recommandations minimum pour le framework XNA.</li>
<li>Vous devez installer les outils Microsoft (gratuits !) qui vous permettrons de créer vos jeux</li>
<li>XNA, ce n’est pas du drag-and-drop, vous devez tout programmer, mais vous n’aurez aucune limite.</li>
<li>Vous ne pourrez pas réaliser le jeu de vos rêves du premier coup, apprenez d’abord les bases.</li>
</ul>
<p>Pour les autres on peut passer aux choses sérieuses</p>
<p><strong>C’est quoi XNA ??</strong></p>
<p>Vous avez entendu parler de XNA, vous avez vu des jeux réalisés avec XNA, mais vous n’êtes pas sur de ce que vous pouvez faire ou pas avec. « XNA » ce terme est bien ambigu,  il se rapporte à toutes les technologies Microsoft en rapport avec le développement de jeux. Cela inclus DirectX et le framework XNA. Ce dont vous avez certainement entendu parler, c’est le framework XNA, ça tombe bien.</p>
<p>Le framework XNA est une API. Ce qui veut dire que c’est un framework développé par Microsoft pour vous aider à développer vos jeux plus rapidement. Ce n’est pas un drag-and-drop maker et vous devrez apprendre à programmer avant de l’utiliser.</p>
<p>Le framework XNA n’est <strong>PAS </strong>un Game engine. Il n’inclut pas la physique, les collisions et d’autres choses que l’on retrouve généralement dans les Game engines. Si c’est un Game engine que vous recherchez, je vous conseille de lire cet autre post <a title="http://blog.tequilarapido.com" href="http://blog.tequilarapido.com/2010/08/05/jeux-video-et-xna-4-0/">Jeux vidéo et XNA 4.0</a>.</p>
<p>XNA Game Studio est un environnement de développement. XNA Game Studio est un plug-in installé sur l’une des versions supportées de Visual Studio. Typiquement, les jeux développés sous le framework XNA sont écris en C#, mais il existe d’autres langage .NET supportés. Toutefois, je vous conseille fortement d’utiliser le C# car vous trouverez beaucoup plus d’aides et d’exemples utilisant ce langage.</p>
<p><strong>Que dois-je installer sur mon PC ?</strong></p>
<p>Avant de pouvoir commencer à développer, il vous faut télécharger et installer quelques programmes. Si vous possédez déjà Visual Studio (2008 ou 2010), cherchez XNA Game Studio (3.1 ou 4.0 uniquement avec VS2010), sinon il existe un pack complet XNA 4.0 (version Beta actuellement) téléchargeable ici. C’est cette version qui sera utilisée dans la suite de cette série de tutoriels, puisque plus récente et permettant de développer pour Windows Phone 7 !</p>
<p><strong>Ou chercher de l’aide ?</strong></p>
<p>Cherchez sur les forums, la plupart du temps, la réponse à votre problème a déjà été trouvée sur le post d’un forum. Une chose à savoir, la plupart des forums XNA sont en anglais, alors sortez vos vieux bouquins d’anglais et mettez-y vous !</p>
<p>Une adresse à retenir : <a href="http://forums.xna.com/">http://forums.xna.com</a> le forum officiel de développement XNA.</p>
<p><strong>Comment faire un jeu NextGen ?</strong></p>
<p>Maintenant que vous avez les bases, vous êtes prêt à faire le jeu de vos rêves ? Faux ! Vous n’allez pas créer ce jeu au premier essai et probablement pas avant une 50aine d’autres tentatives. Mettez cette idée de côté, notez la sur le coin d’une feuille pour plus tard, une fois que vous aurez acquis assez d’expérience. Vous serez bientôt prêt, mais si vous vous lancez directement dans cette aventure vous vous casserez probablement les dents dessus et serez dégouté.</p>
<p>Rappelez vous, prudence est mère de sureté, allez-y progressivement, pas à pas, et vous serez capable de réaliser ce fameux jeu.</p>
<p>A tout de suite pour la partie suivante.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tequilarapido.com/2010/08/11/tutoriel-de-developpement-xna-partie-i-commencer-avec-xna/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Après Facebook, c&#8217;est Twitter qui lance &#171;&#160;son&#160;&#187; bouton &#171;&#160;Tweet&#160;&#187;!</title>
		<link>http://blog.tequilarapido.com/2010/08/11/apres-facebook-cest-twitter-qui-lance-son-bouton-tweet/</link>
		<comments>http://blog.tequilarapido.com/2010/08/11/apres-facebook-cest-twitter-qui-lance-son-bouton-tweet/#comments</comments>
		<pubDate>Wed, 11 Aug 2010 10:14:43 +0000</pubDate>
		<dc:creator>Laurent</dc:creator>
				<category><![CDATA[Ergonomie]]></category>
		<category><![CDATA[Techno]]></category>

		<guid isPermaLink="false">http://blog.tequilarapido.com/?p=3135</guid>
		<description><![CDATA[Après le succès du bouton &#171;&#160;Like&#160;&#187; de Facebook, Twitter contre attaque en lançant son bouton officiel de partage &#171;&#160;Tweet&#160;&#187; .

3 versions du bouton sont disponibles (110&#215;20 / 55&#215;20 / 55&#215;63)  avec 5 possibilités de personnalisation.




Source : Mashable
]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">Après le succès du bouton &laquo;&nbsp;Like&nbsp;&raquo; de Facebook, Twitter contre attaque en lançant son bouton officiel de partage &laquo;&nbsp;Tweet&nbsp;&raquo; .</p>
<p style="text-align: left;"><span id="more-3135"></span></p>
<p style="text-align: center;">3 versions du bouton sont disponibles (110&#215;20 / 55&#215;20 / 55&#215;63)  avec 5 possibilités de personnalisation.</p>
<p style="text-align: center;"><img class="aligncenter" src="http://cdn.mashable.com/wp-content/uploads/2010/08/tweet-button.jpg" alt="" width="576" height="326" /></p>
<p style="text-align: center;"><img class="aligncenter" src="http://cdn.mashable.com/wp-content/uploads/2010/08/tweet-button-2.jpg" alt="" width="576" height="337" /></p>
<p style="text-align: center;"><img class="aligncenter" src="http://cdn.mashable.com/wp-content/uploads/2010/08/tweet-buttons-4-2.jpg" alt="" width="576" height="325" /></p>
<p style="text-align: center;"><img class="aligncenter" src="http://cdn.mashable.com/wp-content/uploads/2010/08/twitter-button-31.jpg" alt="" width="576" height="335" /></p>
<p style="text-align: center;">Source : <a href="http://mashable.com/2010/08/10/twitter-official-share-buttons/" target="_blank">Mashable</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tequilarapido.com/2010/08/11/apres-facebook-cest-twitter-qui-lance-son-bouton-tweet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Créer votre première application Windows Phone 7 en MVVM.</title>
		<link>http://blog.tequilarapido.com/2010/08/11/creer-votre-premiere-application-windows-phone-7-en-mvvm/</link>
		<comments>http://blog.tequilarapido.com/2010/08/11/creer-votre-premiere-application-windows-phone-7-en-mvvm/#comments</comments>
		<pubDate>Wed, 11 Aug 2010 08:23:26 +0000</pubDate>
		<dc:creator>rodrigue</dc:creator>
				<category><![CDATA[L'agence]]></category>
		<category><![CDATA[Techno]]></category>

		<guid isPermaLink="false">http://blog.tequilarapido.com/?p=3107</guid>
		<description><![CDATA[Le but de ce tutoriel est de créer un mini client Twitter avec le pattern MVVM, on va faire exactement le même client twitter que Scott Guthrie a fait pendant la présentation MIX 10 sauf qu’on va le faire en MVVM.
Pourquoi MVVM ?

MVVM est un pattern qui facilite les tests de code et les taches [...]]]></description>
			<content:encoded><![CDATA[<p>Le but de ce tutoriel est de créer un mini client Twitter avec le pattern MVVM, on va faire exactement le même client twitter que <a href="http://weblogs.asp.net/scottgu/archive/2010/03/18/building-a-windows-phone-7-twitter-application-using-silverlight.aspx">Scott Guthrie a fait pendant la présentation MIX 10</a> sauf qu’on va le faire en MVVM.<br />
Pourquoi MVVM ?</p>
<p><span id="more-3107"></span><br />
MVVM est un pattern qui facilite les tests de code et les taches des développeurs et designers comme il n’y’a pas de « code behind » dans le vues.<br />
Voici un schéma résumant le pattern :</p>
<p><img title="MVVM" src="http://blog.tequilarapido.com/wp-content/uploads/2010/08/image.axd.jpg" alt="MVVM" width="244" height="220" /></p>
<p>Pour développer sur Windows Phone 7, vous devez télécharger le SDK qui est gratuit [ici]. La version en ligne maintenant est la Beta.<br />
Pour commencer on va utiliser le template que nous avons mis à disposition sur Visual Studio Gallery qui nous permet de gagner du temps.</p>
<p><img title="new project" src="http://blog.tequilarapido.com/wp-content/uploads/2010/08/newproject.png" alt="new project" width="50%" /></p>
<p>Vous remarquerez que :</p>
<p>Les répertoires «ViewModel » / « Views » / «Model » sont déjà crées   et  Les fichiers MainViewModel.cs / ViewModelBase.cs aussi  déjà crées.</p>
<p>Attaquons le Model et ajoutons une classe « Tweet »</p>
<p>Ajouter la référence : System.Xml.Linq qui va nous faciliter le parçage XML</p>
<p><img title="reference" src="http://blog.tequilarapido.com/wp-content/uploads/2010/08/reference.png" alt="reference" width="50%" /></p>
<p>Ajoutez aussi dans la classe «Tweet »  les 2 namespaces :</p>
<ul>
<li>System.Xml.Linq</li>
<li>System.Linq</li>
</ul>
<p>Ajoutez les propriétés dont on a besoin : Username, Message, ImageSource (tous de type string) et la méthode statique qui va parser le résultat xml.</p>
<div><!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --><span style="color: #000000;"> </span><span style="color: #0000FF;">public</span><span style="color: #000000;"> </span><span style="color: #0000FF;">static</span><span style="color: #000000;"> ObservableCollection</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">Tweet</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"> GetTweetsFromResponse(String Response)<br />
{<br />
List</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">Tweet</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"> lstTweets </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000FF;">new</span><span style="color: #000000;"> List</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">Tweet</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">();<br />
XElement xmlTweets </span><span style="color: #000000;">=</span><span style="color: #000000;"> XElement.Parse(Response);<br />
lstTweets </span><span style="color: #000000;">=</span><span style="color: #000000;"> (from tweet </span><span style="color: #0000FF;">in</span><span style="color: #000000;"> xmlTweets.Descendants(</span><span style="color: #800000;">&laquo;&nbsp;</span><span style="color: #800000;">status</span><span style="color: #800000;">&laquo;&nbsp;</span><span style="color: #000000;">)<br />
select </span><span style="color: #0000FF;">new</span><span style="color: #000000;"> Tweet<br />
{<br />
ImageSource </span><span style="color: #000000;">=</span><span style="color: #000000;"> tweet.Element(</span><span style="color: #800000;">&laquo;&nbsp;</span><span style="color: #800000;">user</span><span style="color: #800000;">&laquo;&nbsp;</span><span style="color: #000000;">).Element(</span><span style="color: #800000;">&laquo;&nbsp;</span><span style="color: #800000;">profile_image_url</span><span style="color: #800000;">&laquo;&nbsp;</span><span style="color: #000000;">).Value,<br />
Message </span><span style="color: #000000;">=</span><span style="color: #000000;"> tweet.Element(</span><span style="color: #800000;">&laquo;&nbsp;</span><span style="color: #800000;">text</span><span style="color: #800000;">&laquo;&nbsp;</span><span style="color: #000000;">).Value,<br />
Username </span><span style="color: #000000;">=</span><span style="color: #000000;"> tweet.Element(</span><span style="color: #800000;">&laquo;&nbsp;</span><span style="color: #800000;">user</span><span style="color: #800000;">&laquo;&nbsp;</span><span style="color: #000000;">).Element(</span><span style="color: #800000;">&laquo;&nbsp;</span><span style="color: #800000;">screen_name</span><span style="color: #800000;">&laquo;&nbsp;</span><span style="color: #000000;">).Value<br />
}).ToList();<br />
ObservableCollection</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">Tweet</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"> obsTweets </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000FF;">new</span><span style="color: #000000;"> ObservableCollection</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">Tweet</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">();<br />
</span><span style="color: #0000FF;"> foreach</span><span style="color: #000000;"> (Tweet t </span><span style="color: #0000FF;">in</span><span style="color: #000000;"> lstTweets)<br />
obsTweets.Add(t);<span style="color: #0000FF;"> </span><span style="color: #0000FF;">return</span><span style="color: #000000;"> obsTweets;</span></span></div>
<div><span style="color: #000000;"> </span> }</div>
<div><span style="color: #000000;"><br />
Maintenant on peut procéder au ViewModel:</p>
<p>Ajoutez la propriété de type <strong>ObservableCollection&lt;Tweet&gt; :</strong></p>
<div><!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --><span style="color: #000000;"> </span><span style="color: #0000FF;">private</span><span style="color: #000000;"> ObservableCollection</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">Tweet</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"> lstTweets;<br />
</span><span style="color: #0000FF;">public</span><span style="color: #000000;"> ObservableCollection</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">Tweet</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"> LstTweets<br />
{<br />
</span><span style="color: #0000FF;">get</span><span style="color: #000000;"> { </span><span style="color: #0000FF;">return</span><span style="color: #000000;"> lstTweets; }<br />
</span><span style="color: #0000FF;">set</span><span style="color: #000000;"><br />
{<br />
</span><span style="color: #0000FF;">if</span><span style="color: #000000;"> (lstTweets </span><span style="color: #000000;">!=</span><span style="color: #000000;"> value)<br />
{<br />
lstTweets </span><span style="color: #000000;">=</span><span style="color: #000000;"> value;<br />
OnNotifyPropertyChanged(LstTweetsPropertyName);<br />
}<br />
}<br />
}</p>
<p><span style="color: #0000FF;">public</span><span style="color: #000000;"> </span><span style="color: #0000FF;">const</span><span style="color: #000000;"> </span><span style="color: #0000FF;">string</span><span style="color: #000000;"> LstTweetsPropertyName </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800000;">&laquo;&nbsp;</span><span style="color: #800000;">LstTweets</span><span style="color: #800000;">&laquo;&nbsp;</span><span style="color: #000000;">;<br />
</span></p>
<p></span></div>
<p>Ajoutez ces méthodes qui permettent l’appel plus la response de l’API Twitter:</p>
<div><!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --><span style="color: #000000;"> </span><span style="color: #0000FF;">private</span><span style="color: #000000;"> </span><span style="color: #0000FF;">void</span><span style="color: #000000;"> GetTweetsCall(</span><span style="color: #0000FF;">string</span><span style="color: #000000;"> screenName)<br />
{<br />
WebClient client </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000FF;">new</span><span style="color: #000000;"> WebClient();<br />
client.DownloadStringCompleted </span><span style="color: #000000;">+=</span><span style="color: #000000;"><br />
</span><span style="color: #0000FF;">new</span><span style="color: #000000;"> DownloadStringCompletedEventHandler(twitter_Response);<br />
client.DownloadStringAsync(<br />
</span><span style="color: #0000FF;">new</span><span style="color: #000000;"> Uri(</span><span style="color: #800000;">&laquo;&nbsp;</span><span style="color: #800000;">http://api.twitter.com/1/statuses/user_timeline.xml?screen_name=</span><span style="color: #800000;">&laquo;&nbsp;</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">+</span><span style="color: #000000;"> screenName));<br />
}</p>
<p><span style="color: #0000FF;">private</span><span style="color: #000000;"> </span><span style="color: #0000FF;">void</span><span style="color: #000000;"> twitter_Response(</span><span style="color: #0000FF;">object</span><span style="color: #000000;"> sender, DownloadStringCompletedEventArgs e)<br />
{<br />
</span><span style="color: #0000FF;">if</span><span style="color: #000000;"> (e.Error </span><span style="color: #000000;">==</span><span style="color: #000000;"> </span><span style="color: #0000FF;">null</span><span style="color: #000000;">)<br />
{<br />
LstTweets </span><span style="color: #000000;">=</span><span style="color: #000000;"> Tweet.GetTweetsFromResponse(e.Result);<br />
}<br />
}</span></p>
<p>C’est avec un bouton qu’ on va exécuter commande, sauf que les commandes n’existaient pas en Silverlight 3 , et comme WP7 c’est du Silverlight 3 on va utiliser le toolkit <a href="http://galasoft.ch/mvvm/getstarted/">MVVM Light</a> pour faciliter notre tache.</p>
<p>Donc téléchargez les .dll d’ici et ajoutez « GalaSoft.MvvmLight.WP7 »  comme référence.</p>
<p>Apres avoir fait ca retournons au MainViewModel  pour ajouter notre <strong>RelayCommand </strong>:</p>
<div><!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --><span style="color: #0000FF;">public</span><span style="color: #000000;"> RelayCommand</span><span style="color: #000000;">&lt;</span><span style="color: #0000FF;">string</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"> MyCommand { </span><span style="color: #0000FF;">get</span><span style="color: #000000;">; </span><span style="color: #0000FF;">set</span><span style="color: #000000;">; }</span></div>
<div><span style="color: #000000;">Pour une explication détaillée du <strong>RelayCommand</strong> référez vous au <a href="http://blog.galasoft.ch/archive/2009/09/26/using-relaycommands-in-silverlight-and-wpf.aspx">post </a>de Laurent Bugnon (le créateur du toolkit).</span></div>
<div><span style="color: #000000;">Dans le constructeur du MainViewModel : initialisez le RelayCommand :</p>
<div><!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --><span style="color: #000000;"> MyCommand </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000FF;">new</span><span style="color: #000000;"> RelayCommand</span><span style="color: #000000;">&lt;</span><span style="color: #0000FF;">string</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">( param </span><span style="color: #000000;">=&gt;</span><span style="color: #000000;"><br />
{<br />
GetTweetsCall(param);<br />
});</span></div>
<div><span style="color: #000000;">Vous avez donc remarqué j’utilise une expression lambda pour faire des appelles plus rapidement : «param» c’est le contenu du textbox qu’on va renvoyer.</p>
<p>Et on appellera la méthode GetTweetsCall à chaque fois que la commande est exécutée.</p>
<p>Donc votre MainViewModel doit ressembler à ca maintenant :</p>
<p>Les proprietés :</p>
<div><!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --><span style="color: #0000FF;">private</span><span style="color: #000000;"> ObservableCollection</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">Tweet</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"> lstTweets;<br />
</span><span style="color: #0000FF;">public</span><span style="color: #000000;"> ObservableCollection</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">Tweet</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"> LstTweets<br />
{<br />
</span><span style="color: #0000FF;">get</span><span style="color: #000000;"> { </span><span style="color: #0000FF;">return</span><span style="color: #000000;"> lstTweets; }<br />
</span><span style="color: #0000FF;">set</span><span style="color: #000000;"><br />
{<br />
</span><span style="color: #0000FF;">if</span><span style="color: #000000;"> (lstTweets </span><span style="color: #000000;">!=</span><span style="color: #000000;"> value)<br />
{<br />
lstTweets </span><span style="color: #000000;">=</span><span style="color: #000000;"> value;<br />
OnNotifyPropertyChanged(LstTweetsPropertyName);<br />
}<br />
}<br />
}</p>
<p><span style="color: #0000FF;">public</span><span style="color: #000000;"> </span><span style="color: #0000FF;">const</span><span style="color: #000000;"> </span><span style="color: #0000FF;">string</span><span style="color: #000000;"> LstTweetsPropertyName </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800000;">&laquo;&nbsp;</span><span style="color: #800000;">LstTweets</span><span style="color: #800000;">&laquo;&nbsp;</span><span style="color: #000000;">;</span></p>
<p><span style="color: #0000FF;">public</span><span style="color: #000000;"> RelayCommand</span><span style="color: #000000;">&lt;</span><span style="color: #0000FF;">string</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"> MyCommand { </span><span style="color: #0000FF;">get</span><span style="color: #000000;">; </span><span style="color: #0000FF;">set</span><span style="color: #000000;">; }</span></p>
<p>Le constructeur:</p>
<div><!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --><span style="color: #0000FF;">public</span><span style="color: #000000;"> MainViewModel()<br />
{<br />
MyCommand </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000FF;">new</span><span style="color: #000000;"> RelayCommand</span><span style="color: #000000;">&lt;</span><span style="color: #0000FF;">string</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">( param </span><span style="color: #000000;">=&gt;</span><span style="color: #000000;"><br />
{<br />
GetTweetsCall(param);<br />
});<br />
}</span></div>
<div>
<p>Les méthodes:</p></div>
<div><!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --><span style="color: #0000FF;">private</span><span style="color: #000000;"> </span><span style="color: #0000FF;">void</span><span style="color: #000000;"> GetTweetsCall(</span><span style="color: #0000FF;">string</span><span style="color: #000000;"> screenName)<br />
{<br />
WebClient client </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000FF;">new</span><span style="color: #000000;"> WebClient();<br />
client.DownloadStringCompleted </span><span style="color: #000000;">+=</span><span style="color: #000000;"><br />
</span><span style="color: #0000FF;">new</span><span style="color: #000000;"> DownloadStringCompletedEventHandler(twitter_Response);<br />
client.DownloadStringAsync(<br />
</span><span style="color: #0000FF;">new</span><span style="color: #000000;"> Uri(</span><span style="color: #800000;">&laquo;&nbsp;</span><span style="color: #800000;">http://api.twitter.com/1/statuses/user_timeline.xml?screen_name=</span><span style="color: #800000;">&laquo;&nbsp;</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">+</span><span style="color: #000000;"> screenName));<br />
}</p>
<p><span style="color: #0000FF;">private</span><span style="color: #000000;"> </span><span style="color: #0000FF;">void</span><span style="color: #000000;"> twitter_Response(</span><span style="color: #0000FF;">object</span><span style="color: #000000;"> sender, DownloadStringCompletedEventArgs e)<br />
{<br />
</span><span style="color: #0000FF;">if</span><span style="color: #000000;"> (e.Error </span><span style="color: #000000;">==</span><span style="color: #000000;"> </span><span style="color: #0000FF;">null</span><span style="color: #000000;">)<br />
{<br />
LstTweets </span><span style="color: #000000;">=</span><span style="color: #000000;"> Tweet.GetTweetsFromResponse(e.Result);<br />
}<br />
}</span></p>
<p>Passons à la vue!</p>
<p>Dans le premier pivotitem ajoutons un textbox, un bouton et une listbox.</p>
<p>Ajoutez le namespace pour la commande a travers MVVM Light toolkit : xmlns:cmd=&nbsp;&raquo;clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.WP7&#8243;</p>
<p>Liez la commande au bouton et le paramètre de la commande avec en binding la propriété «Text »  du TextBox ajouté:</p>
<div><!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">TextBox </span><span style="color: #FF0000;">x:Name</span><span style="color: #0000FF;">=&nbsp;&raquo;txtUser&nbsp;&raquo;</span><span style="color: #FF0000;"> Width</span><span style="color: #0000FF;">=&nbsp;&raquo;250&#8243;</span><span style="color: #FF0000;"> Height</span><span style="color: #0000FF;">=&nbsp;&raquo;70&#8243;</span><span style="color: #0000FF;">&gt;&lt;/</span><span style="color: #800000;">TextBox</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">Button </span><span style="color: #FF0000;">Content</span><span style="color: #0000FF;">=&nbsp;&raquo;{Binding Lookup, Source={StaticResource HomeResourceStrings}}&nbsp;&raquo;</span><span style="color: #FF0000;"><br />
cmd:ButtonBaseExtensions.Command</span><span style="color: #0000FF;">=&nbsp;&raquo;{Binding MyCommand}&nbsp;&raquo;</span><span style="color: #FF0000;"><br />
cmd:ButtonBaseExtensions.CommandParameter</span><span style="color: #0000FF;">=&nbsp;&raquo;{Binding Text, ElementName=txtUser}&nbsp;&raquo;</span><span style="color: #FF0000;"><br />
Width</span><span style="color: #0000FF;">=&nbsp;&raquo;215&#8243;</span><span style="color: #0000FF;">&gt;&lt;/</span><span style="color: #800000;">Button</span><span style="color: #0000FF;">&gt;</span></div>
<div></div>
<div>«cmd :ButtonBaseExtensions »  provient du toolkit donc et ca va nous permettre de faire ce qui est possible en Silverlight 4 : utiliser une commande avec un boutton.<br />
Et enfin créer une listbox ou l’ItemTemplate contiendra une image et 2 textbox (une pour le username et l’autre pour le message).<br />
Pour avoir quelque chose qui ressemble à ca dans votre PivotItem :</div>
<div></div>
<div><!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">StackPanel </span><span style="color: #FF0000;">Orientation</span><span style="color: #0000FF;">=&nbsp;&raquo;Vertical&nbsp;&raquo;</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">StackPanel </span><span style="color: #FF0000;">Orientation</span><span style="color: #0000FF;">=&nbsp;&raquo;Horizontal&nbsp;&raquo;</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">TextBox </span><span style="color: #FF0000;">x:Name</span><span style="color: #0000FF;">=&nbsp;&raquo;txtUser&nbsp;&raquo;</span><span style="color: #FF0000;"> Width</span><span style="color: #0000FF;">=&nbsp;&raquo;250&#8243;</span><span style="color: #FF0000;"> Height</span><span style="color: #0000FF;">=&nbsp;&raquo;70&#8243;</span><span style="color: #0000FF;">&gt;&lt;/</span><span style="color: #800000;">TextBox</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">Button </span><span style="color: #FF0000;">Content</span><span style="color: #0000FF;">=&nbsp;&raquo;{Binding Lookup, Source={StaticResource HomeResourceStrings}}&nbsp;&raquo;</span><span style="color: #FF0000;"> cmd:ButtonBaseExtensions.Command</span><span style="color: #0000FF;">=&nbsp;&raquo;{Binding MyCommand}&nbsp;&raquo;</span><span style="color: #FF0000;"> cmd:ButtonBaseExtensions.CommandParameter</span><span style="color: #0000FF;">=&nbsp;&raquo;{Binding Text, ElementName=txtUser}&nbsp;&raquo;</span><span style="color: #FF0000;"> Width</span><span style="color: #0000FF;">=&nbsp;&raquo;215&#8243;</span><span style="color: #0000FF;">&gt;&lt;/</span><span style="color: #800000;">Button</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000FF;">&lt;/</span><span style="color: #800000;">StackPanel</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;"></p>
<p><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">ListBox </span><span style="color: #FF0000;">Height</span><span style="color: #0000FF;">=&nbsp;&raquo;500&#8243;</span><span style="color: #FF0000;"> HorizontalAlignment</span><span style="color: #0000FF;">=&nbsp;&raquo;Left&nbsp;&raquo;</span><span style="color: #FF0000;"><br />
VerticalAlignment</span><span style="color: #0000FF;">=&nbsp;&raquo;Top&nbsp;&raquo;</span><span style="color: #FF0000;"><br />
Width</span><span style="color: #0000FF;">=&nbsp;&raquo;440&#8243;</span><span style="color: #FF0000;"> ItemsSource</span><span style="color: #0000FF;">=&nbsp;&raquo;{Binding LstTweets, Mode=OneWay}&nbsp;&raquo;</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">ListBox</span><span style="color: #FF0000;">.ItemTemplate</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">DataTemplate</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">StackPanel </span><span style="color: #FF0000;">Orientation</span><span style="color: #0000FF;">=&nbsp;&raquo;Horizontal&nbsp;&raquo;</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">Image </span><span style="color: #FF0000;">Height</span><span style="color: #0000FF;">=&nbsp;&raquo;100&#8243;</span><span style="color: #FF0000;"> Width</span><span style="color: #0000FF;">=&nbsp;&raquo;100&#8243;</span><span style="color: #FF0000;"> Source</span><span style="color: #0000FF;">=&nbsp;&raquo;{Binding ImageSource , Mode=OneWay}&nbsp;&raquo;</span><span style="color: #FF0000;"><br />
VerticalAlignment</span><span style="color: #0000FF;">=&nbsp;&raquo;Top&nbsp;&raquo;</span><span style="color: #FF0000;"> Margin</span><span style="color: #0000FF;">=&nbsp;&raquo;0,10,8,0&#8243;</span><span style="color: #0000FF;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">StackPanel </span><span style="color: #FF0000;">Orientation</span><span style="color: #0000FF;">=&nbsp;&raquo;Vertical&nbsp;&raquo;</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">TextBlock </span><span style="color: #FF0000;">Text</span><span style="color: #0000FF;">=&nbsp;&raquo;{Binding Username , Mode=OneWay}&nbsp;&raquo;</span><span style="color: #FF0000;"> </span><span style="color: #0000FF;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">TextBlock </span><span style="color: #FF0000;">Text</span><span style="color: #0000FF;">=&nbsp;&raquo;{Binding Message , Mode=OneWay}&nbsp;&raquo;</span><span style="color: #FF0000;"> </span><span style="color: #0000FF;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000FF;">&lt;/</span><span style="color: #800000;">StackPanel</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000FF;">&lt;/</span><span style="color: #800000;">StackPanel</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000FF;">&lt;/</span><span style="color: #800000;">DataTemplate</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000FF;">&lt;/</span><span style="color: #800000;">ListBox.ItemTemplate</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;"> </span></p>
<p><span style="color: #0000FF;">&lt;/</span><span style="color: #800000;">ListBox</span><span style="color: #0000FF;">&gt;</span></p>
<p>Vous pouvez tout à fait aussi mettre tout ca dans un User control à part et l’inclure dans le PivotItem ici en bindant le DataContext.</p>
<p>Lancez l’application :</p>
<p><img title="result" src="http://blog.tequilarapido.com/wp-content/uploads/2010/08/result.png" alt="result" height="75%" /></p>
<p></span></div>
<p></span></div>
<p></span></div>
<p></span></div>
<p></span></div>
<p></span></div>
<p></span></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.tequilarapido.com/2010/08/11/creer-votre-premiere-application-windows-phone-7-en-mvvm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Iron Man 2, retour sur les interfaces holographiques</title>
		<link>http://blog.tequilarapido.com/2010/08/09/iron-man-2-retour-sur-les-interfaces-holographiques/</link>
		<comments>http://blog.tequilarapido.com/2010/08/09/iron-man-2-retour-sur-les-interfaces-holographiques/#comments</comments>
		<pubDate>Mon, 09 Aug 2010 09:27:06 +0000</pubDate>
		<dc:creator>Laurent</dc:creator>
				<category><![CDATA[Design, Création, Art]]></category>
		<category><![CDATA[Ergonomie]]></category>
		<category><![CDATA[Interfaces riches]]></category>
		<category><![CDATA[Techno]]></category>

		<guid isPermaLink="false">http://blog.tequilarapido.com/?p=3067</guid>
		<description><![CDATA[Juste pour le plaisir de replonger dans le dernier volet d&#8217;Iron man 2 et en particulier les infographies visuelles et interfaces holographiques. Un avant-gout du futur?







]]></description>
			<content:encoded><![CDATA[<p style="text-align: center; "><span id="more-3067"></span>Juste pour le plaisir de replonger dans le dernier volet d&#8217;Iron man 2 et en particulier les infographies visuelles et interfaces holographiques. Un avant-gout du futur?</p>
<p style="text-align: center; "><img src="http://infosthetics.com/archives/iron_man_2_holographics4.jpg" alt="iron_man_2_holographics4.jpg" /></p>
<p style="text-align: center; "><img src="http://infosthetics.com/archives/iron_man_2_holographics5.jpg" alt="iron_man_2_holographics5.jpg" /></p>
<p style="text-align: center; "><img src="http://infosthetics.com/archives/iron_man_2_holographics6.jpg" alt="iron_man_2_holographics6.jpg" /></p>
<p style="text-align: center; "><img src="http://infosthetics.com/archives/iron_man_2_holographics2.jpg" alt="iron_man_2_holographics2.jpg" /></p>
<p style="text-align: center; "><a href="http://blog.tequilarapido.com/2010/08/09/iron-man-2-retour-sur-les-interfaces-holographiques/"><p><em>Cliquer ici pour voir la vidéo.</em></p></a></p>
<p style="text-align: center; ">
<p style="text-align: center; ">
]]></content:encoded>
			<wfw:commentRss>http://blog.tequilarapido.com/2010/08/09/iron-man-2-retour-sur-les-interfaces-holographiques/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TQ WP7 Starter Template &#8211; FR</title>
		<link>http://blog.tequilarapido.com/2010/08/09/tq-wp7-starter-template-fr/</link>
		<comments>http://blog.tequilarapido.com/2010/08/09/tq-wp7-starter-template-fr/#comments</comments>
		<pubDate>Mon, 09 Aug 2010 09:21:19 +0000</pubDate>
		<dc:creator>rodrigue</dc:creator>
				<category><![CDATA[L'agence]]></category>
		<category><![CDATA[Techno]]></category>
		<category><![CDATA[Technique]]></category>

		<guid isPermaLink="false">http://blog.tequilarapido.com/?p=3032</guid>
		<description><![CDATA[Parce que chaque début de projet WP7 peut être l’occasion d’une perte de temps  lors de sa préparation (énumérer les dlls dont on a besoin, les libraires de classes…) voici un template pour répartir les actions à mener de façon effective.
Comment s’y prend-on actuellement pour débuter une application WP7 ?

On cherche les contrôles panorama/pivot de codeplex, [...]]]></description>
			<content:encoded><![CDATA[<p>Parce que chaque début de projet WP7 peut être l’occasion d’une perte de temps  lors de sa préparation (énumérer les dlls dont on a besoin, les libraires de classes…) voici un template pour répartir les actions à mener de façon effective.</p>
<p>Comment s’y prend-on actuellement pour débuter une application WP7 ?</p>
<p><span id="more-3032"></span></p>
<p>On cherche les contrôles panorama/pivot de codeplex, on ajoute les dlls au projet et/ou on ajoute le projet dans sa globalité pour faire des modifications.<br />
Comme la plupart de notre développement suit le pattern MVVM : on doit ajouter les repertoires/classes pour l’organisation du projet comme «Views » « ViewModel», «Model », la classe ViewModelBase  etc..</p>
<p>Afin d’éviter cette procédure chronophage, nous avons crée un Template de projet qui est disponsible dans la <strong><a href="http://visualstudiogallery.msdn.microsoft.com/en-us/5f8407ad-eb7c-42d9-872b-4ad8462b3e43">galerie Visual Studio</a>.</strong></p>
<p><strong><img title="Project Template" src="http://blog.tequilarapido.com/wp-content/uploads/2010/08/tq.png" alt="Project Template" width="575" height="398" /></strong></p>
<p>Pour l’installer il suffit de :</p>
<ul>
<li>Copier le zip téléchargé dans votre répertoire de Template de projet (la plus part du temps ceci ce trouve dans : %HOMEDRIVE%%HOMEPATH%\Documents\Visual Studio 2010\Templates\ProjectTemplates)</li>
<li>Copier le zip téléchargé dans un autre répertoire  « Silverlight for Windows Phone» (S’il n’existe pas, créez-le.  Positionnez-le en dessous de <strong>ProjectTemplates</strong>) pour que le Template apparaisse dans la même catégorie de celles des projets Windows Phone.</li>
</ul>
<p>Comment le Template nous rend-t-il service ?</p>
<ul>
<li>Un fichier de ressource est déjà crée et ajouté comme ressource statique dans App.xaml</li>
</ul>
<p><img title="Resources" src="http://blog.tequilarapido.com/wp-content/uploads/2010/08/ress.png" alt="Resources" width="197" height="57" /></p>
<ul>
<li>Les soutiens MVVM sont crées :</li>
</ul>
<p><img title="MVVM" src="http://blog.tequilarapido.com/wp-content/uploads/2010/08/vm.png" alt="MVVM" width="191" height="57" /></p>
<p>Le MainViewModel  est ajouté aussi comme ressource static dans App.xaml</p>
<p><img title="Appress" src="http://blog.tequilarapido.com/wp-content/uploads/2010/08/Appress.png" alt="Appress" width="559" height="91" /></p>
<p>La ressource de type  MainViewModel  est déjà lié au Data Context de la page « MainPage.xaml »</p>
<p><img title="datacontext" src="http://blog.tequilarapido.com/wp-content/uploads/2010/08/datacontext-300x99.png" alt="datacontext" width="300" height="99" /></p>
<p>Ensuite tout dépend de votre usage  du modèle MVVM. Certains développeurs préfèrent ne pas mettre le MainViewModel comme ressource accessible depuis le App.xaml mais plutôt le déclarer dans la vue et puis le binder au DataContext. D’autres préfèrent créer un ViewModelLocator et déclarer les ViewModel de celui-ci (les possibilités sont multiples, à vous de voir celle qui vous convient le mieux !).</p>
<p>Afin de présenter les applications sous «metro design concept », les controls pivot/ panorama que vous pouvez récupérer de codeplex sont une nécessité (à moins de vouloir les refaire ou bien attendre que Microsoft nous délivrent les officiels).</p>
<p>Voilà à quoi ressemble le projet une fois que nous l’avons crée à travers le Template :</p>
<p><img title="dark" src="http://blog.tequilarapido.com/wp-content/uploads/2010/08/dark.png" alt="dark" width="50%" /> <img title="Light" src="http://blog.tequilarapido.com/wp-content/uploads/2010/08/light.png" alt="Light" width="50%" /></p>
<p>N.B : Pour faciliter le développement MVVM, une multitude de frameworks / toolkits existent.</p>
<p>On apprécie en particulier <a href="http://www.galasoft.ch/mvvm/getstarted/">MVVM Light Toolkit</a>.  Nous n’avons pas shouhaité faire figurer ce Toolkit dans notre Template car il dispose déjà d’un <a href="http://www.galasoft.ch/mvvm/creating/">template dédié</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tequilarapido.com/2010/08/09/tq-wp7-starter-template-fr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
