<?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>Xna tutorial</title>
	<atom:link href="http://www.xna-tutorial.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.xna-tutorial.com</link>
	<description>Otro blog más de WordPress</description>
	<lastBuildDate>Tue, 26 Apr 2011 20:35:53 +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>DreamBuildPlay 2011 ya esta aqui</title>
		<link>http://www.xna-tutorial.com/dreambuildplay-2011-ya-esta-aqui/</link>
		<comments>http://www.xna-tutorial.com/dreambuildplay-2011-ya-esta-aqui/#comments</comments>
		<pubDate>Thu, 14 Apr 2011 17:00:58 +0000</pubDate>
		<dc:creator>Agustin</dc:creator>
				<category><![CDATA[Noticias]]></category>
		<category><![CDATA[dreambuildplay]]></category>

		<guid isPermaLink="false">http://www.xna-tutorial.com/?p=315</guid>
		<description><![CDATA[La Dream Build Play 2011 para desarrolladores de videojuegos ya ha sido anunciada por Microsoft. El concurso anima a todo desarrollador de videojuegos a participar, las herramientas disponibles son XNA Game Studio. Si estas interesado te puedes registrar en http://www.dreambuildplay.com.
Cada juego sera puntuado basado en: Jugabilidad, Creatividad y Calidad. Entre los 4 primeros premios se [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">La Dream Build Play 2011 para desarrolladores de videojuegos ya ha sido anunciada por Microsoft. El concurso anima a todo desarrollador de videojuegos a participar, las herramientas disponibles son XNA Game Studio. Si estas interesado te puedes registrar en <a href="http://www.dreambuildplay.com" target="_blank">http://www.dreambuildplay.com</a>.</p>
<p style="text-align: justify;">Cada juego sera puntuado basado en:<strong> Jugabilidad, Creatividad y Calidad</strong>. Entre los 4 primeros premios se repartiran <strong>75000$</strong>, el primer premio es de 40000 el segundo de 20000 y el tercero de 10000.</p>
<p style="text-align: justify;">Segun Mark Seminatore &#8220;Microsoft ha valorado la creatividad y el pensamiento innovador de los desarrolladores indie&#8221;.<br />
Para mas informacion visita la web anterior o sigue los comentarios en twitter segun el hashtab <strong>#DBP2011</strong>.<br />
Suerte a todos.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xna-tutorial.com/dreambuildplay-2011-ya-esta-aqui/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kinect y XNA</title>
		<link>http://www.xna-tutorial.com/kinect-y-xna/</link>
		<comments>http://www.xna-tutorial.com/kinect-y-xna/#comments</comments>
		<pubDate>Thu, 07 Apr 2011 14:10:59 +0000</pubDate>
		<dc:creator>Agustin</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Jugabilidad]]></category>
		<category><![CDATA[Noticias]]></category>
		<category><![CDATA[kinect]]></category>

		<guid isPermaLink="false">http://www.xna-tutorial.com/?p=312</guid>
		<description><![CDATA[Los drivers piratas de Kinect han tenido una gran acogida, en pocos dias ya habia aplicaciones impresionantes que quitaban el hipo. Cada video que vemos nos preguntamos como seria desarrollar un videojuego utilizando kinect, y Microsoft no quiere dejarnos con la duda. Ya fue noticia que estan desarrollando una SDK oficial para Kinect, y los [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Los <strong>drivers piratas de Kinect</strong> han tenido una gran acogida, en pocos dias ya habia aplicaciones impresionantes que quitaban el hipo. Cada video que vemos nos preguntamos como seria desarrollar un videojuego utilizando kinect, y Microsoft no quiere dejarnos con la duda. Ya fue noticia que estan desarrollando una<strong> SDK oficial para Kinect</strong>, y los que seguimos el mundo de <strong>XNA</strong> estamos deseando echarle la zarpa encima.</p>
<div class="mceTemp mceIEcenter" style="text-align: justify;">
<dl id="attachment_313" class="wp-caption aligncenter" style="width: 540px;">
<dt class="wp-caption-dt"><img class="size-full wp-image-313" title="kinect-for-windows-img" src="http://www.xna-tutorial.com/wp-content/uploads/2011/04/kinect-for-windows-img.jpg" alt="kinect" width="530" height="309" /></dt>
<dd class="wp-caption-dd">kinect</dd>
</dl>
</div>
<h2 style="text-align: justify;">Que posibilidades abre Kinect al desarrollo de videojuegos?</h2>
<p style="text-align: justify;">Dependera de la calidad del SDK que se nos proporcione, pero las posibilidades son infinitas, se abre un nuevo camino para desarrollar juego de diferentes tipos. Por favor no nos quedemos estancados en juegos de limpiar cristales, o romper piedras con la mano, hagamos algo grande que realmente<strong> genere diversion y entretenimiento</strong> y no sea una copia mas del wii fit y otros <strong>videojuegos</strong> donde el entretenimiento esta basado en la cantidad de ejercicio que hagamos. Por aqui os dejo algunas ideas que ya existen:</p>
<p style="text-align: justify;">- Usar kinect para juegos tipo Stars wars con personajes con poderes que proyectan su fuera con movientos de la mano.<br />
- Usar kinect con juegos que reconozcan combos de movimientos, que formemos figuras con el cuerpo.<br />
- Usar kinect en juegos de estrategia en tiempo real</p>
<p style="text-align: justify;">Cuales son vuestras sugerencias?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xna-tutorial.com/kinect-y-xna/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XNA Game Studio 4.0</title>
		<link>http://www.xna-tutorial.com/xna-game-studio-4-0/</link>
		<comments>http://www.xna-tutorial.com/xna-game-studio-4-0/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 19:38:23 +0000</pubDate>
		<dc:creator>Agustin</dc:creator>
				<category><![CDATA[Noticias]]></category>

		<guid isPermaLink="false">http://www.xna-tutorial.com/?p=305</guid>
		<description><![CDATA[Microsoft ha presentado la nueva versión de XNA Game Studio, ya vamos por la 4.0, como una de las principales novedades de esta versión es que será posible desarrollar juegos para windows mobile, si habeis escuchado bien, podremos crear nuestros juegos para dispositivos móviles, siempre que cuenten con Windows Phone 7. Otras novedades son:

Nueva API [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Microsoft </strong>ha presentado la nueva versión de <strong>XNA Game Studio</strong>, ya vamos por la <strong>4.0</strong>, como una de las principales novedades de esta versión es que será posible desarrollar juegos para windows mobile, si habeis escuchado bien, podremos crear nuestros juegos para dispositivos móviles, siempre que cuenten con <strong>Windows Phone 7. </strong>Otras novedades son:</p>
<ul>
<li>Nueva API para renderizado 3D en Windows Phone 7 series.</li>
<li>Integración con el nuevo Visual Studio 2010</li>
<li>Soporte para el uso del Buffer en las APIs de audio.</li>
</ul>
<p style="text-align: center;"><a href="http://www.xna-tutorial.com/wp-content/uploads/2010/03/windowsMobile.jpg"><img class="aligncenter size-full wp-image-306" title="windowsMobile" src="http://www.xna-tutorial.com/wp-content/uploads/2010/03/windowsMobile.jpg" alt="windowsMobile" width="600" height="300" /></a></p>
<p><span id="more-305"></span></p>
<h2>¿Como empezar con XNA Game Studio 4.0?</h2>
<p>Lo primero es descargar el paquete <a href="http://creators.xna.com/downloads">XNA Game Studio 4.0 CTP</a>, la instalación es bastante sencilla, si salta algun error durante la instalación o el desarrollo no os asusteis es un producto que está aun en beta y es posible que tenga algun error. Del mismo modo hay algunas opciones que estan desactivadas. Los requisitos son los siguientes:</p>
<ul>
<li>Sistema Operativo Windows Vista o Windows 7.</li>
<li>3 GB de espacio en disco duro</li>
<li>2 GB de Ram</li>
<li>DirectX version 10 junto con una tarjeta grafica compatible.</li>
</ul>
<h2>Mi primer juego para Windows Phone 7 con XNA Game Studio 4.0</h2>
<p>Crear un nuevo proyecto es facilisimo los pasos a seguir son los siguientes:</p>
<ul>
<li>Asegúrate de que has descargado e instalado <a href="http://creators.xna.com/downloads">XNA Game Studio 4.0 CTP</a>.</li>
<li>Arrancamos Visual Studio 2010 RC o Visual Studio 2010 Express.</li>
<li>Creamos un nuevo proyecto seleccinando File | New Project en el menu.</li>
<li>Se nos abrirá una nueva ventano que expandiremos para selecionar entre todas las plantillas la de<strong> XNA Game Studio 4.0 templates</strong>.</li>
<li>Seleccionamos la plantilla Windows Phone Game (4.0) template.</li>
<li>Rellenamos el nombre y especificamos la localización del proyecto.</li>
<li>Por ultimo Ok, con eso se habrá creado un nuevo proyecto y se nos abrirá el archivo Game1.cs.</li>
</ul>
<ol></ol>
<div class="wp-caption aligncenter" style="width: 610px"><img title="Proyecto Xna 4.0" src="http://i.msdn.microsoft.com/Ff472340.daf09008-7b7b-4d62-93ca-4aa29895c286(en-us,VS.92).jpg" alt="Proyecto Xna 4.0" width="600" height="400" /><p class="wp-caption-text">Proyecto Xna 4.0</p></div>
<p>El proyecto ya lo tenemos creado, lo que sigue a partir de ahora es igual que en XNA 3.1 pero por si hay algun novato os dejo un enlace donde crearemos paso a paso un minijuego para <strong>Windows Phone</strong>, el juego es simple, mostrar un thumbnail por la pantalla pero para empezar no esta mal. Aqui os dejo el enlace <a href="http://msdn.microsoft.com/en-us/library/ff472340(VS.92).aspx">http://msdn.microsoft.com/en-us/library/ff472340(VS.92).aspx</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xna-tutorial.com/xna-game-studio-4-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Noticias Xna enero 2010</title>
		<link>http://www.xna-tutorial.com/noticias-xna-enero-2010/</link>
		<comments>http://www.xna-tutorial.com/noticias-xna-enero-2010/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 11:26:02 +0000</pubDate>
		<dc:creator>Agustin</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Noticias]]></category>
		<category><![CDATA[XBox live]]></category>

		<guid isPermaLink="false">http://www.xna-tutorial.com/?p=297</guid>
		<description><![CDATA[Prohibido reemplazar o ocultar contenido de los Avatar.
Las mejoras de los avatar no pueden ser ocultadas o reemplazadas con otros objetos. No se permiten ropa alternativa, mascaras, gorros y demás. Adicionalmente si se permite que los NPC usen ropa con copyright o marcas registradas para Xna. El link a la noticia Update to Peer Review for Avatar [...]]]></description>
			<content:encoded><![CDATA[<h2 style="text-align: justify;">Prohibido reemplazar o ocultar contenido de los Avatar.</h2>
<p style="text-align: justify;">Las mejoras de los avatar no pueden ser ocultadas o reemplazadas con otros objetos. No se permiten ropa alternativa, mascaras, gorros y demás. Adicionalmente si se permite que los NPC usen ropa con copyright o marcas registradas para Xna. El link a la noticia <a rel="nofollow" href="http://creators.xna.com/en-us/news/UpdateToPeerReviewJan182010">Update to Peer Review for Avatar Usage</a>.</p>
<p style="text-align: justify;"><img class="aligncenter size-full wp-image-299" title="avatar xbox live" src="http://www.xna-tutorial.com/wp-content/uploads/2010/01/avatar.JPG" alt="avatar xbox live" width="495" height="368" /></p>
<p style="text-align: justify;">Basicamente nos estan diciendo que la ropa y la modificación de los personajes solo la manejaran los de Xbox, de esta forma el adquirir nuevas ropas y accesorios será un premio o un objetivo de los juegos, al igual que se hace en el videojuego Guitar Hero.</p>
<h2 style="text-align: justify;">Historial de descargas reparado</h2>
<p style="text-align: justify;">Durante la ultima semana ha habido problemas técnicos, algunos desarrolladores que han publicado juegos para <strong>XBoxLive </strong>han experimentado que el servicio iba muy lento o no funcionaba. Durante este tiempo los encargados del tema han trabajado duro y hoy mismo nos notifican que ya ha sido solucionado el problema. Y piden <strong>disculpas por las molestias</strong> que hallan podido ocasionar.</p>
<h2 style="text-align: justify;">El poker esta de moda</h2>
<p style="text-align: justify;">El <strong>poker </strong>esta de moda, en la sexta emiten torneos, internet se llena de manuales, se abren foros y como no&#8230; aparece un juego de poker de la mano de Tik Games&#8217; en la web podemos leer una <a href="http://creators.xna.com/en-us/spotlight/hoyletexasholdum">entrevista en ingles</a> al equipo y tenemos los enlaces pertinentes para la descarga. <strong>Tik Games&#8217;</strong> cuenta con un equipo de unas 24 personas, desarrollan juegos para PC y les ha llevado casi un año desarrollar este juego porque han puesto bastante incapíe en desarrollar una infraestructura solida sobre la que construir otros juegos del estilo.</p>
<p style="text-align: justify;"><a href="http://www.xna-tutorial.com/wp-content/uploads/2010/01/poker_xbox.jpg"><img class="aligncenter size-full wp-image-300" title="poker_xbox" src="http://www.xna-tutorial.com/wp-content/uploads/2010/01/poker_xbox.jpg" alt="poker_xbox" width="650" height="254" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.xna-tutorial.com/noticias-xna-enero-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tutoriales Space Invaders</title>
		<link>http://www.xna-tutorial.com/tutoriales-space-invaders/</link>
		<comments>http://www.xna-tutorial.com/tutoriales-space-invaders/#comments</comments>
		<pubDate>Sat, 26 Dec 2009 16:25:24 +0000</pubDate>
		<dc:creator>rantamplan</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.xna-tutorial.com/tutoriales-space-invaders/</guid>
		<description><![CDATA[Aunque estemos de vacaciones, yo estoy jodido con los exámenes de la universidad, así que hasta dentro de unas semanas no habrá nueva entrega del tutorial. Sin embargo, si hay algún impaciente en la sala que si que tenga tiempo libre, le dejo el código fuente del juego prácticamente acabado para que puede ponerse a [...]]]></description>
			<content:encoded><![CDATA[<p>Aunque estemos de vacaciones, yo estoy jodido con los exámenes de la universidad, así que hasta dentro de unas semanas no habrá nueva entrega del tutorial. Sin embargo, si hay algún impaciente en la sala que si que tenga tiempo libre, le dejo el código fuente del juego prácticamente acabado para que puede ponerse a trastear con el, y ya lo iré explicando poco a poco</p>
<p><a href="http://nosoyfriky.es/spaceInvaders/spaceInvaders.rar" target="_blank">DESCARGAR CODIGO FUENTE:</a></p>
<p><a href="http://www.xna-tutorial.com/wp-content/uploads/2009/12/image2.png"><img style="border-right-width: 0px;float: none;border-top-width: 0px;border-bottom-width: 0px;margin-left: auto;border-left-width: 0px;margin-right: auto" border="0" alt="image" src="http://www.xna-tutorial.com/wp-content/uploads/2009/12/image_thumb.png" width="438" height="341" /></a> </p>
<p>Entregas publicadas:</p>
<ul>
<li>Entrega 2: <a title="http://www.xna-tutorial.com/moviendo-un-sprite-por-la-pantalla/" href="http://www.xna-tutorial.com/moviendo-un-sprite-por-la-pantalla/">http://www.xna-tutorial.com/moviendo-un-sprite-por-la-pantalla/</a> </li>
<li>Entrega 3:&#160; <a title="http://www.xna-tutorial.com/tutorial-entrega-3-aadiendo-disparos/" href="http://www.xna-tutorial.com/tutorial-entrega-3-aadiendo-disparos/">http://www.xna-tutorial.com/tutorial-entrega-3-aadiendo-disparos/</a> </li>
<li>Entrega 4:&#160; <a title="http://www.xna-tutorial.com/tutorial-entrega-4-aadiendo-enemigos/" href="http://www.xna-tutorial.com/tutorial-entrega-4-aadiendo-enemigos/">http://www.xna-tutorial.com/tutorial-entrega-4-aadiendo-enemigos/</a> </li>
<li>Entrega 5:&#160; <a title="http://www.xna-tutorial.com/tutorial-entrega-5-aadiendo-disparos-de-los-enemigos/" href="http://www.xna-tutorial.com/tutorial-entrega-5-aadiendo-disparos-de-los-enemigos/">http://www.xna-tutorial.com/tutorial-entrega-5-aadiendo-disparos-de-los-enemigos/</a> </li>
</ul>
<p>&#160;</p>
<p><a title="http://nosoyfriky.es/spaceInvaders/spaceInvaders.rar" href="http://nosoyfriky.es/spaceInvaders/spaceInvaders.rar">Código Fuente: http://nosoyfriky.es/spaceInvaders/spaceInvaders.rar</a></p>
<p>Un saludo</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xna-tutorial.com/tutoriales-space-invaders/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Tutorial [Entrega 5]: A&#241;adiendo disparos de los enemigos</title>
		<link>http://www.xna-tutorial.com/tutorial-entrega-5-aadiendo-disparos-de-los-enemigos/</link>
		<comments>http://www.xna-tutorial.com/tutorial-entrega-5-aadiendo-disparos-de-los-enemigos/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 12:40:00 +0000</pubDate>
		<dc:creator>rantamplan</dc:creator>
				<category><![CDATA[2D]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[space invaders]]></category>

		<guid isPermaLink="false">http://www.xna-tutorial.com/tutorial-entrega-5-aadiendo-disparos-de-los-enemigos/</guid>
		<description><![CDATA[Llegados a este punto, tenemos nuestra nave frente a unas cuantas naves enemigas. Nuestra nave puede disparar y eliminar a los enemigos, pero los enemigos todavía no pueden dispara para intentar eliminarnos. Vamos a ver como podemos hacer esto después del salto.
&#160;
Como ya sabéis, si tenéis alguna duda, podéis plantearla en el foro: http://www.foro.xna-tutorial.com/viewtopic.php?f=4&#38;p=8#p8
&#160;

Añadir los [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Llegados a este punto, tenemos nuestra nave frente a unas cuantas naves enemigas. Nuestra nave puede disparar y eliminar a los enemigos, pero los enemigos todavía no pueden dispara para intentar eliminarnos. Vamos a ver como podemos hacer esto después del salto.</p>
<p align="justify">&#160;</p>
<p align="justify">Como ya sabéis, si tenéis alguna duda, podéis plantearla en el <a href="http://www.foro.xna-tutorial.com/viewtopic.php?f=4&amp;p=8#p8" target="_blank">foro</a>: <a title="http://www.foro.xna-tutorial.com/viewtopic.php?f=4&amp;p=8#p8" href="http://www.foro.xna-tutorial.com/viewtopic.php?f=4&amp;p=8#p8">http://www.foro.xna-tutorial.com/viewtopic.php?f=4&amp;p=8#p8</a></p>
<p align="justify">&#160;</p>
<div align="justify"><span id="more-275"></span></div>
<p align="justify">Añadir los disparos de los enemigos, dado el código que tenemos ya escrito en anteriores entregas del tutorial, va a ser realmente fácil.</p>
<p align="justify">Veamos los cambios que debemos introducir según las clases.</p>
<p align="justify">&#160;</p>
<h1 align="justify">Clase “Enemigo”</h1>
<p align="justify">Lógicamente, esta será la clase que debemos modificar. Lo que haremos será principalmente generar un numero aleatorio, el cual nos indicará si el enemigo debe disparar o no debe disparar. Manos a la obra.</p>
<p>Primero nos definiremos dos nuevos atributos:</p>
<div style="font-family: courier new"><span style="color: teal">&#160; 1</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">static</span> Random rand = <span style="color: blue">new</span> Random();     <br /><span style="color: teal">&#160; 2</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">public</span>&#160;<span style="color: blue">int</span> probabilidadDisparo = <span style="color: maroon">2</span>;</div>
<p align="justify">&#160;</p>
<p align="justify">El número 2 de “probabilidadDisparo”&#160; es la cota que indica si debe disparar o no. Si subimos ese número, los enemigos dispararan más a menudo. De esta forma podemos aumentar el nivel de dificultad (la cadencia de disparos enemigos) simplemente incrementando ese valor.</p>
<p>&#160;</p>
<p>Ahora vamos al método “Actualizar()”, y le añadimos lo siguiente:</p>
<div style="font-family: courier new"><span style="color: teal">&#160; 1</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">public</span>&#160;<span style="color: blue">void</span> actualiza()     <br /><span style="color: teal">&#160; 2</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {     <br /><span style="color: teal">&#160; 3</span>     <br /><span style="color: teal">&#160; 4</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">if</span> (disp == <span style="color: blue">null</span>)     <br /><span style="color: teal">&#160; 5</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {     <br /><span style="color: teal">&#160; 6</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">if</span> (rand.Next(<span style="color: maroon">1000</span>) &lt; probabilidadDisparo)     <br /><span style="color: teal">&#160; 7</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; disparar();     <br /><span style="color: teal">&#160; 8</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }     <br /><span style="color: teal">&#160; 9</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">else</span>     <br /><span style="color: teal">10</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {     <br /><span style="color: teal">11</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; disp.actualiza();     <br /><span style="color: teal">12</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }     <br /><span style="color: teal">13</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br /><span style="color: teal">14</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</div>
<p>&#160;</p>
<p align="justify">Esto lo que hará será obtener un nuevo numero aleatorio, y si ese numero es menor que la cota de “probabilidadDisparo” entonces disparará. Esto solo lo hará si el enemigo no ha disparado (recordemos que cada nave solo puede tener un disparo al mismo tiempo). Si ya había disparado, entonces actualizaremos el disparo.</p>
<p align="justify">
<h1 align="justify">&#160;</h1>
<h1 align="justify">&#160;</h1>
<h1 align="justify">Clase “Nave”</h1>
<p align="justify">
<p align="justify">En esta clase vamos a definir una propiedad que nos devuelva el rectángulo que envuelve a la nave para poder comprobar las colisiones. Es un cambio menor.</p>
<div style="font-family: courier new"><span style="color: teal">&#160; 1</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">public</span> Rectangle Rectangulo     <br /><span style="color: teal">&#160; 2</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {     <br /><span style="color: teal">&#160; 3</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">get</span> { <span style="color: blue">return</span>&#160;<span style="color: blue">new</span> Rectangle((<span style="color: blue">int</span>)pos.X, (<span style="color: blue">int</span>)pos.Y, textura.Width, textura.Height); }     <br /><span style="color: teal">&#160; 4</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</div>
<p>&#160;</p>
<p>&#160;</p>
<p align="justify">&#160;</p>
<h1 align="justify">Clase “Game”</h1>
<p align="justify">Y ahora viene la chica: si unos de los disparos del enemigo nos da, tenemos que eliminar nuestra nave. En próximas versiones lo que haremos será decrementar el contador de vidas de nuestra nave, pero ahora sólo tendremos una vida.</p>
<p>Así que antes de comprobar la colisión de nuestros disparos con los enemigos, que lo vimos en la anterior entrega, comprobaremos que ningún disparo de los enemigos colisione con nuestra nave. Si colisiona, eliminaremos nuestra nave.</p>
<p>&#160;</p>
<div style="font-family: courier new"><span style="color: teal">&#160; 1</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">foreach</span> (Enemigo e <span style="color: blue">in</span> enemigos)     <br /><span style="color: teal">&#160; 2</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {     <br /><span style="color: teal">&#160; 3</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">if</span> (e.Disparo != <span style="color: blue">null</span> &amp;&amp; nave != <span style="color: blue">null</span>)     <br /><span style="color: teal">&#160; 4</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {     <br /><span style="color: teal">&#160; 5</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">if</span> (e.Disparo.Rect.Intersects(nave.Rectangulo))     <br /><span style="color: teal">&#160; 6</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {     <br /><span style="color: teal">&#160; 7</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; nave = <span style="color: blue">null</span>;     <br /><span style="color: teal">&#160; 8</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; e.Disparo = <span style="color: blue">null</span>;     <br /><span style="color: teal">&#160; 9</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }     <br /><span style="color: teal">10</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }     <br /><span style="color: teal">11</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</div>
<p>&#160;</p>
<p>&#160;</p>
<p align="justify">Como ahora nuestra nave puede ser null, tenemos que cambiar todas las referencias a nuestra nave para que antes de ejecutar cualquier cosa compruebe que la nave no es null. Si no lo hacemos, nuestro juego “petará” cuando nos de un impacto. El código entero de la clase “game” es el siguiente:</p>
<div style="font-family: courier new"><span style="color: teal">&#160; 1</span> <span style="color: blue">using</span> System;     <br /><span style="color: teal">&#160; 2</span> <span style="color: blue">using</span> System.Collections.Generic;     <br /><span style="color: teal">&#160; 3</span> <span style="color: blue">using</span> System.Collections;     <br /><span style="color: teal">&#160; 4</span> <span style="color: blue">using</span> System.Linq;     <br /><span style="color: teal">&#160; 5</span> <span style="color: blue">using</span> Microsoft.Xna.Framework;     <br /><span style="color: teal">&#160; 6</span> <span style="color: blue">using</span> Microsoft.Xna.Framework.Audio;     <br /><span style="color: teal">&#160; 7</span> <span style="color: blue">using</span> Microsoft.Xna.Framework.Content;     <br /><span style="color: teal">&#160; 8</span> <span style="color: blue">using</span> Microsoft.Xna.Framework.GamerServices;     <br /><span style="color: teal">&#160; 9</span> <span style="color: blue">using</span> Microsoft.Xna.Framework.Graphics;     <br /><span style="color: teal">10</span> <span style="color: blue">using</span> Microsoft.Xna.Framework.Input;     <br /><span style="color: teal">11</span> <span style="color: blue">using</span> Microsoft.Xna.Framework.Media;     <br /><span style="color: teal">12</span> <span style="color: blue">using</span> Microsoft.Xna.Framework.Net;     <br /><span style="color: teal">13</span> <span style="color: blue">using</span> Microsoft.Xna.Framework.Storage;     <br /><span style="color: teal">14</span>     <br /><span style="color: teal">15</span> <span style="color: blue">namespace</span> spaceInvaders     <br /><span style="color: teal">16</span> {     <br /><span style="color: teal">17</span>&#160;&#160;&#160;&#160; <span style="color: gray">/// &lt;summary&gt;</span>     <br /><span style="color: teal">18</span>&#160;&#160;&#160;&#160; <span style="color: gray">/// This is the main type for your game</span>     <br /><span style="color: teal">19</span>&#160;&#160;&#160;&#160; <span style="color: gray">/// &lt;/summary&gt;</span>     <br /><span style="color: teal">20</span>&#160;&#160;&#160;&#160; <span style="color: blue">public</span>&#160;<span style="color: blue">class</span> Game1 : Microsoft.Xna.Framework.Game     <br /><span style="color: teal">21</span>&#160;&#160;&#160;&#160; {     <br /><span style="color: teal">22</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; GraphicsDeviceManager graphics;     <br /><span style="color: teal">23</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; SpriteBatch spriteBatch;     <br /><span style="color: teal">24</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Nave nave;     <br /><span style="color: teal">25</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: green">//Enemigo enemigo;</span>     <br /><span style="color: teal">26</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ArrayList enemigos;     <br /><span style="color: teal">27</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br /><span style="color: teal">28</span>     <br /><span style="color: teal">29</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">/// &lt;summary&gt;</span>     <br /><span style="color: teal">30</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">/// Constructor de la clase</span>     <br /><span style="color: teal">31</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">/// &lt;/summary&gt;</span>     <br /><span style="color: teal">32</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">public</span> Game1()     <br /><span style="color: teal">33</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {     <br /><span style="color: teal">34</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; graphics = <span style="color: blue">new</span> GraphicsDeviceManager(<span style="color: blue">this</span>);     <br /><span style="color: teal">35</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Content.RootDirectory = <span style="color: maroon">&quot;Content&quot;</span>;     <br /><span style="color: teal">36</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br /><span style="color: teal">37</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }     <br /><span style="color: teal">38</span>     <br /><span style="color: teal">39</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">/// &lt;summary&gt;</span>     <br /><span style="color: teal">40</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">/// Allows the game to perform any initialization it needs to before starting to run.</span>     <br /><span style="color: teal">41</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">/// This is where it can query for any required services and load any non-graphic</span>     <br /><span style="color: teal">42</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">/// related content.&#160; Calling base.Initialize will enumerate through any components</span>     <br /><span style="color: teal">43</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">/// and initialize them as well.</span>     <br /><span style="color: teal">44</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">/// &lt;/summary&gt;</span>     <br /><span style="color: teal">45</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">protected</span>&#160;<span style="color: blue">override</span>&#160;<span style="color: blue">void</span> Initialize()     <br /><span style="color: teal">46</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {     <br /><span style="color: teal">47</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: green">// TODO: Add your initialization logic here</span>     <br /><span style="color: teal">48</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; nave = <span style="color: blue">new</span> Nave();     <br /><span style="color: teal">49</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; enemigos = <span style="color: blue">new</span> ArrayList();     <br /><span style="color: teal">50</span>     <br /><span style="color: teal">51</span>     <br /><span style="color: teal">52</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">base</span>.Initialize();     <br /><span style="color: teal">53</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }     <br /><span style="color: teal">54</span>     <br /><span style="color: teal">55</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">/// &lt;summary&gt;</span>     <br /><span style="color: teal">56</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">/// LoadContent will be called once per game and is the place to load</span>     <br /><span style="color: teal">57</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">/// all of your content.</span>     <br /><span style="color: teal">58</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">/// &lt;/summary&gt;</span>     <br /><span style="color: teal">59</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">protected</span>&#160;<span style="color: blue">override</span>&#160;<span style="color: blue">void</span> LoadContent()     <br /><span style="color: teal">60</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {     <br /><span style="color: teal">61</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: green">// Create a new SpriteBatch, which can be used to draw textures.</span>     <br /><span style="color: teal">62</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; spriteBatch = <span style="color: blue">new</span> SpriteBatch(GraphicsDevice);     <br /><span style="color: teal">63</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br /><span style="color: teal">64</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: green">//Le decimos a la nave que textura tiene que cargar</span>     <br /><span style="color: teal">65</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; nave.Textura = Content.Load&lt;Texture2D&gt;(<span style="color: maroon">&quot;nave&quot;</span>);     <br /><span style="color: teal">66</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; nave.TexturaDisparo = Content.Load&lt;Texture2D&gt;(<span style="color: maroon">&quot;disparoNave&quot;</span>);     <br /><span style="color: teal">67</span>     <br /><span style="color: teal">68</span>     <br /><span style="color: teal">69</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: green">//Creamos los enemigos y los metemos en el arraylist</span>     <br /><span style="color: teal">70</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">int</span> numeroEnemigos = <span style="color: maroon">5</span>;     <br /><span style="color: teal">71</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">float</span> X = <span style="color: maroon">275</span>;     <br /><span style="color: teal">72</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">float</span> Y = <span style="color: maroon">100</span>;     <br /><span style="color: teal">73</span>     <br /><span style="color: teal">74</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">for</span> (<span style="color: blue">int</span> i = <span style="color: maroon">0</span>; i &lt; numeroEnemigos;i++)     <br /><span style="color: teal">75</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {     <br /><span style="color: teal">76</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Vector2 pos = <span style="color: blue">new</span> Vector2(X, Y);     <br /><span style="color: teal">77</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Enemigo e = <span style="color: blue">new</span> Enemigo(pos);     <br /><span style="color: teal">78</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; enemigos.Add(e);     <br /><span style="color: teal">79</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; X += <span style="color: maroon">50</span>;     <br /><span style="color: teal">80</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }     <br /><span style="color: teal">81</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br /><span style="color: teal">82</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: green">//cargamos las texturas del enemigo</span>     <br /><span style="color: teal">83</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">foreach</span>(Enemigo e <span style="color: blue">in</span> enemigos)     <br /><span style="color: teal">84</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {     <br /><span style="color: teal">85</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; e.Textura = Content.Load&lt;Texture2D&gt;(<span style="color: maroon">&quot;enemigo&quot;</span>);     <br /><span style="color: teal">86</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; e.TexturaDisparo = Content.Load&lt;Texture2D&gt;(<span style="color: maroon">&quot;disparoNave&quot;</span>);     <br /><span style="color: teal">87</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }     <br /><span style="color: teal">88</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: green">// TODO: use this.Content to load your game content here</span>     <br /><span style="color: teal">89</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }     <br /><span style="color: teal">90</span>     <br /><span style="color: teal">91</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">/// &lt;summary&gt;</span>     <br /><span style="color: teal">92</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">/// UnloadContent will be called once per game and is the place to unload</span>     <br /><span style="color: teal">93</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">/// all content.</span>     <br /><span style="color: teal">94</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">/// &lt;/summary&gt;</span>     <br /><span style="color: teal">95</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">protected</span>&#160;<span style="color: blue">override</span>&#160;<span style="color: blue">void</span> UnloadContent()     <br /><span style="color: teal">96</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {     <br /><span style="color: teal">97</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: green">// TODO: Unload any non ContentManager content here</span>     <br /><span style="color: teal">98</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }     <br /><span style="color: teal">99</span>     <br /><span style="color: teal">100</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">/// &lt;summary&gt;</span>     <br /><span style="color: teal">101</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">/// Allows the game to run logic such as updating the world,</span>     <br /><span style="color: teal">102</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">/// checking for collisions, gathering input, and playing audio.</span>     <br /><span style="color: teal">103</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">/// &lt;/summary&gt;</span>     <br /><span style="color: teal">104</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">/// &lt;param name=&quot;gameTime&quot;&gt;Provides a snapshot of timing values.&lt;/param&gt;</span>     <br /><span style="color: teal">105</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">protected</span>&#160;<span style="color: blue">override</span>&#160;<span style="color: blue">void</span> Update(GameTime gameTime)     <br /><span style="color: teal">106</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {     <br /><span style="color: teal">107</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: green">// Allows the game to exit</span>     <br /><span style="color: teal">108</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">if</span> (Keyboard.GetState().IsKeyDown(Keys.Escape))     <br /><span style="color: teal">109</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">this</span>.Exit();     <br /><span style="color: teal">110</span>     <br /><span style="color: teal">111</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: green">// TODO: Add your update logic here</span>     <br /><span style="color: teal">112</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">if</span> (nave != <span style="color: blue">null</span>)     <br /><span style="color: teal">113</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; nave.actualiza();     <br /><span style="color: teal">114</span>     <br /><span style="color: teal">115</span>     <br /><span style="color: teal">116</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">foreach</span> (Enemigo e <span style="color: blue">in</span> enemigos)     <br /><span style="color: teal">117</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {     <br /><span style="color: teal">118</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; e.actualiza();     <br /><span style="color: teal">119</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }     <br /><span style="color: teal">120</span>     <br /><span style="color: teal">121</span>     <br /><span style="color: teal">122</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: green">//comprobamos si algun disparo enemigo nos ha dado</span>     <br /><span style="color: teal">123</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">foreach</span> (Enemigo e <span style="color: blue">in</span> enemigos)     <br /><span style="color: teal">124</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {     <br /><span style="color: teal">125</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">if</span> (e.Disparo != <span style="color: blue">null</span> &amp;&amp; nave != <span style="color: blue">null</span>)     <br /><span style="color: teal">126</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {     <br /><span style="color: teal">127</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">if</span> (e.Disparo.Rect.Intersects(nave.Rectangulo))     <br /><span style="color: teal">128</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {     <br /><span style="color: teal">129</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; nave = <span style="color: blue">null</span>;     <br /><span style="color: teal">130</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; e.Disparo = <span style="color: blue">null</span>;     <br /><span style="color: teal">131</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }     <br /><span style="color: teal">132</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }     <br /><span style="color: teal">133</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }     <br /><span style="color: teal">134</span>     <br /><span style="color: teal">135</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: green">//Comprobamos que el disparo colisiona con algun enemigo</span>     <br /><span style="color: teal">136</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: green">//Si colisiona, eliminamos el enemigo y el disparo</span>     <br /><span style="color: teal">137</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br /><span style="color: teal">138</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: green">//Array auxiliar para alamacenar los enemigos que debemos eliminar</span>     <br /><span style="color: teal">139</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ArrayList eliminar = <span style="color: blue">new</span> ArrayList();     <br /><span style="color: teal">140</span>     <br /><span style="color: teal">141</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: green">//Si no hay disparo, no hace falta que entre</span>     <br /><span style="color: teal">142</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">if</span> (nave != <span style="color: blue">null</span> &amp;&amp; nave.Disparo != <span style="color: blue">null</span>)     <br /><span style="color: teal">143</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {     <br /><span style="color: teal">144</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: green">//Recorremos la lista de enemigos y comprobamos si alguno colisiona</span>     <br /><span style="color: teal">145</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">foreach</span> (Enemigo e <span style="color: blue">in</span> enemigos)     <br /><span style="color: teal">146</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {     <br /><span style="color: teal">147</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Rectangle rectEnemigo = e.Rect;     <br /><span style="color: teal">148</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Rectangle rectDisparo = nave.Disparo.Rect;     <br /><span style="color: teal">149</span>     <br /><span style="color: teal">150</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">if</span> (rectEnemigo.Intersects(rectDisparo))     <br /><span style="color: teal">151</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {     <br /><span style="color: teal">152</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: green">//añadimos al enemigo a la lista a eliminar</span>     <br /><span style="color: teal">153</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; eliminar.Add(e);     <br /><span style="color: teal">154</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }     <br /><span style="color: teal">155</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }     <br /><span style="color: teal">156</span>     <br /><span style="color: teal">157</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: green">//si la lista de enemigos a eliminar no esta vacia</span>     <br /><span style="color: teal">158</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">if</span> (eliminar.Count &gt; <span style="color: maroon">0</span>)     <br /><span style="color: teal">159</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {     <br /><span style="color: teal">160</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">foreach</span> (Enemigo el <span style="color: blue">in</span> eliminar)     <br /><span style="color: teal">161</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {     <br /><span style="color: teal">162</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: green">//eliminamos al enemigo</span>     <br /><span style="color: teal">163</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; enemigos.Remove(el);     <br /><span style="color: teal">164</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }     <br /><span style="color: teal">165</span>     <br /><span style="color: teal">166</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: green">//eliminamos el disparo</span>     <br /><span style="color: teal">167</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; nave.Disparo = <span style="color: blue">null</span>;     <br /><span style="color: teal">168</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }     <br /><span style="color: teal">169</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }     <br /><span style="color: teal">170</span>     <br /><span style="color: teal">171</span>     <br /><span style="color: teal">172</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">base</span>.Update(gameTime);     <br /><span style="color: teal">173</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }     <br /><span style="color: teal">174</span>     <br /><span style="color: teal">175</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">/// &lt;summary&gt;</span>     <br /><span style="color: teal">176</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">/// This is called when the game should draw itself.</span>     <br /><span style="color: teal">177</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">/// &lt;/summary&gt;</span>     <br /><span style="color: teal">178</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">/// &lt;param name=&quot;gameTime&quot;&gt;Provides a snapshot of timing values.&lt;/param&gt;</span>     <br /><span style="color: teal">179</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">protected</span>&#160;<span style="color: blue">override</span>&#160;<span style="color: blue">void</span> Draw(GameTime gameTime)     <br /><span style="color: teal">180</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {     <br /><span style="color: teal">181</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; GraphicsDevice.Clear(Color.Black);     <br /><span style="color: teal">182</span>     <br /><span style="color: teal">183</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: green">// TODO: Add your drawing code here</span>     <br /><span style="color: teal">184</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; spriteBatch.Begin();     <br /><span style="color: teal">185</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br /><span style="color: teal">186</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">if</span> (nave != <span style="color: blue">null</span>) nave.Draw(spriteBatch); <span style="color: green">//pitnamos la nave</span>     <br /><span style="color: teal">187</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">foreach</span> (Enemigo e <span style="color: blue">in</span> enemigos)     <br /><span style="color: teal">188</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {     <br /><span style="color: teal">189</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; e.Draw(spriteBatch);     <br /><span style="color: teal">190</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }     <br /><span style="color: teal">191</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br /><span style="color: teal">192</span>     <br /><span style="color: teal">193</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; spriteBatch.End();     <br /><span style="color: teal">194</span>     <br /><span style="color: teal">195</span>     <br /><span style="color: teal">196</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">base</span>.Draw(gameTime);     <br /><span style="color: teal">197</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }     <br /><span style="color: teal">198</span>&#160;&#160;&#160;&#160; }     <br /><span style="color: teal">199</span> }     <br /><span style="color: teal">200</span> </div>
<p>&#160;</p>
<p>&#160;</p>
<p>Y ya está! ya tenemos nuestros enemigos disparando y nosotros también disparando.</p>
</p>
<p>Como siempre, puedes bajarte el código fuente del siguiente enlace:</p>
<p><a href="http://www.xna-tutorial.com/wp-content/uploads/2009/12/Tutorial5.zip" target="_blank"><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;margin-left: 0px;border-left-width: 0px;margin-right: 0px" border="0" alt="down" align="left" src="http://www.xna-tutorial.com/wp-content/uploads/2009/12/down1.png" width="61" height="63" /></a>&#160; <a href="http://www.xna-tutorial.com/wp-content/uploads/2009/12/Tutorial5.zip" target="_blank">Descargar Código Fuente del tutorial</a></p>
</p>
<p>&#160;</p>
<p>&#160;</p>
<p>Un saludo y hasta la próxima entrega!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xna-tutorial.com/tutorial-entrega-5-aadiendo-disparos-de-los-enemigos/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Platformer Starter Kit Mejorado</title>
		<link>http://www.xna-tutorial.com/platformer-starter-kit-mejorado/</link>
		<comments>http://www.xna-tutorial.com/platformer-starter-kit-mejorado/#comments</comments>
		<pubDate>Mon, 21 Dec 2009 12:29:15 +0000</pubDate>
		<dc:creator>rantamplan</dc:creator>
				<category><![CDATA[2D]]></category>
		<category><![CDATA[Colisiones]]></category>
		<category><![CDATA[Fisica]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[extended]]></category>
		<category><![CDATA[platformes starter kit]]></category>

		<guid isPermaLink="false">http://www.xna-tutorial.com/platformer-starter-kit-mejorado/</guid>
		<description><![CDATA[Mirando en los foros de XNA me he encontrado con este topic: http://forums.xna.com/forums/t/34901.aspx
En el se ofrece el código fuente de un juego basado en el Starter Kit de plataformas que viene incluido con XNA a partir de la versión 3.0.
 

Contiene numerosas mejoras para partir de el para hacer un juego de plataformas en XNA.
Características:

Game [...]]]></description>
			<content:encoded><![CDATA[<p>Mirando en los <a href="http://forums.xna.com/forums" target="_blank">foros de XNA</a> me he encontrado con este topic: <a title="http://forums.xna.com/forums/t/34901.aspx" href="http://forums.xna.com/forums/t/34901.aspx">http://forums.xna.com/forums/t/34901.aspx</a></p>
<p>En el se ofrece el código fuente de un juego basado en el Starter Kit de plataformas que viene incluido con XNA a partir de la versión 3.0.</p>
<p><a href="http://www.xna-tutorial.com/wp-content/uploads/2009/12/platformer.gif"><img style="float: none;margin-left: auto;margin-right: auto" alt="platformer" src="http://www.xna-tutorial.com/wp-content/uploads/2009/12/platformer_thumb.gif" width="300" height="416" /></a> </p>
<p><strong></strong></p>
<p>Contiene numerosas mejoras para partir de el para hacer un juego de plataformas en XNA.</p>
<p><strong>Características:</strong></p>
<ul><strong></strong>
<li>Game State Management (Menu)</li>
<li>Global Score     </li>
<li>Scrolling levels (vertical and horizontal)     </li>
<li>Custom level information from within the text file (Title, Time Limit, Description)</li>
<li>Level Select     </li>
<li>Falling Apples</li>
<li>Options</li>
<li>Built in BSOD (incase any error happens you can see what it is)</li>
<li>In Game Level Editor (Beta, saving part under progress)</li>
<li>Ladders</li>
<li>option for 320&#215;240 or 640&#215;480 (in the ScreenManager.cs, &quot;Game Configuration Fields&quot; region near top, set the &quot;useHighResolution&quot; to true or false)</li>
<li>A Racing opponent (Turns directions by bumping into walls, Jumps on assigned &quot;J&quot; tiles)</li>
<li>Vanishing Tiles</li>
<li>Hidden Tiles (Both Solid and platform)</li>
<li>Death Tiles</li>
<li>Skin selections</li>
<li>Powerups</li>
</ul>
<p>&#160;</p>
<p>El código fuente lo podéis descargar desde el enlace que proporciona el creador:&#160; <a title="http://www.mediafire.com/?ydyzwtilmkc" href="http://www.mediafire.com/?ydyzwtilmkc">http://www.mediafire.com/?ydyzwtilmkc</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.xna-tutorial.com/platformer-starter-kit-mejorado/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tutorial [Entrega 4]: A&#241;adiendo enemigos</title>
		<link>http://www.xna-tutorial.com/tutorial-entrega-4-aadiendo-enemigos/</link>
		<comments>http://www.xna-tutorial.com/tutorial-entrega-4-aadiendo-enemigos/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 09:31:00 +0000</pubDate>
		<dc:creator>rantamplan</dc:creator>
				<category><![CDATA[2D]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[space invaders]]></category>

		<guid isPermaLink="false">http://www.xna-tutorial.com/?p=210</guid>
		<description><![CDATA[Continuamos con la siguiente entrega del tutorial. Llegados a este punto, tenemos a una nave que disipara. La nave se mueve con las teclas de dirección y dispara pulsando la tecla de dirección arriba. Pero…. ¿a qué dispara? Hoy introduciremos los enemigos para que sirvan de diana, XD. Y lo de siempre, para cualquier duda [...]]]></description>
			<content:encoded><![CDATA[<p>Continuamos con la siguiente entrega del tutorial. Llegados a este punto, tenemos a una nave que disipara. La nave se mueve con las teclas de dirección y dispara pulsando la tecla de dirección arriba. Pero…. ¿a qué dispara? Hoy introduciremos los enemigos para que sirvan de diana, XD. Y lo de siempre, para cualquier duda tienes el <a href="http://www.foro.xna-tutorial.com/viewtopic.php?f=4&amp;t=4">foro</a>: <a href="http://www.foro.xna-tutorial.com/viewtopic.php?f=4&amp;t=4">http://www.foro.xna-tutorial.com/viewtopic.php?f=4&amp;t=4</a></p>
<p><img style="border-right-width: 0px;float: none;border-top-width: 0px;border-bottom-width: 0px;margin-left: auto;border-left-width: 0px;margin-right: auto" border="0" alt="image" src="http://www.xna-tutorial.com/wp-content/uploads/2009/11/image21.png" width="452" height="350" /></p>
<p>Mira el tutorial después del salto.</p>
</p>
<p> <span id="more-210"></span>
</p>
<p>Así que sigues interesado en XNA y el ejemplo del Space Invaders, eh? Pues aquí tienes como meter los enemigos.</p>
<p>&#160;</p>
<h1>Clase Enemigo.cs</h1>
<p>Al igual que hicimos con la clase “Nave.cs”, vamos a crear una nueva clase donde encapsular métodos y atributos necesarios para el enemigo.</p>
<h2>Atributos</h2>
<p>Como atributos vamos a tener los mismos que e la nave: el sprite de la nave, la posición, y el disparo de los enemigos y la textura del disparo de los enemigos.</p>
<div style="font-family: courier new"><span style="color: teal">&#160; 1</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">private</span> Vector2 pos; <span style="color: green">//posicion del enemigo </span>    <br /><span style="color: teal">&#160; 2</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">private</span> Texture2D textura; <span style="color: green">//textura del enemigo </span>    <br /><span style="color: teal">&#160; 3</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br /><span style="color: teal">&#160; 4</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">private</span> Disparo disp; <span style="color: green">//disparo </span>    <br /><span style="color: teal">&#160; 5</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">private</span> Texture2D texturaDisparo; <span style="color: green">//Textura del disparo</span></div>
<p>&#160;</p>
<p>&#160;</p>
<p>Y las propiedades para cada atributo:</p>
<p>&#160;</p>
<div style="font-family: courier new"><span style="color: teal">&#160; 1</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">public</span> Vector2 Posicion&#160; <br /><span style="color: teal">&#160; 2</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&#160; <br /><span style="color: teal">&#160; 3</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">get</span> { <span style="color: blue">return</span> pos; }&#160; <br /><span style="color: teal">&#160; 4</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">set</span> { pos = value; }&#160; <br /><span style="color: teal">&#160; 5</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&#160; <br /><span style="color: teal">&#160; 6</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br /><span style="color: teal">&#160; 7</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">public</span> Texture2D Textura&#160; <br /><span style="color: teal">&#160; 8</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&#160; <br /><span style="color: teal">&#160; 9</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">get</span> { <span style="color: blue">return</span> textura; }&#160; <br /><span style="color: teal">10</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">set</span> { textura = value; }&#160; <br /><span style="color: teal">11</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&#160; <br /><span style="color: teal">12</span>     <br /><span style="color: teal">13</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">public</span> Disparo Disparo&#160; <br /><span style="color: teal">14</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&#160; <br /><span style="color: teal">15</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">get</span> { <span style="color: blue">return</span> disp; }&#160; <br /><span style="color: teal">16</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">set</span> { disp = value; }&#160; <br /><span style="color: teal">17</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&#160; <br /><span style="color: teal">18</span>     <br /><span style="color: teal">19</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">public</span> Texture2D TexturaDisparo&#160; <br /><span style="color: teal">20</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&#160; <br /><span style="color: teal">21</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">get</span> { <span style="color: blue">return</span> texturaDisparo; }&#160; <br /><span style="color: teal">22</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">set</span> { texturaDisparo = value; }&#160; <br /><span style="color: teal">23</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</div>
<p>&#160;</p>
<p>Vamos a ver ahora que métodos necesita, aunque supongo que ya te imaginarás que necesita prácticamente los mismo métodos que nuestra clase “Nave.cs”</p>
<p>&#160;</p>
<h2>Métodos</h2>
<p>&#160;</p>
<div style="font-family: courier new"><span style="color: teal">&#160; 1</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">/// &lt;summary&gt;</span>     <br /><span style="color: teal">&#160; 2</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">/// Constructor por defecto del enemigo</span>     <br /><span style="color: teal">&#160; 3</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">/// &lt;/summary&gt;</span>     <br /><span style="color: teal">&#160; 4</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">public</span> Enemigo()     <br /><span style="color: teal">&#160; 5</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {     <br /><span style="color: teal">&#160; 6</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; pos = <span style="color: blue">new</span> Vector2(<span style="color: maroon">400</span>,<span style="color: maroon">100</span>);     <br /><span style="color: teal">&#160; 7</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }     <br /><span style="color: teal">&#160; 8</span>     <br /><span style="color: teal">&#160; 9</span>     <br /><span style="color: teal">10</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">/// &lt;summary&gt;</span>     <br /><span style="color: teal">11</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">/// consturctor sobrecargado del enemigo donde le damos una pos inicial</span>     <br /><span style="color: teal">12</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">/// &lt;/summary&gt;</span>     <br /><span style="color: teal">13</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">public</span> Enemigo(Vector2 posicion)     <br /><span style="color: teal">14</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {     <br /><span style="color: teal">15</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; pos = posicion;     <br /><span style="color: teal">16</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }     <br /><span style="color: teal">17</span>     <br /><span style="color: teal">18</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">/// &lt;summary&gt;</span>     <br /><span style="color: teal">19</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">/// Comprueba el teclado y mueve la nave segun las teclas pulsadas</span>     <br /><span style="color: teal">20</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">/// &lt;/summary&gt;</span>     <br /><span style="color: teal">21</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">public</span>&#160;<span style="color: blue">void</span> actualiza()     <br /><span style="color: teal">22</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {     <br /><span style="color: teal">23</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: green">//De momento nuestro enemigo no hace nada</span>&#160; <br /><span style="color: teal">24</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }     <br /><span style="color: teal">25</span>     <br /><span style="color: teal">26</span>     <br /><span style="color: teal">27</span>     <br /><span style="color: teal">28</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">/// &lt;summary&gt;</span>     <br /><span style="color: teal">29</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">/// Pinta la nave y el disparo si lo tiene</span>     <br /><span style="color: teal">30</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">/// &lt;/summary&gt;</span>     <br /><span style="color: teal">31</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: gray">/// &lt;param name=&quot;batch&quot;&gt;&lt;/param&gt;</span>     <br /><span style="color: teal">32</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">public</span>&#160;<span style="color: blue">void</span> Draw(SpriteBatch batch)     <br /><span style="color: teal">33</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {     <br /><span style="color: teal">34</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; batch.Draw(textura, pos, Color.White);     <br /><span style="color: teal">35</span>     <br /><span style="color: teal">36</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: green">//Pintamos el disparo</span>     <br /><span style="color: teal">37</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">if</span> (disp != <span style="color: blue">null</span>)     <br /><span style="color: teal">38</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {     <br /><span style="color: teal">39</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; batch.Draw(disp.Textura, disp.Posicion, Color.White);     <br /><span style="color: teal">40</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }     <br /><span style="color: teal">41</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</div>
<p>&#160;</p>
<p>Ahora podemos introducir nuestros enemigos en el juego. Vamos a ver como los introducimos.</p>
<p>&#160;</p>
<h1>Clase “Game1.cs”</h1>
<p>Como queremos tener unos cuantos enemigos en la pantalla (solo uno seria muy aburrido), vamos a crearnos una nueva lista donde meteremos a nuestros enemigos.</p>
<div style="font-family: courier new"><span style="color: teal">&#160; 1</span> ArrayList enemigos;</div>
<p>&#160;</p>
<p>Y en el método Initialize() inicializaremos el array:</p>
<p>&#160;</p>
<div style="font-family: courier new"><span style="color: teal">&#160; 1</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">protected</span>&#160;<span style="color: blue">override</span>&#160;<span style="color: blue">void</span> Initialize()     <br /><span style="color: teal">&#160; 2</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {     <br /><span style="color: teal">&#160; 3</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: green">// TODO: Add your initialization logic here</span>     <br /><span style="color: teal">&#160; 4</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; nave = <span style="color: blue">new</span> Nave();     <br /><span style="color: teal">&#160; 5</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; enemigos = <span style="color: blue">new</span> ArrayList();     <br /><span style="color: teal">&#160; 6</span>     <br /><span style="color: teal">&#160; 7</span>     <br /><span style="color: teal">&#160; 8</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">base</span>.Initialize();     <br /><span style="color: teal">&#160; 9</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</div>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>El método LoadContent() es el que más tela tiene, así que lo voy a comentar:</p>
<div style="font-family: courier new"><span style="color: teal">&#160; 1</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: green">//Creamos los enemigos y los metemos en el arraylist</span>     <br /><span style="color: teal">&#160; 2</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">int</span> numeroEnemigos = <span style="color: maroon">5</span>;</div>
<div style="font-family: courier new">&#160;</div>
<div style="font-family: courier new">Con esta variable le decimos el numero de enemigos que queremos ver en la pantalla, en este caso 5.</div>
<div style="font-family: courier new"><span style="color: teal">&#160; 3</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">float</span> X = <span style="color: maroon">275</span>;     <br /><span style="color: teal">&#160; 4</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">float</span> Y = <span style="color: maroon">100</span>;&#160; <br /><span style="color: teal">&#160; </span></div>
<p><span style="color: teal"><font color="#000000">Estas dos variables son las coordenadas de donde queremos que se pinte el primer enemigo. En este caso, al ser 5 enemigos, le voy a decir que el primero se pinte a la izquierda para que el conjunto quede centrado en la pantalla.</font></span></p>
<p><span style="color: teal"><font face="Courier New"></font></span></p>
<div style="font-family: courier new">Ahora, con un bucle, creamos los enemigos, metiendo una separación de 50pix entre cada uno, y los metemos en la lista de enemigos.</div>
<div style="font-family: courier new"><span style="color: teal">&#160; 6</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">for</span> (<span style="color: blue">int</span> i = <span style="color: maroon">0</span>; i &lt; numeroEnemigos;i++)     <br /><span style="color: teal">&#160; 7</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {     <br /><span style="color: teal">&#160; 8</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Vector2 pos = <span style="color: blue">new</span> Vector2(X, Y);     <br /><span style="color: teal">&#160; 9</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Enemigo e = <span style="color: blue">new</span> Enemigo(pos);     <br /><span style="color: teal">10</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; enemigos.Add(e);     <br /><span style="color: teal">11</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; X += <span style="color: maroon">50</span>;     <br /><span style="color: teal">12</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }     <br /><span style="color: teal">13</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </div>
<div style="font-family: courier new">&#160;</div>
<div style="font-family: courier new">Ahora, para cada enemigo de la lista, tenemis que decirle que texturas vamos a cargar. En este caso, todos los enemigos tienen la misma textura, y el disparo es el mismo que dispara nuestra nave.</div>
<div style="font-family: courier new"><span style="color: teal">14</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: green">//cargamos las texturas del enemigo</span>     <br /><span style="color: teal">15</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">foreach</span>(Enemigo e <span style="color: blue">in</span> enemigos)     <br /><span style="color: teal">16</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {     <br /><span style="color: teal">17</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; e.Textura = Content.Load&lt;Texture2D&gt;(<span style="color: maroon">&quot;enemigo&quot;</span>);     <br /><span style="color: teal">18</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; e.TexturaDisparo = Content.Load&lt;Texture2D&gt;(<span style="color: maroon">&quot;disparoNave&quot;</span>);     <br /><span style="color: teal">19</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</div>
<p>&#160;</p>
<p align="left">Por cierto, aquí os dejo el sprite del enemigo:</p>
<p align="center"><img style="border-right-width: 0px;float: none;border-top-width: 0px;border-bottom-width: 0px;margin-left: auto;border-left-width: 0px;margin-right: auto" border="0" alt="enemigo" src="http://www.xna-tutorial.com/wp-content/uploads/2009/11/enemigo1.png" width="37" height="28" /></p>
<p align="center"><img style="border-right-width: 0px;float: none;border-top-width: 0px;border-bottom-width: 0px;margin-left: auto;border-left-width: 0px;margin-right: auto" border="0" alt="enemigoBIG" src="http://www.xna-tutorial.com/wp-content/uploads/2009/11/enemigoBIG1.png" width="124" height="91" /></p>
<p>Si le dais a” botón derecho/guardar imagen como” os podéis guardar el sprite.</p>
<p>&#160;</p>
<p>Ahora queda pintar a los enemigos en la pantalla. <strong>Nota</strong>: El método update() me lo salto porque de momento los enemigos no hacen nada.</p>
<p>Pues al igual que con la nave, tenemos que decirle a todos los enemigos que se pinten. Para ellos, recorremos la lista con un bucle “foreach” dela siguiente manera:</p>
<p>&#160;</p>
<div style="font-family: courier new"><span style="color: teal">&#160; 1</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: blue">foreach</span> (Enemigo e <span style="color: blue">in</span> enemigos)     <br /><span style="color: teal">&#160; 2</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {     <br /><span style="color: teal">&#160; 3</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; e.Draw(spriteBatch);     <br /><span style="color: teal">&#160; 4</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</div>
<p>&#160;</p>
<p>&#160;</p>
<p>Y ya está. Ya tenemos a 5 enemigos en nuestra pantalla. Si quieres puedes ir jugando con las posiciones iniciales de los enemigos, meter mas filas de enemigos, etc. hasta que escriba el siguiente tutorial, donde haremos que los enemigos se muevan!!!</p>
<p>Y como siempre, el código fuente del tutorial:</p>
<p>&#160;</p>
<p><a href="http://www.xna-tutorial.com/wp-content/uploads/2009/11/Tutorial4.zip"><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;margin-left: 0px;border-left-width: 0px;margin-right: 0px" border="0" alt="down" src="http://www.xna-tutorial.com/wp-content/uploads/2009/11/down1.png" width="61" height="63" /></a> <a href="http://www.xna-tutorial.com/wp-content/uploads/2009/11/Tutorial4.zip">Descargar código fuente</a></p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>Si tienes alguna duda con el tutorial, puedes preguntármela en el <a href="http://www.foro.xna-tutorial.com/viewtopic.php?f=4&amp;t=4">foro</a>: <a href="http://www.foro.xna-tutorial.com/viewtopic.php?f=4&amp;t=4">http://www.foro.xna-tutorial.com/viewtopic.php?f=4&amp;t=4</a></p>
<p>Un saludo a todos!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xna-tutorial.com/tutorial-entrega-4-aadiendo-enemigos/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Tutorial [Entrega 2]: Moviendo un sprite por la pantalla</title>
		<link>http://www.xna-tutorial.com/moviendo-un-sprite-por-la-pantalla/</link>
		<comments>http://www.xna-tutorial.com/moviendo-un-sprite-por-la-pantalla/#comments</comments>
		<pubDate>Mon, 14 Dec 2009 19:08:46 +0000</pubDate>
		<dc:creator>rantamplan</dc:creator>
				<category><![CDATA[2D]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[space invaders]]></category>
		<category><![CDATA[sprite]]></category>

		<guid isPermaLink="false">http://www.xna-tutorial.com/moviendo-un-sprite-por-la-pantalla/</guid>
		<description><![CDATA[&#160;
Parece que ha habido un error y la 2º parte del tutorial se ha borrado, asi que vuelvo a subirlo: Un saludo y perdonar las molestias

&#160;
&#160;
Continuamos la serie de tutoriales con lo más básico de XNA: crear el proyecto y mover un sprite por la pantalla.
En esta entrega crearemos un proyecto de XNA 3.1 y [...]]]></description>
			<content:encoded><![CDATA[<p>&#160;</p>
<blockquote><p>Parece que ha habido un error y la 2º parte del tutorial se ha borrado, asi que vuelvo a subirlo: Un saludo y perdonar las molestias</p>
</blockquote>
<p>&#160;</p>
<p>&#160;</p>
<p>Continuamos la serie de tutoriales con lo más básico de XNA: crear el proyecto y mover un sprite por la pantalla.</p>
<p>En esta entrega crearemos un proyecto de XNA 3.1 y dibujaremos por la pantalla un sprite (nuestra nave) y haremos que se mueva por la pantalla. Vamos a empezar por cosas fáciles y ya iremos subiendo poco a poco el nivel de dificultad.</p>
<p>Encontrarás el tutorial completo después del salto.</p>
</p>
<p> <span id="more-273"></span>
</p>
<h2><u>Creando el proyecto</u></h2>
<p>Lo primero que tenemos que hacer es crear un nuevo proyecto de XNA. Para ello, abrimos el VS2008 (o el Visual C# Studio si tienes la versión gratuita) y le damos a <strong>“Archivo/Nuevo/Proyecto”.</strong></p>
<p><strong></strong></p>
<p><img style="border-right-width: 0px;float: none;border-top-width: 0px;border-bottom-width: 0px;margin-left: auto;border-left-width: 0px;margin-right: auto" border="0" alt="image" src="http://www.xna-tutorial.com/wp-content/uploads/2009/12/image1.png" width="561" height="369" /></p>
<p>&#160;</p>
<p>&#160;</p>
<p>Nos saldrá una nueva ventana donde debemos elegir como tipo de proyecto “<strong>XNA Game Studio 3.1</strong>” y como plantilla “<strong>Windows Game</strong>”.</p>
<p>&#160;</p>
<p><img style="border-right-width: 0px;float: none;border-top-width: 0px;border-bottom-width: 0px;margin-left: auto;border-left-width: 0px;margin-right: auto" border="0" alt="image" src="http://www.xna-tutorial.com/wp-content/uploads/2009/12/image12.png" width="805" height="540" /></p>
<p>&#160;</p>
<p>&#160;</p>
<p>También le debemos <strong>dar un nombre al proyecto</strong>. Como hoy estoy poco ingenioso, lo llamaré simplemente “Space Invaders”. Vosotros podéis darle el nombre que queráis.</p>
<p>Si le damos a aceptar, veremos que se creará un proyecto nuevo, con varios ficheros (Game1.cs, Program.cs). Vemos que ya hay código escrito, y si le damos a F5 nos saldrá una pantalla azul. Esa pantalla es nuestro&#160; futuro juego.&#160; El fichero <em>Program.cs</em> no debemos tocarlo.</p>
<h3></h3>
<h3></h3>
<h2><span style="text-decoration: underline"></span></h2>
<h2><span style="text-decoration: underline">Creando la nave</span></h2>
<p>Ahora vamos a crear nuestra nave y pintarla en la pantalla esa azul que nos ha salido antes.</p>
<p>Para ello, en el archivo <strong>Game1.cs</strong> nos creamos una variable llamada nave de tipo ‘Texture2D’ que representará nuestra nave para combatir la invasión alienígena y un nuevo tipo de dato que trae XNA llamado ‘Vector2’ para almacenar la posición de la nave.</p>
<blockquote><div style="font-family: courier new"><span style="color: blue">private</span> Texture2D nave;       <br /><span style="color: blue">private</span> Vector2 pos;</div>
</blockquote>
<p>&#160;</p>
<p>&#160;</p>
<p>Ahora vamos al método Initialize(). En este método iniciamos la posición inicial de la nave. El resultado del método os quedará así:</p>
<blockquote><div style="font-family: courier new"><span style="color: blue">protected</span> <span style="color: blue">override</span> <span style="color: blue">void</span> Initialize()       <br />{       <br /><span style="color: green">// TODO: Add your initialization logic here</span>       <br />pos = <span style="color: blue">new</span> Vector2(<span style="color: maroon">400</span>,<span style="color: maroon">550</span>);<span style="color: blue">base</span>.Initialize();       <br />}</div>
</blockquote>
<p>&#160;</p>
<p>&#160;</p>
<p>Ya tenemos la posición de la nave. Ahora le tenemos que indicar al programa que sprite queremos usar como nave. Así que os dejo yo aquí uno muy chulo hecho por mi con gran destreza haciendo uso de mis años usando el Paint, XD.</p>
<p><a href="http://www.xna-tutorial.com/wp-content/uploads/2009/12/nave.png"><img style="border-right-width: 0px;float: none;border-top-width: 0px;border-bottom-width: 0px;margin-left: auto;border-left-width: 0px;margin-right: auto" border="0" alt="nave" src="http://www.xna-tutorial.com/wp-content/uploads/2009/12/nave_thumb.png" width="32" height="22" /></a></p>
<p>&#160;</p>
<p>Bien, para cargar la imagen primero tenemos que agregarla al directorio <strong>“Content”</strong> del juego. Para ello, le damos a <strong>“Botón Derecho”</strong> sobre “Content” y seleccionamos <strong>“Agregar/Elemento Existente”.</strong> Buscamos el sprite y le damos a aceptar. También podemos arrastrar directamente una imagen al directorio.</p>
<p>&#160;</p>
<p><img style="border-right-width: 0px;float: none;border-top-width: 0px;border-bottom-width: 0px;margin-left: auto;border-left-width: 0px;margin-right: auto" border="0" alt="image" src="http://www.xna-tutorial.com/wp-content/uploads/2009/12/image37.png" width="461" height="445" /></p>
<p>&#160;</p>
<p>&#160;</p>
<p>Ahora en nuestro proyecto tenemos un sprite llamado “nave”. Para cargarlo, usaremos el método <strong><em>‘Load()’</em></strong> dentro de nuestro método LoadContent(). Nos quedará algo así:</p>
<blockquote><div style="font-family: courier new"><span style="color: blue">protected</span> <span style="color: blue">override</span> <span style="color: blue">void</span> LoadContent()       <br />{       <br /><span style="color: green">// Create a new SpriteBatch, which can be used to draw textures.</span>       <br />spriteBatch = <span style="color: blue">new</span> SpriteBatch(GraphicsDevice);       <br />nave = Content.Load&lt;Texture2D&gt;(<span style="color: maroon">&quot;nave&quot;</span>);<span style="color: green">// TODO: use this.Content to load your game content here</span>       <br />}</div>
</blockquote>
<p>&#160;</p>
<p>&#160;</p>
<p>Ahora ya falta dibujarlo por la pantalla. Así que en el método Draw() escribimos el siguiente código para pintarlo.</p>
<blockquote><div style="font-family: courier new"><span style="color: blue">protected</span> <span style="color: blue">override</span> <span style="color: blue">void</span> Draw(GameTime gameTime)       <br />{       <br />GraphicsDevice.Clear(Color.CornflowerBlue);<span style="color: green">// TODO: Add your drawing code here</span>       <br />spriteBatch.Begin();       <br />spriteBatch.Draw(nave, pos, Color.White);       <br />spriteBatch.End();</div>
<div style="font-family: courier new"><span style="color: blue">base</span>.Draw(gameTime);       <br />}</div>
</blockquote>
<p>&#160;</p>
<p>&#160;</p>
<p>Si le damos ahora a F5 nos mostrará por la pantalla un fondo azul y nuestra nave. Igual que esta imagen:</p>
<p>&#160;</p>
<p><img style="border-right-width: 0px;float: none;border-top-width: 0px;border-bottom-width: 0px;margin-left: auto;border-left-width: 0px;margin-right: auto" border="0" alt="image" src="http://www.xna-tutorial.com/wp-content/uploads/2009/12/image18.png" width="813" height="636" /></p>
<p>&#160;</p>
<p>&#160;</p>
<p>Muy bonito, si, pero todavía no podemos hacer nada con ella, así que vamos a ver como moverla por la pantalla.</p>
<p>&#160;</p>
<p>Para ello, volvemos al método “update()” y escribimos dos instrucciones if: una para mover a la izquierda y otra para mover a la derecha.</p>
<blockquote><p style="font-family: courier new"><span style="color: blue">protected</span> <span style="color: blue">override</span> <span style="color: blue">void</span> Update(GameTime gameTime)       <br />{       <br /><span style="color: green">// Allows the game to exit</span>       <br /><span style="color: blue">if</span> (Keyboard.GetState().IsKeyDown(Keys.Escape))       <br /><span style="color: blue">this</span>.Exit();</p>
<p><span style="color: green">// TODO: Add your update logic here</span>       <br /><span style="color: blue">if</span> (Keyboard.GetState().IsKeyDown(Keys.Left))       <br />pos.X -= <span style="color: maroon">5</span>;       <br /><span style="color: blue">if</span> (Keyboard.GetState().IsKeyDown(Keys.Right))       <br />pos.X += <span style="color: maroon">5</span>;       <br /><span style="color: blue">base</span>.Update(gameTime);       <br />}</p>
</blockquote>
<p>&#160;</p>
<p>&#160;</p>
<p>Ahora, si le damos a F5, con las teclas de dirección podremos mover nuestra nave hacia izquierda y derecha. Fácil, verdad?</p>
<p>En la próxima entrega crearemos una clase para nuestra nave para poder controlarla mejor y haremos que pueda disparar.</p>
<p>&#160;</p>
<p><a href="http://www.xna-tutorial.com/wp-content/uploads/2009/11/Tutorial2.zip"><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;margin-left: 0px;border-left-width: 0px;margin-right: 0px" border="0" alt="down" align="left" src="http://www.xna-tutorial.com/wp-content/uploads/2009/11/down.png" width="61" height="63" /></a> <a href="http://www.xna-tutorial.com/wp-content/uploads/2009/11/Tutorial2.zip"><strong><span style="text-decoration: underline">Descargar Código Fuente</span></strong></a></p>
<p>&#160;</p>
<p>Hasta la próxima entrega!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xna-tutorial.com/moviendo-un-sprite-por-la-pantalla/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Libro electr&#243;nico XNA gratuito</title>
		<link>http://www.xna-tutorial.com/libro-electrnico-xna-gratuito/</link>
		<comments>http://www.xna-tutorial.com/libro-electrnico-xna-gratuito/#comments</comments>
		<pubDate>Mon, 14 Dec 2009 09:23:00 +0000</pubDate>
		<dc:creator>rantamplan</dc:creator>
				<category><![CDATA[2D]]></category>
		<category><![CDATA[3D]]></category>
		<category><![CDATA[Audio]]></category>
		<category><![CDATA[Colisiones]]></category>
		<category><![CDATA[Entrevistas]]></category>
		<category><![CDATA[Fisica]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[IA]]></category>
		<category><![CDATA[Jugabilidad]]></category>
		<category><![CDATA[Red]]></category>
		<category><![CDATA[gratis]]></category>
		<category><![CDATA[libro]]></category>
		<category><![CDATA[xna]]></category>

		<guid isPermaLink="false">http://www.xna-tutorial.com/libro-electrnico-xna-gratuito/</guid>
		<description><![CDATA[Desde la web www.facultyresourcecenter.com podemos descargarnos un fantastico libro gratuito de XNA. Está en inglés, pero no debería ser un problema para vosotros.
El libro se titula “Introduction to Programming Through Game Development Using Microsoft XNA Game Studio”. Ocupa sólo 9 Mb y si, está en inglés. Pero el ingles no debería ser un problema para [...]]]></description>
			<content:encoded><![CDATA[<p>Desde la web <a href="http://www.facultyresourcecenter.com">www.facultyresourcecenter.com</a> podemos descargarnos un fantastico libro gratuito de XNA. Está en inglés, pero no debería ser un problema para vosotros.</p>
<p>El libro se titula <strong>“Introduction to Programming Through Game Development Using Microsoft XNA Game Studio”.</strong> Ocupa sólo 9 Mb y si, está en inglés. Pero el ingles no debería ser un problema para vosotros. Además también puedes bajarte el ejemplo. Para ser gratuito, esta bastante bien.</p>
<p>Para bajaros el pdf, tenéis que pinchar en este enlace: <a title="https://www.facultyresourcecenter.com/curriculum/pfv.aspx?ID=8119" href="https://www.facultyresourcecenter.com/curriculum/pfv.aspx?ID=8119">https://www.facultyresourcecenter.com/curriculum/pfv.aspx?ID=8119</a> y desde aquí darle a “Download”.</p>
<p>Os dejo con el temario del libro por si queréis consultar algún capitulo en especial.</p>
<blockquote>
</blockquote>
<ol>
<blockquote>
<li><a href="https://www.facultyresourcecenter.com/curriculum/pfv.aspx?ID=7859">C# Development</a> </li>
<li><a href="https://www.facultyresourcecenter.com/curriculum/pfv.aspx?ID=8168">Introduction to Programming Through Game Development Using Microsoft XNA Game Studio &#8211; Chapter 1: Computers, C#, XNA and You</a> </li>
<li><a href="https://www.facultyresourcecenter.com/curriculum/pfv.aspx?ID=8307">Introduction to Programming Through Game Development Using Microsoft XNA Game Studio &#8211; Chapter 10: Using Methods</a> </li>
<li><a href="https://www.facultyresourcecenter.com/curriculum/pfv.aspx?ID=8308">Introduction to Programming Through Game Development Using Microsoft XNA Game Studio &#8211; Chapter 11: A Game as a Program</a> </li>
<li><a href="https://www.facultyresourcecenter.com/curriculum/pfv.aspx?ID=8309">Introduction to Programming Through Game Development Using Microsoft XNA Game Studio &#8211; Chapter 12: Games, Objects and State</a> </li>
<li><a href="https://www.facultyresourcecenter.com/curriculum/pfv.aspx?ID=8315">Introduction to Programming Through Game Development Using Microsoft XNA Game Studio &#8211; Chapter 13: Making a Complete Game</a> </li>
<li><a href="https://www.facultyresourcecenter.com/curriculum/pfv.aspx?ID=8314">Introduction to Programming Through Game Development Using Microsoft XNA Game Studio &#8211; Chapter 14: Classes, Objects and Games</a> </li>
<li><a href="https://www.facultyresourcecenter.com/curriculum/pfv.aspx?ID=8318">Introduction to Programming Through Game Development Using Microsoft XNA Game Studio &#8211; Chapter 15: Creating Game Components</a> </li>
<li><a href="https://www.facultyresourcecenter.com/curriculum/pfv.aspx?ID=8317">Introduction to Programming Through Game Development Using Microsoft XNA Game Studio &#8211; Chapter 16: Creating Multi-Player Networked Games</a> </li>
<li><a href="https://www.facultyresourcecenter.com/curriculum/pfv.aspx?ID=8170">Introduction to Programming Through Game Development Using Microsoft XNA Game Studio &#8211; Chapter 2: Programs and Colors</a> </li>
<li><a href="https://www.facultyresourcecenter.com/curriculum/pfv.aspx?ID=8171">Introduction to Programming Through Game Development Using Microsoft XNA Game Studio &#8211; Chapter 3: Getting Player Input</a> </li>
<li><a href="https://www.facultyresourcecenter.com/curriculum/pfv.aspx?ID=8173">Introduction to Programming Through Game Development Using Microsoft XNA Game Studio &#8211; Chapter 4: Displaying Images</a> </li>
<li><a href="https://www.facultyresourcecenter.com/curriculum/pfv.aspx?ID=8174">Introduction to Programming Through Game Development Using Microsoft XNA Game Studio &#8211; Chapter 5: Writing Text</a> </li>
<li><a href="https://www.facultyresourcecenter.com/curriculum/pfv.aspx?ID=8175">Introduction to Programming Through Game Development Using Microsoft XNA Game Studio &#8211; Chapter 6: Creating a Multi-Player Game</a> </li>
<li><a href="https://www.facultyresourcecenter.com/curriculum/pfv.aspx?ID=8176">Introduction to Programming Through Game Development Using Microsoft XNA Game Studio &#8211; Chapter 7: Playing Sounds</a> </li>
<li><a href="https://www.facultyresourcecenter.com/curriculum/pfv.aspx?ID=8218">Introduction to Programming Through Game Development Using Microsoft XNA Game Studio &#8211; Chapter 8: Creating a Timer</a> </li>
<li><a href="https://www.facultyresourcecenter.com/curriculum/pfv.aspx?ID=8219">Introduction to Programming Through Game Development Using Microsoft XNA Game Studio &#8211; Chapter 9: Reading Text Input</a> </li>
<li><a href="https://www.facultyresourcecenter.com/curriculum/pfv.aspx?ID=8316">Introduction to Programming Through Game Development Using Microsoft XNA Game Studio &#8211; Instructor Preparation Guide</a> </li>
<li><a href="https://www.facultyresourcecenter.com/curriculum/pfv.aspx?ID=8178">Introduction to Programming Through Game Development Using Microsoft XNA Game Studio &#8211; Text Sample Code</a> </li>
</blockquote>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.xna-tutorial.com/libro-electrnico-xna-gratuito/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

