<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://windowstecnico.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Windows Técnico : Xna, Programacion</title><link>http://windowstecnico.com/archive/tags/Xna/Programacion/default.aspx</link><description>Etiquetas: Xna, Programacion</description><dc:language /><generator>CommunityServer 2008.5 (Build: 30929.2835)</generator><item><title>Diseñar juegos para Windows y XBOX 360 con Microsoft XNA (VI de VI)</title><link>http://windowstecnico.com/archive/2009/09/28/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-vi.aspx</link><pubDate>Mon, 28 Sep 2009 13:04:00 GMT</pubDate><guid isPermaLink="false">f5fee4ed-c2ed-43f2-a57e-69c2e2dfbdde:882</guid><dc:creator>Juan Antonio</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://windowstecnico.com/rsscomments.aspx?PostID=882</wfw:commentRss><comments>http://windowstecnico.com/archive/2009/09/28/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-vi.aspx#comments</comments><description>&lt;p align="justify"&gt;Buenas a todos, la pasada semana finalizamos la cadena de posts sobre programaci&amp;oacute;n de videojuegos en XNA explicando como se produc&amp;iacute;an las colisiones entre los diferentes objetos del juego. Hoy vamos a pasar a resumir todos los contenidos que hemos visto, os ense&amp;ntilde;ar&amp;eacute; a poner m&amp;uacute;sica de fondo en los juegos para darles un toque mas profesional y finalmente os voy a ense&amp;ntilde;ar algunos ejemplos de videojuegos, algunos programados por mi, para daros ideas de videojuegos que pod&amp;eacute;is programar.&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;A&amp;ntilde;adir una cancion como fondo de un videojuego&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Una de las mejores opciones que nos proporciona XNA es la de poder a&amp;ntilde;adir una canci&amp;oacute;n en formato mp3 para que suene mientras se reproduce el juego, para ello en primer lugar elegiremos la canci&amp;oacute;n que nos interese, y la almacenaremos en la carpeta &amp;ldquo;Content&amp;rdquo; del videojuego, al igual que las im&amp;aacute;genes que hemos utilizado en anteriores post. Una vez agregada la cargaremos en el juego de la misma manera que cargamos una imagen, primero nos crearemos una variable tipo song:&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;song musica;&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;Y despu&amp;eacute;s iremos a la funci&amp;oacute;n LoadContent() y la agregaremos de la siguiente manera, siendo canci&amp;oacute;n nuestra cancion.mp3 (recordar que siempre ponemos el nombre sin la extensi&amp;oacute;n):&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;musica = Content.Load&amp;lt;Song&amp;gt;(&amp;ldquo;cancion&amp;rdquo;);&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;Para reproducir la canci&amp;oacute;n nos bastara con poner inmediatamente despu&amp;eacute;s de la linea anterior, lo siguiente:&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;MediaPlayer.Play(musica);&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;Como veis es muy sencillo.&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;&amp;iquest;Qu&amp;eacute; hemos visto sobre programaci&amp;oacute;n de videojuegos en 2D?&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;En primer lugar hablamos sobre XNA, que era, para que serv&amp;iacute;a, que pod&amp;iacute;amos hacer con el, que necesit&amp;aacute;bamos para instalarnoslo y vimos algunos ejemplos, entre ellos un videojuego de sonic que program&amp;eacute; para ense&amp;ntilde;aroslo:&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.windowstecnico.com/archive/2009/08/31/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-i.aspx"&gt;http://www.windowstecnico.com/archive/2009/08/31/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-i.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="display:block;float:none;margin-left:auto;width:425px;margin-right:auto;padding:0px;" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:15ce536e-0be3-48ee-87d9-d0fe5e0578eb" class="wlWriterEditableSmartContent"&gt;
&lt;div&gt;
&lt;object height="355" width="425"&gt;
&lt;param value="http://www.youtube.com/v/ychQYuSF3r8&amp;amp;hl=es&amp;amp;fs=1&amp;amp;&amp;amp;hl=en" name="movie" /&gt;&lt;embed height="355" width="425" type="application/x-shockwave-flash" src="http://www.youtube.com/v/ychQYuSF3r8&amp;amp;hl=es&amp;amp;fs=1&amp;amp;&amp;amp;hl=en"&gt;&lt;/embed&gt;
&lt;/object&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;En segundo lugar estudiamos como crear un proyecto en XNA, vimos para que serv&amp;iacute;an cada una de las funciones que nos proporcionaba la plataforma y cargamos el videojuego que trae XNA de ejemplo para probarlo:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.windowstecnico.com/archive/2009/09/07/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-ii.aspx"&gt;http://www.windowstecnico.com/archive/2009/09/07/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-ii.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;En tercer lugar, os ense&amp;ntilde;&amp;eacute; a cargar un objeto y un fondo en el proyecto de nuestro videojuego, y aprendimos a mover un objeto por la pantalla, capturando las teclas de nuestro teclado:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.windowstecnico.com/archive/2009/09/14/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-iii.aspx"&gt;http://www.windowstecnico.com/archive/2009/09/14/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-iii.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="display:block;float:none;margin-left:auto;width:425px;margin-right:auto;padding:0px;" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:9579e065-2c07-4082-94fe-68e3c46d8d1f" class="wlWriterEditableSmartContent"&gt;
&lt;div&gt;
&lt;object height="355" width="425"&gt;
&lt;param value="http://www.youtube.com/v/O3be7RNuNao&amp;amp;hl=es&amp;amp;fs=1&amp;amp;&amp;amp;hl=en" name="movie" /&gt;&lt;embed height="355" width="425" type="application/x-shockwave-flash" src="http://www.youtube.com/v/O3be7RNuNao&amp;amp;hl=es&amp;amp;fs=1&amp;amp;&amp;amp;hl=en"&gt;&lt;/embed&gt;
&lt;/object&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;En cuarto lugar estudiamos como simular los pasos que dar&amp;iacute;a un mu&amp;ntilde;eco cuando va andando:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.windowstecnico.com/archive/2009/09/17/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-iv.aspx"&gt;http://www.windowstecnico.com/archive/2009/09/17/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-iv.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="display:block;float:none;margin-left:auto;width:425px;margin-right:auto;padding:0px;" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:a8b1ac6b-4ce3-45f6-8f62-d1070e302239" class="wlWriterEditableSmartContent"&gt;
&lt;div&gt;
&lt;object height="355" width="425"&gt;
&lt;param value="http://www.youtube.com/v/I3QgQeqPzM0&amp;amp;hl=es&amp;amp;fs=1&amp;amp;&amp;amp;hl=en" name="movie" /&gt;&lt;embed height="355" width="425" type="application/x-shockwave-flash" src="http://www.youtube.com/v/I3QgQeqPzM0&amp;amp;hl=es&amp;amp;fs=1&amp;amp;&amp;amp;hl=en"&gt;&lt;/embed&gt;
&lt;/object&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;En quinto lugar aprendimos a generar colisiones entre los diferentes objetos del videojuego:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.windowstecnico.com/archive/2009/09/22/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-v.aspx"&gt;http://www.windowstecnico.com/archive/2009/09/22/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-v.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="display:block;float:none;margin-left:auto;width:425px;margin-right:auto;padding:0px;" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:872df8d0-c621-46f4-8bfd-cc86a79c35ee" class="wlWriterEditableSmartContent"&gt;
&lt;div&gt;
&lt;object height="355" width="425"&gt;
&lt;param value="http://www.youtube.com/v/G9XvNOD0AA0&amp;amp;hl=es&amp;amp;fs=1&amp;amp;&amp;amp;hl=en" name="movie" /&gt;&lt;embed height="355" width="425" type="application/x-shockwave-flash" src="http://www.youtube.com/v/G9XvNOD0AA0&amp;amp;hl=es&amp;amp;fs=1&amp;amp;&amp;amp;hl=en"&gt;&lt;/embed&gt;
&lt;/object&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;Hoy finalmente hemos aprendido a a&amp;ntilde;adir m&amp;uacute;sica de fondo al videojuego.&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;Con todo esto, ten&amp;eacute;is los conocimientos necesarios para programar casi cualquier videojuego en 2D, simplemente os queda practicar mucho, y si quer&amp;eacute;is dar mas realismo a vuestros videojuegos acompa&amp;ntilde;ar estas pr&amp;aacute;cticas con el estudio de algunas funciones matem&amp;aacute;ticas y f&amp;iacute;sicas que os permitan el conseguir movimientos de lanzamientos, impactos y golpes mas realistas entres los diferentes objetos del juego, cosas que se escapan del contenido de este manual con el que simplemente os quer&amp;iacute;a introducir en la programaci&amp;oacute;n de videojuegos y que espero os haya sido muy &amp;uacute;til y os sirva de plinto para seguir aprendiendo mucho mas sobre esta tecnolog&amp;iacute;a.&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;Os dejo tambi&amp;eacute;n algunos videos de videojuegos en 2D que han sido programados en XNA:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="display:block;float:none;margin-left:auto;width:425px;margin-right:auto;padding:0px;" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:84f5b40c-10fc-4b01-8135-a272bf3b86e2" class="wlWriterEditableSmartContent"&gt;
&lt;div&gt;
&lt;object height="355" width="425"&gt;
&lt;param value="http://www.youtube.com/v/XliQy1wH0GI&amp;amp;hl=es&amp;amp;fs=1&amp;amp;&amp;amp;hl=en" name="movie" /&gt;&lt;embed height="355" width="425" type="application/x-shockwave-flash" src="http://www.youtube.com/v/XliQy1wH0GI&amp;amp;hl=es&amp;amp;fs=1&amp;amp;&amp;amp;hl=en"&gt;&lt;/embed&gt;
&lt;/object&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="display:block;float:none;margin-left:auto;width:425px;margin-right:auto;padding:0px;" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:32fc59f3-7870-4326-82da-63d3bcf5ff0a" class="wlWriterEditableSmartContent"&gt;
&lt;div&gt;
&lt;object height="355" width="425"&gt;
&lt;param value="http://www.youtube.com/v/WUXUfodBlQo&amp;amp;hl=es&amp;amp;fs=1&amp;amp;&amp;amp;hl=en" name="movie" /&gt;&lt;embed height="355" width="425" type="application/x-shockwave-flash" src="http://www.youtube.com/v/WUXUfodBlQo&amp;amp;hl=es&amp;amp;fs=1&amp;amp;&amp;amp;hl=en"&gt;&lt;/embed&gt;
&lt;/object&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="display:block;float:none;margin-left:auto;width:425px;margin-right:auto;padding:0px;" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:ca88d409-5a31-4e53-a127-35e91d4d6332" class="wlWriterEditableSmartContent"&gt;
&lt;div&gt;
&lt;object height="355" width="425"&gt;
&lt;param value="http://www.youtube.com/v/6hv0Av6WBnc&amp;amp;hl=es&amp;amp;fs=1&amp;amp;&amp;amp;hl=en" name="movie" /&gt;&lt;embed height="355" width="425" type="application/x-shockwave-flash" src="http://www.youtube.com/v/6hv0Av6WBnc&amp;amp;hl=es&amp;amp;fs=1&amp;amp;&amp;amp;hl=en"&gt;&lt;/embed&gt;
&lt;/object&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="display:block;float:none;margin-left:auto;width:425px;margin-right:auto;padding:0px;" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:e1a86fa5-62da-4ced-af8b-cf8ad1ebc100" class="wlWriterEditableSmartContent"&gt;
&lt;div&gt;
&lt;object height="355" width="425"&gt;
&lt;param value="http://www.youtube.com/v/_FmV01TQq_A&amp;amp;hl=es&amp;amp;fs=1&amp;amp;&amp;amp;hl=en" name="movie" /&gt;&lt;embed height="355" width="425" type="application/x-shockwave-flash" src="http://www.youtube.com/v/_FmV01TQq_A&amp;amp;hl=es&amp;amp;fs=1&amp;amp;&amp;amp;hl=en"&gt;&lt;/embed&gt;
&lt;/object&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;Para finalizar os voy a mostrar el &amp;uacute;ltimo videojuego que program&amp;eacute;, para mostrarle una idea a uno de los lectores de nuestro blog sobre como programar un tetris. Est&amp;aacute; programado con una &amp;uacute;nica pieza (la L), y sin rotaciones, para ahorrar tiempo, pero pod&amp;eacute;is ver la potencia de la plataforma que en poco mas de media hora y con las dos siguientes im&amp;aacute;genes como base me permitieron programar el siguiente juego:&lt;/p&gt;
&lt;p align="center"&gt;&amp;nbsp;&lt;a href="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/image_5F00_5D69A89F.png"&gt;&lt;img border="0" width="282" src="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/image_5F00_thumb_5F00_35ECF92C.png" alt="image" height="454" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" title="image" /&gt;&lt;/a&gt; &lt;a href="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/image_5F00_6AB4916D.png"&gt;&lt;img border="0" width="48" src="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/image_5F00_thumb_5F00_437A4838.png" alt="image" height="48" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" title="image" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;div style="display:block;float:none;margin-left:auto;width:425px;margin-right:auto;padding:0px;" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:64d23698-d146-44ef-bc28-4a784cc55e48" class="wlWriterEditableSmartContent"&gt;
&lt;div&gt;
&lt;object height="355" width="425"&gt;
&lt;param value="http://www.youtube.com/v/ZuoCPlBfLNc&amp;amp;hl=es&amp;amp;fs=1&amp;amp;&amp;amp;hl=en" name="movie" /&gt;&lt;embed height="355" width="425" type="application/x-shockwave-flash" src="http://www.youtube.com/v/ZuoCPlBfLNc&amp;amp;hl=es&amp;amp;fs=1&amp;amp;&amp;amp;hl=en"&gt;&lt;/embed&gt;
&lt;/object&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;****************************************************************&lt;/p&gt;
&lt;p align="justify"&gt;-&amp;nbsp;&lt;a href="http://www.windowstecnico.com/archive/2009/08/31/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-i.aspx"&gt;Dise&amp;ntilde;ar juegos para Windows y XBOX 360 con Microsoft XNA (I de VI)&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;-&amp;nbsp;&lt;a href="http://www.windowstecnico.com/archive/2009/09/07/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-ii.aspx"&gt;Dise&amp;ntilde;ar juegos para Windows y XBOX 360 con Microsoft XNA (II de VI)&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;-&amp;nbsp;&lt;a href="http://www.windowstecnico.com/archive/2009/09/14/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-iii.aspx"&gt;Dise&amp;ntilde;ar juegos para Windows y XBOX 360 con Microsoft XNA (III de VI)&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;-&amp;nbsp;&lt;a href="http://www.windowstecnico.com/archive/2009/09/17/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-iv.aspx"&gt;Dise&amp;ntilde;ar juegos para Windows y XBOX 360 con Microsoft XNA (IV de VI)&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;-&amp;nbsp;&lt;a href="http://www.windowstecnico.com/archive/2009/09/22/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-v.aspx"&gt;Dise&amp;ntilde;ar juegos para Windows y XBOX 360 con Microsoft XNA (V de VI)&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;-&lt;a title="Dise&amp;ntilde;ar juegos XNA" href="http://www.windowstecnico.com/archive/2009/09/28/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-vi.aspx"&gt;&amp;nbsp;Dise&amp;ntilde;ar juegos para Windows y XBOX 360 con Microsoft XNA (VI de VI)&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;****************************************************************&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://windowstecnico.com/aggbug.aspx?PostID=882" width="1" height="1"&gt;</description><category domain="http://windowstecnico.com/archive/tags/Desarrollo/default.aspx">Desarrollo</category><category domain="http://windowstecnico.com/archive/tags/Xna/default.aspx">Xna</category><category domain="http://windowstecnico.com/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://windowstecnico.com/archive/tags/Programacion/default.aspx">Programacion</category><category domain="http://windowstecnico.com/archive/tags/.Net/default.aspx">.Net</category></item><item><title>Diseñar juegos para Windows y XBOX 360 con Microsoft XNA (VI de VI)</title><link>http://windowstecnico.com/archive/2009/09/22/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-v.aspx</link><pubDate>Tue, 22 Sep 2009 14:32:00 GMT</pubDate><guid isPermaLink="false">f5fee4ed-c2ed-43f2-a57e-69c2e2dfbdde:866</guid><dc:creator>Juan Antonio</dc:creator><slash:comments>10</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://windowstecnico.com/rsscomments.aspx?PostID=866</wfw:commentRss><comments>http://windowstecnico.com/archive/2009/09/22/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-v.aspx#comments</comments><description>&lt;p align="justify"&gt;Buenas a todos, estamos en semana de SIMO!, supongo que muchos de vosotros estar&amp;eacute;is disfrutando ahora mismo de &amp;eacute;l, mientras que otros estar&amp;eacute;is esperando post y comentarios en blogs de inform&amp;aacute;tica que leer para enteraros de todo lo que pasa en el pabell&amp;oacute;n 7 del IFEMA, pero mientras tanto, como durante todo el mes de Septiembre, os traigo el V y &amp;uacute;ltimo post del manual sobre programaci&amp;oacute;n en 2D. Voy a extender el manual un post m&amp;aacute;s, que publicar&amp;eacute; en unos d&amp;iacute;as, para mostraros algunos videos de videojuegos en 2D que he programado y ense&amp;ntilde;aros a programar otro juego en 2D, pero diferente, para que ve&amp;aacute;is otras posibilidades de juegos en 2D, hay cientos de ellas. Mientras tanto hoy vamos a continuar por donde lo dejamos el &amp;uacute;ltimo d&amp;iacute;a, y vamos a aprender a generar colisiones entre dos objetos.&lt;/p&gt;
&lt;p align="justify"&gt;Seguiremos aprovechando el videojuego Alien, y vamos a a&amp;ntilde;adirle una piedra en el suelo a nuestro juego, para que cuando nuestro mu&amp;ntilde;eco choque con ella no pueda avanzar, y no le quede m&amp;aacute;s remedio que superarla de un salto.&lt;/p&gt;
&lt;p align="justify"&gt;Para comenzar debemos conseguir una imagen de una piedra, la almacenaremos en la carpeta Content y la cargaremos en el juego como ya sabemos. Ahora debemos repasar como crear un objeto en el juego, para ello volveremos a la parte III del manual, y crearemos un nuevo vector, una nueva textura, a la que le asignaremos la imagen que antes cargamos, y en la funci&amp;oacute;n Draw() la dibujaremos en pantalla, de tal manera que tengamos al arrancar el videojuego una imagen como la siguiente:&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/clip_5F00_image002_5F00_163AE20B.jpg"&gt;&lt;img border="0" width="535" src="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/clip_5F00_image002_5F00_thumb_5F00_504ED04C.jpg" alt="clip_image002" height="404" style="border-top-width:0px;display:block;border-left-width:0px;float:none;border-bottom-width:0px;margin-left:auto;margin-right:auto;border-right-width:0px;" title="clip_image002" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;Bien, una vez que tengamos generada nuestra piedra, debemos realizar la colisi&amp;oacute;n. Para ello vamos a rodear a nuestro alien&amp;iacute;gena y a nuestra piedra de una &amp;ldquo;esfera imaginaria&amp;rdquo; que simule el cuerpo del alien&amp;iacute;gena y la superficie de la piedra, ya que recordemos, que nuestros objetos en el videojuego ocupar&amp;aacute;n un &amp;uacute;nico pixel (un vector2D). Una vez que hayamos generado las esferas hay una funci&amp;oacute;n en XNA que nos dir&amp;aacute; si han chocado entre s&amp;iacute; o no.&lt;/p&gt;
&lt;p align="justify"&gt;En primer lugar debemos crear 2 vectores que simularan el centro del cuerpo del alien&amp;iacute;gena y el centro de la superficie de la piedra: &lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;&lt;strong&gt;Vector2 centro_piedra;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;&lt;strong&gt;Vector2 centro_alien;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;Despu&amp;eacute;s crearemos las 2 esferas que rodear&amp;aacute;n al alien&amp;iacute;gena y a la piedra:&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;&lt;strong&gt;BoundingSphere esfera_alien;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;&lt;strong&gt;BoundingSphere esfera_piedra;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;Ahora vamos a crearnos una funci&amp;oacute;n auxiliar que comprobar&amp;aacute; si los 2 objetos, el alien&amp;iacute;gena y la piedra han colisionado:&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;&lt;strong&gt;public bool colision()&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;&lt;strong&gt;centro_piedra = new Vector2(textura_piedra.Width / 2, textura_piedra.Height / 2);&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;&lt;strong&gt;centro_piedra += piedra;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;&lt;strong&gt;esfera_piedra = new BoundingSphere(new Vector3(centro_piedra, 0), textura_piedra.Width / 2);&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;&lt;strong&gt;centro_alien = new Vector2(textura_alien_der_parado.Width / 2, textura_alien_der_parado.Height / 2);&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;&lt;strong&gt;centro_alien += alien;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;&lt;strong&gt;esfera_alien = new BoundingSphere(new Vector3(centro_alien, 0), textura_alien_der_parado.Width / 2);&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;&lt;strong&gt;if(esfera_alien.Intersects(esfera_piedra))&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;&lt;strong&gt;return true;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;&lt;strong&gt;return false;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;Si estudiamos el c&amp;oacute;digo detenidamente, en primer lugar veremos que debemos calcular el centro de la piedra, que evidentemente se sit&amp;uacute;a en la mitad del ancho y del alto del dibujo de la piedra que le hemos asignado a la textura. &lt;/p&gt;
&lt;p align="justify"&gt;Inmediatamente despu&amp;eacute;s, le sumamos el vector piedra a la variable centro_piedra, ya que el dibujo de la piedra no se encuentra en el punto &amp;ldquo;0,0&amp;rdquo; del eje de las X y de las Y, sino que se encuentra en el punto donde estaba la piedra originalmente.&lt;/p&gt;
&lt;p align="justify"&gt;Finalmente generamos la esfera, a la que le tenemos que pasar como primer par&amp;aacute;metro un Vector3(x,y,z), en el que la X y la Y ser&amp;aacute;n nuestro centro de la piedra, y Z ser&amp;aacute; 0, ya que es un juego en 2D y no tiene profundidad, y como segundo par&amp;aacute;metro le pasaremos el radio de la esfera, es decir, la mitad del ancho de la piedra.&lt;/p&gt;
&lt;p align="justify"&gt;Las siguiente tres l&amp;iacute;neas de c&amp;oacute;digo son semejantes pero para el alien&amp;iacute;gena.&lt;/p&gt;
&lt;p align="justify"&gt;Nota: adem&amp;aacute;s de la esfera, pod&amp;eacute;is rodear a los objetos del juego tambi&amp;eacute;n por cuadrados, siempre deb&amp;eacute;is usar la forma geom&amp;eacute;trica que mejor se adapte al objeto que est&amp;aacute;is dibujando.&lt;/p&gt;
&lt;p align="justify"&gt;Tras las creaciones de las esferas ver&amp;eacute;is un IF, en el que comprobamos si una esfera intercepta con la otra, y devolvemos true o false, dependiendo de si ha habido colisi&amp;oacute;n o no.&lt;/p&gt;
&lt;p align="justify"&gt;&amp;iquest;Hasta ahora bastante sencillo no?, ya solo nos queda utilizar nuestra funci&amp;oacute;n colision() en la funci&amp;oacute;n Update() de la siguiente manera, debemos cambiar el contenido del bucle &amp;ldquo;foreach&amp;rdquo; por el siguiente:&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;&lt;strong&gt;if (ekey == Keys.Left)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;&lt;strong&gt;if (!colision)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;&lt;strong&gt;alien.X -= 5;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;&lt;strong&gt;else&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;&lt;strong&gt;alien.X += 5;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;&lt;strong&gt;direccion_movimiento = izq;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;&lt;strong&gt;num_movimiento += 1;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;&lt;strong&gt;if (num_movimiento == 3) num_movimiento = 0;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;&lt;strong&gt;if (ekey == Keys.Right)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;&lt;strong&gt;if (!colision)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;&lt;strong&gt;alien.X += 5;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;&lt;strong&gt;else&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;&lt;strong&gt;alien.X -= 5;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;&lt;strong&gt;direccion_movimiento = der;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;&lt;strong&gt;num_movimiento += 1;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;&lt;strong&gt;if (num_movimiento == 3) num_movimiento = 0;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;Si os fij&amp;aacute;is, el &amp;uacute;nico cambio ha sido a&amp;ntilde;adir una l&amp;iacute;nea de c&amp;oacute;digo en cada IF, de tal manera que si se produce una colisi&amp;oacute;n el alien&amp;iacute;gena retroceda 5pixels, pero os pongo el c&amp;oacute;digo entero del bucle para que lo ve&amp;aacute;is m&amp;aacute;s claro.&lt;/p&gt;
&lt;p align="justify"&gt;Si compil&amp;aacute;is y ejecut&amp;aacute;is deber&amp;iacute;a producirse la colisi&amp;oacute;n perfectamente. Ahora si os cre&amp;aacute;is una funci&amp;oacute;n sencilla que os permita saltar hasta cierta altura, capturando en vez de las teclas izquierda y derecha, la tecla arriba y haciendo que cuando el mu&amp;ntilde;eco llegue a determinada altura baje hasta el suelo, tendr&amp;eacute;is un videojuego parecido al del siguiente v&amp;iacute;deo:&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="display:block;float:none;margin-left:auto;width:425px;margin-right:auto;padding:0px;" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:4c8ae25d-926e-4d8d-88b6-572f8223ff21" class="wlWriterEditableSmartContent"&gt;
&lt;div&gt;
&lt;object height="355" width="425"&gt;
&lt;param value="http://www.youtube.com/v/G9XvNOD0AA0&amp;amp;hl=es&amp;amp;fs=1&amp;amp;hl=en" name="movie" /&gt;&lt;embed height="355" width="425" type="application/x-shockwave-flash" src="http://www.youtube.com/v/G9XvNOD0AA0&amp;amp;hl=es&amp;amp;fs=1&amp;amp;hl=en"&gt;&lt;/embed&gt;
&lt;/object&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;Con todo lo que llevamos aprendido a lo largo de estos 5 posts a modo de manual deber&amp;iacute;ais estar preparados para programar casi cualquier videojuego en 2D, ahora solo os queda practicar y sobretodo imaginaci&amp;oacute;n, ya que la clave de un buen juego es la novedad y el ingenio. En el pr&amp;oacute;ximo post, como coment&amp;eacute; m&amp;aacute;s arriba, os traer&amp;eacute; ejemplos de videojuegos en 2D, algunos programados por m&amp;iacute;, y programaremos otro tipo de videojuego en 2D, pero como ya tenemos las bases no nos entretendremos en aspectos t&amp;eacute;cnicos e iremos directamente a ver los resultados para daros mas ideas sobre videojuegos para programar.&lt;/p&gt;
&lt;p align="justify"&gt;Saludos y a practicar mucho.&lt;/p&gt;
&lt;p align="justify"&gt;
&lt;p align="justify"&gt;****************************************************************&lt;/p&gt;
&lt;p align="justify"&gt;-&amp;nbsp;&lt;a href="http://www.windowstecnico.com/archive/2009/08/31/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-i.aspx"&gt;Dise&amp;ntilde;ar juegos para Windows y XBOX 360 con Microsoft XNA (I de VI)&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;-&amp;nbsp;&lt;a href="http://www.windowstecnico.com/archive/2009/09/07/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-ii.aspx"&gt;Dise&amp;ntilde;ar juegos para Windows y XBOX 360 con Microsoft XNA (II de VI)&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;-&amp;nbsp;&lt;a href="http://www.windowstecnico.com/archive/2009/09/14/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-iii.aspx"&gt;Dise&amp;ntilde;ar juegos para Windows y XBOX 360 con Microsoft XNA (III de VI)&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;-&amp;nbsp;&lt;a href="http://www.windowstecnico.com/archive/2009/09/17/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-iv.aspx"&gt;Dise&amp;ntilde;ar juegos para Windows y XBOX 360 con Microsoft XNA (IV de VI)&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;-&amp;nbsp;&lt;a href="http://www.windowstecnico.com/archive/2009/09/22/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-v.aspx"&gt;Dise&amp;ntilde;ar juegos para Windows y XBOX 360 con Microsoft XNA (V de VI)&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;-&lt;a title="Dise&amp;ntilde;ar juegos XNA" href="http://www.windowstecnico.com/archive/2009/09/28/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-vi.aspx"&gt;&amp;nbsp;Dise&amp;ntilde;ar juegos para Windows y XBOX 360 con Microsoft XNA (VI de VI)&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;****************************************************************&lt;/p&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://windowstecnico.com/aggbug.aspx?PostID=866" width="1" height="1"&gt;</description><category domain="http://windowstecnico.com/archive/tags/Desarrollo/default.aspx">Desarrollo</category><category domain="http://windowstecnico.com/archive/tags/Xna/default.aspx">Xna</category><category domain="http://windowstecnico.com/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://windowstecnico.com/archive/tags/Programacion/default.aspx">Programacion</category><category domain="http://windowstecnico.com/archive/tags/.Net/default.aspx">.Net</category></item><item><title>Diseñar juegos para Windows y XBOX 360 con Microsoft XNA (IV de VI)</title><link>http://windowstecnico.com/archive/2009/09/17/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-iv.aspx</link><pubDate>Thu, 17 Sep 2009 08:16:00 GMT</pubDate><guid isPermaLink="false">f5fee4ed-c2ed-43f2-a57e-69c2e2dfbdde:850</guid><dc:creator>Juan Antonio</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://windowstecnico.com/rsscomments.aspx?PostID=850</wfw:commentRss><comments>http://windowstecnico.com/archive/2009/09/17/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-iv.aspx#comments</comments><description>&lt;p align="justify"&gt;Buenas a todos, tras tres post explicando la programaci&amp;oacute;n de videojuegos con XNA ya deb&amp;eacute;is tener una idea m&amp;aacute;s o menos clara del contenido necesario para programar videojuegos en 2D. Hoy vamos a complementarla con un peque&amp;ntilde;o truco en el que ense&amp;ntilde;aremos a simular el movimiento que realizar&amp;iacute;a nuestro alien&amp;iacute;gena andando. Para ello, tenemos que conseguir sprites del alien&amp;iacute;gena en diferentes posturas en las que salga andando. En mi caso, como os coment&amp;eacute; el otro d&amp;iacute;a, el mu&amp;ntilde;eco lo he dibujado con el 3D Studio y me limit&amp;eacute; a tomar capturas del mismo, pues bien, hoy he colocado el personaje en diferentes posturas y he tomado las siguientes capturas mirando hacia ambos lados:&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/image_5F00_744CC892.png"&gt;&lt;img border="0" width="71" src="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/image_5F00_thumb_5F00_0C0690AA.png" alt="image" height="183" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" title="image" /&gt;&lt;/a&gt; &lt;a href="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/image_5F00_5DB22C5E.png"&gt;&lt;img border="0" width="71" src="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/image_5F00_thumb_5F00_1E0CF12E.png" alt="image" height="183" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" title="image" /&gt;&lt;/a&gt; &lt;a href="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/image_5F00_677E8442.png"&gt;&lt;img border="0" width="71" src="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/image_5F00_thumb_5F00_101CF04A.png" alt="image" height="183" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" title="image" /&gt;&lt;/a&gt; &lt;a href="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/image_5F00_3A311F9C.png"&gt;&lt;img border="0" width="71" src="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/image_5F00_thumb_5F00_331473D5.png" alt="image" height="183" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" title="image" /&gt;&lt;/a&gt; &lt;a href="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/image_5F00_566689DC.png"&gt;&lt;img border="0" width="71" src="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/image_5F00_thumb_5F00_2C1C7363.png" alt="image" height="183" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" title="image" /&gt;&lt;/a&gt; &lt;a href="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/image_5F00_436C9936.png"&gt;&lt;img border="0" width="71" src="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/image_5F00_thumb_5F00_58EEF9F3.png" alt="image" height="183" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" title="image" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p align="center"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;C&amp;oacute;mo es evidente, el mayor realismo a la hora de andar lo conseguiremos con sprites en posturas realistas, los m&amp;iacute;as no son los mejores, pero para ense&amp;ntilde;aros el ejemplo nos valdr&amp;aacute;n.&lt;/p&gt;
&lt;p align="justify"&gt;En primer lugar, cargaremos los sprites en la carpeta &amp;ldquo;Content&amp;rdquo; y los agregaremos al proyecto, como aprendimos en el pasado post.&lt;/p&gt;
&lt;p align="justify"&gt;Despu&amp;eacute;s deberemos agregar una variable textura nueva por cada nuevo sprite que vayamos a a&amp;ntilde;adir, en mi caso, las seis variables siguientes:&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;Texture2D textura_alien_der_parado;&lt;/p&gt;
&lt;p align="justify"&gt;Texture2D textura_alien_der_andando;&lt;/p&gt;
&lt;p align="justify"&gt;Texture2D textura_alien_der_andando2;&lt;/p&gt;
&lt;p align="justify"&gt;Texture2D textura_alien_izq_parado;&lt;/p&gt;
&lt;p align="justify"&gt;Texture2D textura_alien_izq_andando;&lt;/p&gt;
&lt;p align="justify"&gt;Texture2D textura_alien_izq_andando2;&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;Y en la funci&amp;oacute;n Loadcontent() enlazaremos a las variables sus respectivas im&amp;aacute;genes:&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;textura_alien_der_parado = Content.Load&amp;lt;Texture2D&amp;gt;(&amp;quot;alien-der-parado&amp;quot;);&lt;/p&gt;
&lt;p align="justify"&gt;textura_alien_der_andando = Content.Load&amp;lt;Texture2D&amp;gt;(&amp;quot;alien-der-andando&amp;quot;);&lt;/p&gt;
&lt;p align="justify"&gt;textura_alien_der_andando2 = Content.Load&amp;lt;Texture2D&amp;gt;(&amp;quot;alien-der-andando2&amp;quot;);&lt;/p&gt;
&lt;p align="justify"&gt;textura_alien_izq_parado = Content.Load&amp;lt;Texture2D&amp;gt;(&amp;quot;alien-izq-parado&amp;quot;);&lt;/p&gt;
&lt;p align="justify"&gt;textura_alien_izq_andando = Content.Load&amp;lt;Texture2D&amp;gt;(&amp;quot;alien-izq-andando&amp;quot;);&lt;/p&gt;
&lt;p align="justify"&gt;textura_alien_izq_andando2 = Content.Load&amp;lt;Texture2D&amp;gt;(&amp;quot;alien-izq-andando2&amp;quot;);&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;Bien, una vez cargados los sprites, nos queda la tarea de simular el movimiento, para ello mostraremos los sprites en cadena, enlaz&amp;aacute;ndolos a las pulsaciones de las teclas, es decir, en principio el alien&amp;iacute;gena comienza parado, si pulsamos una vez la tecla derecha, avanza 5pixels a la derecha y mostramos el sprite del alien&amp;iacute;gena levantando un poco una pierna, si volvemos a pulsar la tecla derecha avanzaremos otros 5pixels y mostraremos el sprite del alien&amp;iacute;gena levantando mas la pierna. Para ello hay infinitas maneras, yo os voy a proponer la siguiente que es bastante sencilla:&lt;/p&gt;
&lt;p align="justify"&gt;En primer lugar crearemos las siguientes variables, que nos permitir&amp;aacute;n almacenar la direcci&amp;oacute;n del movimiento del teclado, y el n&amp;uacute;mero de sprite a mostrar (parado, andando1 o andando2):&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;const int izq = 1;&lt;/p&gt;
&lt;p align="justify"&gt;const int der = 2;&lt;/p&gt;
&lt;p align="justify"&gt;int direccion_movimiento=2, num_movimiento=0;&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;Despu&amp;eacute;s modificaremos el contenido de la funci&amp;oacute;n Update() por el siguiente:&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;estadoteclado = Keyboard.GetState();&lt;/p&gt;
&lt;p align="justify"&gt;Keys[] teclaspulsada = estadoteclado.GetPressedKeys();&lt;/p&gt;
&lt;p align="justify"&gt;foreach (Keys ekey in teclaspulsada)&lt;/p&gt;
&lt;p align="justify"&gt;{&lt;/p&gt;
&lt;p align="justify"&gt;if (ekey == Keys.Left)&lt;/p&gt;
&lt;p align="justify"&gt;{&lt;/p&gt;
&lt;p align="justify"&gt;alien.X -= 5;&lt;/p&gt;
&lt;p align="justify"&gt;direccion_movimiento = izq;&lt;/p&gt;
&lt;p align="justify"&gt;num_movimiento += 1;&lt;/p&gt;
&lt;p align="justify"&gt;if (num_movimiento == 3) num_movimiento = 0;&lt;/p&gt;
&lt;p align="justify"&gt;}&lt;/p&gt;
&lt;p align="justify"&gt;if (ekey == Keys.Right)&lt;/p&gt;
&lt;p align="justify"&gt;{&lt;/p&gt;
&lt;p align="justify"&gt;alien.X += 5;&lt;/p&gt;
&lt;p align="justify"&gt;direccion_movimiento = der;&lt;/p&gt;
&lt;p align="justify"&gt;num_movimiento += 1;&lt;/p&gt;
&lt;p align="justify"&gt;if (num_movimiento == 3) num_movimiento = 0;&lt;/p&gt;
&lt;p align="justify"&gt;}&lt;/p&gt;
&lt;p align="justify"&gt;}&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;Como veis, el &amp;uacute;nico cambio que hemos realizado es que cuando identificamos que se ha pulsado la tecla del cursor derecho o izquierdo almacenamos el movimiento, y aumentamos la variable num_movimiento, que definir&amp;aacute; el n&amp;ordm; del sprite a mostrar.&lt;/p&gt;
&lt;p align="justify"&gt;Finalmente modificaremos la l&amp;iacute;nea de c&amp;oacute;digo de la funci&amp;oacute;n Draw() que pintaba al alien&amp;iacute;gena en la pantalla por el siguiente c&amp;oacute;digo, en el que dependiendo de la direcci&amp;oacute;n del movimiento y del n&amp;uacute;mero de movimiento pintar&amp;aacute; un sprite u otro:&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;switch (direccion_movimiento)&lt;/p&gt;
&lt;p align="justify"&gt;{&lt;/p&gt;
&lt;p align="justify"&gt;case izq:&lt;/p&gt;
&lt;p align="justify"&gt;switch (num_movimiento)&lt;/p&gt;
&lt;p align="justify"&gt;{&lt;/p&gt;
&lt;p align="justify"&gt;case 0:&lt;/p&gt;
&lt;p align="justify"&gt;spriteBatch.Draw(textura_alien_izq_parado, alien, Color.White);&lt;/p&gt;
&lt;p align="justify"&gt;break;&lt;/p&gt;
&lt;p align="justify"&gt;case 1:&lt;/p&gt;
&lt;p align="justify"&gt;spriteBatch.Draw(textura_alien_izq_andando, alien, Color.White);&lt;/p&gt;
&lt;p align="justify"&gt;break;&lt;/p&gt;
&lt;p align="justify"&gt;case 2:&lt;/p&gt;
&lt;p align="justify"&gt;spriteBatch.Draw(textura_alien_izq_andando2, alien, Color.White);&lt;/p&gt;
&lt;p align="justify"&gt;break;&lt;/p&gt;
&lt;p align="justify"&gt;}&lt;/p&gt;
&lt;p align="justify"&gt;break;&lt;/p&gt;
&lt;p align="justify"&gt;case der:&lt;/p&gt;
&lt;p align="justify"&gt;switch (num_movimiento)&lt;/p&gt;
&lt;p align="justify"&gt;{&lt;/p&gt;
&lt;p align="justify"&gt;case 0:&lt;/p&gt;
&lt;p align="justify"&gt;spriteBatch.Draw(textura_alien_der_parado, alien, Color.White);&lt;/p&gt;
&lt;p align="justify"&gt;break;&lt;/p&gt;
&lt;p align="justify"&gt;case 1:&lt;/p&gt;
&lt;p align="justify"&gt;spriteBatch.Draw(textura_alien_der_andando, alien, Color.White);&lt;/p&gt;
&lt;p align="justify"&gt;break;&lt;/p&gt;
&lt;p align="justify"&gt;case 2:&lt;/p&gt;
&lt;p align="justify"&gt;spriteBatch.Draw(textura_alien_der_andando2, alien, Color.White);&lt;/p&gt;
&lt;p align="justify"&gt;break;&lt;/p&gt;
&lt;p align="justify"&gt;}&lt;/p&gt;
&lt;p align="justify"&gt;break;&lt;/p&gt;
&lt;p align="justify"&gt;}&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;Si compilamos y ejecutamos deber&amp;iacute;amos ver un movimiento como el siguiente:&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="display:block;float:none;margin-left:auto;width:425px;margin-right:auto;padding:0px;" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:8d123ffd-3b35-4dde-a5aa-9325c57e61ce" class="wlWriterEditableSmartContent"&gt;
&lt;div&gt;
&lt;object height="355" width="425"&gt;
&lt;param value="http://www.youtube.com/v/I3QgQeqPzM0&amp;amp;hl=es&amp;amp;fs=1&amp;amp;&amp;amp;hl=en" name="movie" /&gt;&lt;embed height="355" width="425" type="application/x-shockwave-flash" src="http://www.youtube.com/v/I3QgQeqPzM0&amp;amp;hl=es&amp;amp;fs=1&amp;amp;&amp;amp;hl=en"&gt;&lt;/embed&gt;
&lt;/object&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;En mi caso no ha quedado perfecto ya que los sprites no eran los mejores, para que salga el efecto m&amp;aacute;s realista os recomiendo bajaros los sprites hechos de internet, como hice con el juego que os mostr&amp;eacute; en el primer post y que program&amp;eacute; para rememorar un antiguo Sonic.&lt;/p&gt;
&lt;p align="justify"&gt;El pr&amp;oacute;ximo d&amp;iacute;a avanzaremos un poco con las clases de XNA y estudiaremos como reproducir colisiones entre dos objetos del juego, en el ejemplo del videojuego alien, vamos a hacer que se encuentre con una piedra que le frene el paso, y tenga que saltarla para seguir adelante.&lt;/p&gt;
&lt;p align="justify"&gt;As&amp;iacute; que hasta el pr&amp;oacute;ximo post os dejo tiempo para que practiqu&amp;eacute;is y prob&amp;eacute;is varios sprites hasta que os queden movimientos m&amp;aacute;s realistas, lo m&amp;aacute;s importante es la imaginaci&amp;oacute;n!&lt;/p&gt;
&lt;p align="justify"&gt;Saludos!&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;****************************************************************&lt;/p&gt;
&lt;p align="justify"&gt;-&amp;nbsp;&lt;a href="http://www.windowstecnico.com/archive/2009/08/31/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-i.aspx"&gt;Dise&amp;ntilde;ar juegos para Windows y XBOX 360 con Microsoft XNA (I de VI)&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;-&amp;nbsp;&lt;a href="http://www.windowstecnico.com/archive/2009/09/07/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-ii.aspx"&gt;Dise&amp;ntilde;ar juegos para Windows y XBOX 360 con Microsoft XNA (II de VI)&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;-&amp;nbsp;&lt;a href="http://www.windowstecnico.com/archive/2009/09/14/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-iii.aspx"&gt;Dise&amp;ntilde;ar juegos para Windows y XBOX 360 con Microsoft XNA (III de VI)&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;-&amp;nbsp;&lt;a href="http://www.windowstecnico.com/archive/2009/09/17/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-iv.aspx"&gt;Dise&amp;ntilde;ar juegos para Windows y XBOX 360 con Microsoft XNA (IV de VI)&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;-&amp;nbsp;&lt;a href="http://www.windowstecnico.com/archive/2009/09/22/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-v.aspx"&gt;Dise&amp;ntilde;ar juegos para Windows y XBOX 360 con Microsoft XNA (V de VI)&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;-&lt;a title="Dise&amp;ntilde;ar juegos XNA" href="http://www.windowstecnico.com/archive/2009/09/28/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-vi.aspx"&gt;&amp;nbsp;Dise&amp;ntilde;ar juegos para Windows y XBOX 360 con Microsoft XNA (VI de VI)&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;****************************************************************&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://windowstecnico.com/aggbug.aspx?PostID=850" width="1" height="1"&gt;</description><category domain="http://windowstecnico.com/archive/tags/Desarrollo/default.aspx">Desarrollo</category><category domain="http://windowstecnico.com/archive/tags/Xna/default.aspx">Xna</category><category domain="http://windowstecnico.com/archive/tags/Videojuegos/default.aspx">Videojuegos</category><category domain="http://windowstecnico.com/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://windowstecnico.com/archive/tags/Programacion/default.aspx">Programacion</category><category domain="http://windowstecnico.com/archive/tags/.Net/default.aspx">.Net</category></item><item><title>Diseñar juegos para Windows y XBOX 360 con Microsoft XNA (III de VI)</title><link>http://windowstecnico.com/archive/2009/09/14/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-iii.aspx</link><pubDate>Sun, 13 Sep 2009 22:15:00 GMT</pubDate><guid isPermaLink="false">f5fee4ed-c2ed-43f2-a57e-69c2e2dfbdde:845</guid><dc:creator>Juan Antonio</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://windowstecnico.com/rsscomments.aspx?PostID=845</wfw:commentRss><comments>http://windowstecnico.com/archive/2009/09/14/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-iii.aspx#comments</comments><description>&lt;p align="justify"&gt;Buenas a todos, hoy vamos a proseguir con el manual de programaci&amp;oacute;n de videojuegos en XNA continuando como comentamos el &amp;uacute;ltimo d&amp;iacute;a por la programaci&amp;oacute;n de nuestro primer videojuego en 2D.&lt;/p&gt;
&lt;p align="justify"&gt;En el pasado post comentamos como instalar Visual Studio y las librer&amp;iacute;as de XNA, creamos el proyecto de nuestro primer videojuego y finalmente hablamos de las funciones principales que llevan los videojuegos en XNA y el acometido de cada una de ellas. Pues bien, hoy vamos a proceder a &amp;ldquo;rellenar&amp;rdquo; estas funciones para generar nuestro primer juego, ser&amp;aacute; uno muy sencillo, en el que un mu&amp;ntilde;eco se mueva hacia los lados por un escenario sin obst&amp;aacute;culos, pero para empezar esta semana, no est&amp;aacute; mal, y servir&amp;aacute; para que aprend&amp;aacute;is los elementos necesarios para que un juego se ejecute.&lt;/p&gt;
&lt;p align="justify"&gt;En primer lugar deb&amp;eacute;is conseguir el sprite de un mu&amp;ntilde;eco y un fondo para el videojuego, un sprite es una imagen de un mu&amp;ntilde;eco u objeto del videojuego en una postura determinada, en mi caso como ten&amp;iacute;a algo de tiempo libre he creado un alien&amp;iacute;gena en 3D Studio y he hecho una captura del mismo que he pasado a imagen en formato PNG, para que conserve m&amp;aacute;s calidad, pero en principio el Visual Studio aceptar&amp;aacute; las im&amp;aacute;genes de vuestros sprites en cualquier formato.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;ALIENIGENA:&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/image_5F00_212C2849.png"&gt;&lt;img border="0" width="131" src="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/image_5F00_thumb_5F00_2368B105.png" alt="image" height="131" style="border-right:0px;border-top:0px;display:block;float:none;margin-left:auto;border-left:0px;margin-right:auto;border-bottom:0px;" title="image" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;FONDO:&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/clip_5F00_image004_5F00_53928C79.jpg"&gt;&lt;img border="0" width="593" src="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/clip_5F00_image004_5F00_thumb_5F00_28DC430B.jpg" alt="clip_image004" height="450" style="border-top-width:0px;display:block;border-left-width:0px;float:none;border-bottom-width:0px;margin-left:auto;margin-right:auto;border-right-width:0px;" title="clip_image004" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;Una vez teng&amp;aacute;is vuestros sprites, nos iremos a la carpeta ra&amp;iacute;z de nuestro proyecto, y en la subcarpeta &amp;ldquo;Content&amp;rdquo; los copiaremos, ya que es en esta carpeta donde los buscar&amp;aacute; el Visual Studio por defecto.&lt;/p&gt;
&lt;p align="justify"&gt;Ahora abriremos el proyecto de Visual Studio que creamos el &amp;uacute;ltimo d&amp;iacute;a e iremos a la carpeta &amp;ldquo;content&amp;rdquo;, pulsaremos el bot&amp;oacute;n derecho del rat&amp;oacute;n sobre ella y en el desplegable que se nos abrir&amp;aacute; seleccionamos &amp;ldquo;agregar un elemento existente&amp;rdquo;, entonces se nos abrir&amp;aacute; la carpeta content en la que veremos nuestros sprites, los seleccionamos y aceptamos, y ya tendremos nuestras im&amp;aacute;genes agregadas al proyecto.&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/clip_5F00_image005_5F00_12AB491B.jpg"&gt;&lt;img border="0" width="315" src="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/clip_5F00_image005_5F00_thumb_5F00_1411FC9E.jpg" alt="clip_image005" height="442" style="border-top-width:0px;display:block;border-left-width:0px;float:none;border-bottom-width:0px;margin-left:auto;margin-right:auto;border-right-width:0px;" title="clip_image005" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;Tras esta sencilla tarea vamos a explicar c&amp;oacute;mo se integra un sprite en el videojuego. Imaginemos por un momento que nuestro videojuego corresponde con una ventana de 640x480 pixels, 640px de ancho, por 480px de alto, un mu&amp;ntilde;eco en el videojuego representar&amp;aacute; un &amp;uacute;nico pixel en el videojuego de estos 640x480, llamado Vector2D, a lo que os preguntareis: pero&amp;hellip; &amp;iquest;si nuestra imagen ocupa m&amp;aacute;s de 1pixel?, bien, para eso hay una funci&amp;oacute;n programada en XNA que dici&amp;eacute;ndole el pixel donde est&amp;aacute; el mu&amp;ntilde;eco en la pantalla y el ancho y alto de nuestro Sprite, nos lo rodea de una forma geom&amp;eacute;trica (esfera, cuadrado,&amp;hellip;) para cuando ese sprite tenga que colisionar con otro objeto se &amp;ldquo;choquen&amp;rdquo; y podamos detectarlo.&lt;/p&gt;
&lt;p align="justify"&gt;Por tanto en un videojuego en 2D tenemos que tener claro el concepto de que un sprite, ser&amp;aacute; un Vector2D que ocupar&amp;aacute; un &amp;uacute;nico pixel en la pantalla. Aclarada esta idea, comencemos a picar c&amp;oacute;digo.&lt;/p&gt;
&lt;p align="justify"&gt;En primer lugar deberemos declarar las variables necesarias, en nuestro sencillo videojuego solo necesitaremos cuatro, la primera variable representar&amp;aacute; la textura del mu&amp;ntilde;eco, es decir, la imagen que &amp;ldquo;enlazaremos&amp;rdquo; al vector &amp;oacute; pixel que representa al mu&amp;ntilde;eco en pantalla. La segunda de ellas representar&amp;aacute; la textura del fondo del videojuego. La tercera variable nos servir&amp;aacute; para almacenar las teclas que un usuario a tecleado y as&amp;iacute; comprobar la tecla que ha pulsado para reproducir sus pulsaciones en movimientos del mu&amp;ntilde;eco en el videojuego. La cuarta variable representar&amp;aacute; el pixel del mu&amp;ntilde;eco que comentamos antes.&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;//Declaracion de variables&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Texture2D textura_alien;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Texture2D textura_fondo;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;KeyboardState estadoteclado;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Vector2 alien;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Declaradas las variables vamos a comenzar a rellenar las funciones que hablamos el &amp;uacute;ltimo d&amp;iacute;a. Comenzaremos por la funci&amp;oacute;n Initialize() d&amp;oacute;nde deberemos sustituir la l&amp;iacute;nea comentada:&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;// TODO: Add your initialization logic here&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p align="justify"&gt;Por las siguientes cuatro l&amp;iacute;neas de c&amp;oacute;digo, que simplemente definir&amp;aacute;n el ancho y alto de la pantalla del videojuego, y crearemos el Vector2 (el famoso pixel, que antes definimos), el cual situaremos por ejemplo en la posici&amp;oacute;n X=100px Y=380px de la pantalla:&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p align="justify"&gt;&lt;strong&gt;graphics.PreferredBackBufferHeight = 480;&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;graphics.PreferredBackBufferWidth = 640;&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;graphics.ApplyChanges();&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;alien = new Vector2(100, 380);&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p align="justify"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;El siguiente paso ser&amp;aacute; asociar las fotos que almacenamos en la carpeta &amp;ldquo;Content&amp;rdquo; con las variables texture2D que antes declaramos, para ello le indicamos el nombre de la imagen, pero sin la extensi&amp;oacute;n, el Visual Studio la encontr&amp;aacute; igualmente, no os preocup&amp;eacute;is, en mi caso ten&amp;iacute;a las im&amp;aacute;genes: alien_der_andando.png y fondo.jpg.&lt;/p&gt;
&lt;p align="justify"&gt;Al igual que antes, sustituiremos la l&amp;iacute;nea comentada:&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p align="justify"&gt;// TODO: use this.Content to load your game content here&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p align="justify"&gt;Por las siguientes:&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p align="justify"&gt;&lt;strong&gt;textura_alien = Content.Load&amp;lt;Texture2D&amp;gt;(&amp;quot;alien_der_andando&amp;quot;);&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;textura_fondo = Content.Load&amp;lt;Texture2D&amp;gt;(&amp;quot;fondo&amp;quot;);&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p align="justify"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Ahora programaremos los movimientos de nuestro mu&amp;ntilde;eco, para ello nos iremos a la funci&amp;oacute;n Update() y sustituiremos de nuevo la l&amp;iacute;nea comentada de siempre por el siguiente c&amp;oacute;digo, en el que leeremos el estado del teclado y observaremos todas las pulsaciones comprobando si coincide con una pulsaci&amp;oacute;n de la &amp;ldquo;flecha izquierda&amp;rdquo; del teclado o de la &amp;ldquo;flecha derecha&amp;rdquo;, en caso de ser una de ellas, moveremos nuestro mu&amp;ntilde;eco (nuestro pixel) a la izquierda o a la derecha en el eje de las X de la pantalla, en nuestro caso hemos puesto que se mueva 5pixels, que es una velocidad bastante aceptable:&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p align="justify"&gt;&lt;strong&gt;estadoteclado = Keyboard.GetState();&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;Keys[] teclaspulsada = estadoteclado.GetPressedKeys();&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;foreach (Keys ekey in teclaspulsada)&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;if (ekey == Keys.Left)&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;alien.X -= 5;&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;if (ekey == Keys.Right)&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;alien.X += 5;&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p align="justify"&gt;Finalmente tendremos que pintar el mu&amp;ntilde;eco en la pantalla, para ello nos vamos a la funci&amp;oacute;n Draw() y sustituiremos la l&amp;iacute;nea comentada por las siguientes l&amp;iacute;neas. Al principio y al final abriremos y cerraremos el modo &amp;ldquo;dibujo&amp;rdquo; y entre medias podremos dibujar los objetos en la pantalla:&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p align="justify"&gt;&lt;strong&gt;spriteBatch.Begin(SpriteBlendMode.AlphaBlend);&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;spriteBatch.Draw(textura_fondo, Vector2.Zero, Color.White);&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;spriteBatch.Draw(textura_alien, alien, Color.White);&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;spriteBatch.End();&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p align="justify"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Como veis dibujar un objeto es muy sencillo, el primer par&amp;aacute;metro que le pasaremos a la funci&amp;oacute;n &amp;ldquo;spriteBatch.Draw&amp;rdquo; ser&amp;aacute; la textura del objeto, el segundo par&amp;aacute;metro ser&amp;aacute; la posici&amp;oacute;n de la pantalla que ocupar&amp;aacute;, como habr&amp;eacute;is imaginado, al actualizar la posici&amp;oacute;n del mu&amp;ntilde;eco en la funci&amp;oacute;n Update, ya no hace falta que dibujemos el objeto unos pixels hacia un lado, ya que el vector se actualiz&amp;oacute; en la funci&amp;oacute;n Update() que se ejecuta antes que la funci&amp;oacute;n Draw(), el tercer par&amp;aacute;metro lo dejaremos tal cual:&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p align="justify"&gt;&lt;strong&gt;spriteBatch.Draw(TEXTURA, VECTOR, Color.White);&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p align="justify"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Pues esto es todo por hoy, si os ha salido todo bien, deber&amp;iacute;a compilar y ejecutarse sin problemas y tendr&amp;eacute;is un videojuego como el siguiente:&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="display:block;float:none;margin-left:auto;width:425px;margin-right:auto;padding:0px;" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:c7576d34-f1bb-419b-8b47-29ba61004530" class="wlWriterEditableSmartContent"&gt;
&lt;div&gt;
&lt;object height="355" width="425"&gt;
&lt;param value="http://www.youtube.com/v/O3be7RNuNao&amp;amp;hl=es&amp;amp;fs=1&amp;amp;&amp;amp;hl=en" name="movie" /&gt;&lt;embed height="355" width="425" type="application/x-shockwave-flash" src="http://www.youtube.com/v/O3be7RNuNao&amp;amp;hl=es&amp;amp;fs=1&amp;amp;&amp;amp;hl=en"&gt;&lt;/embed&gt;
&lt;/object&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;El pr&amp;oacute;ximo d&amp;iacute;a vamos a convertir el movimiento de nuestro mu&amp;ntilde;eco en algo m&amp;aacute;s realista, haciendo que cuando se mueva simule que va andando, moviendo las piernas, y que cuando vaya hacia atr&amp;aacute;s, mire hacia atr&amp;aacute;s, hasta entonces os dejo practicando con el post de hoy!&lt;/p&gt;
&lt;p align="justify"&gt;Saludos!&lt;/p&gt;
&lt;p align="justify"&gt;****************************************************************&lt;/p&gt;
&lt;p align="justify"&gt;-&amp;nbsp;&lt;a href="http://www.windowstecnico.com/archive/2009/08/31/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-i.aspx"&gt;Dise&amp;ntilde;ar juegos para Windows y XBOX 360 con Microsoft XNA (I de VI)&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;-&amp;nbsp;&lt;a href="http://www.windowstecnico.com/archive/2009/09/07/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-ii.aspx"&gt;Dise&amp;ntilde;ar juegos para Windows y XBOX 360 con Microsoft XNA (II de VI)&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;-&amp;nbsp;&lt;a href="http://www.windowstecnico.com/archive/2009/09/14/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-iii.aspx"&gt;Dise&amp;ntilde;ar juegos para Windows y XBOX 360 con Microsoft XNA (III de VI)&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;-&amp;nbsp;&lt;a href="http://www.windowstecnico.com/archive/2009/09/17/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-iv.aspx"&gt;Dise&amp;ntilde;ar juegos para Windows y XBOX 360 con Microsoft XNA (IV de VI)&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;-&amp;nbsp;&lt;a href="http://www.windowstecnico.com/archive/2009/09/22/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-v.aspx"&gt;Dise&amp;ntilde;ar juegos para Windows y XBOX 360 con Microsoft XNA (V de VI)&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;-&lt;a title="Dise&amp;ntilde;ar juegos XNA" href="http://www.windowstecnico.com/archive/2009/09/28/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-vi.aspx"&gt;&amp;nbsp;Dise&amp;ntilde;ar juegos para Windows y XBOX 360 con Microsoft XNA (VI de VI)&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;****************************************************************&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://windowstecnico.com/aggbug.aspx?PostID=845" width="1" height="1"&gt;</description><category domain="http://windowstecnico.com/archive/tags/Desarrollo/default.aspx">Desarrollo</category><category domain="http://windowstecnico.com/archive/tags/Xna/default.aspx">Xna</category><category domain="http://windowstecnico.com/archive/tags/Videojuegos/default.aspx">Videojuegos</category><category domain="http://windowstecnico.com/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://windowstecnico.com/archive/tags/Programacion/default.aspx">Programacion</category><category domain="http://windowstecnico.com/archive/tags/.Net/default.aspx">.Net</category></item><item><title>Diseñar juegos para Windows y XBOX 360 con Microsoft XNA (II de VI)</title><link>http://windowstecnico.com/archive/2009/09/07/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-ii.aspx</link><pubDate>Sun, 06 Sep 2009 22:53:00 GMT</pubDate><guid isPermaLink="false">f5fee4ed-c2ed-43f2-a57e-69c2e2dfbdde:673</guid><dc:creator>Juan Antonio</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://windowstecnico.com/rsscomments.aspx?PostID=673</wfw:commentRss><comments>http://windowstecnico.com/archive/2009/09/07/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-ii.aspx#comments</comments><description>&lt;p align="justify"&gt;Buenas a todos, en el post de hoy vamos a continuar con la cadena de posts sobre Microsoft XNA, comenzando por donde lo dejamos el ultimo d&amp;iacute;a, la instalaci&amp;oacute;n del producto.&lt;/p&gt;
&lt;p align="justify"&gt;Para instalar la plataforma completa deberemos tener dos ejecutables diferentes, el primero ser&amp;aacute; el archivo que nos instalar&amp;aacute; el Visual Studio Express Edition, bien la versi&amp;oacute;n 2005 &amp;oacute; bien la versi&amp;oacute;n 2008 seg&amp;uacute;n la que nos hayamos descargado. El segundo ser&amp;aacute; el instalador de XNA, donde se encuentran todas las librer&amp;iacute;as necesarias para la programaci&amp;oacute;n de videojuegos.&lt;/p&gt;
&lt;p align="justify"&gt;Hacemos doble clic en el primero de ellos, el Visual Studio, como ver&amp;eacute;is es un instalador normal, procederemos con la t&amp;eacute;cnica del &amp;ldquo;siguiente, siguiente,&amp;hellip;&amp;rdquo;, por lo que no nos vamos a entretener mas en explicarlo. Una vez instalado, instalaremos XNA desde su ejecutable de la misma manera.&lt;/p&gt;
&lt;p align="justify"&gt;Tras instalar ambos elementos, abrimos el Visual Studio:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/image_5F00_7A4E438A.png"&gt;&lt;img title="image" style="border-right:0px;border-top:0px;display:block;float:none;margin-left:auto;border-left:0px;margin-right:auto;border-bottom:0px;" height="539" alt="image" src="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/image_5F00_thumb_5F00_59849D9A.png" width="432" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Una vez abierto iremos a la pesta&amp;ntilde;a &amp;ldquo;Archivo&amp;rdquo; y seleccionaremos &amp;ldquo;Nuevo proyecto&amp;rdquo;:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/image_5F00_53871DB6.png"&gt;&lt;img title="image" style="border-right:0px;border-top:0px;display:block;float:none;margin-left:auto;border-left:0px;margin-right:auto;border-bottom:0px;" height="574" alt="image" src="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/image_5F00_thumb_5F00_565484BC.png" width="427" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Deber&amp;iacute;amos ver lo siguiente:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/image_5F00_2ACAF6C6.png"&gt;&lt;img title="image" style="border-right:0px;border-top:0px;display:block;float:none;margin-left:auto;border-left:0px;margin-right:auto;border-bottom:0px;" height="342" alt="image" src="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/image_5F00_thumb_5F00_664307D9.png" width="580" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;Ya tenemos todo preparado para empezar a programar nuestros videojuegos. Pero antes de tirarnos al rio, vamos a aprender jugando un poco. Como habr&amp;eacute;is visto en la imagen anterior, al instalarnos XNA, se nos ha instalado el c&amp;oacute;digo fuente de un videojuego que nos dan de ejemplo, al que han llamado &amp;ldquo;Platformer Starter Kit (3.1)&amp;rdquo;. Vamos a utilizar este c&amp;oacute;digo y generar el juego para practicar, para ello seleccionaremos el icono del mu&amp;ntilde;eco que pone &amp;ldquo;Platformer Starter Kit (3.1)&amp;rdquo;, le daremos un nombre, una ubicaci&amp;oacute;n y aceptamos, deber&amp;iacute;amos ver, el siguiente &amp;aacute;rbol de clases en el explorador de soluciones:&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/image_5F00_6D1D4D62.png"&gt;&lt;img title="image" style="border-right:0px;border-top:0px;display:block;float:none;margin-left:auto;border-left:0px;margin-right:auto;border-bottom:0px;" height="1040" alt="image" src="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/image_5F00_thumb_5F00_7C5646E0.png" width="380" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;No os asust&amp;eacute;is al verlo, aunque sea muy grande, es porque est&amp;aacute; el videojuego programado para las tres plataformas, es decir, es el mismo c&amp;oacute;digo, pero copiado tres veces para ejecutarse en Windows, en Xbox 360 y en Zune.&lt;/p&gt;
&lt;p align="justify"&gt;Si compilamos y ejecutamos el juego, pulsando F5, podremos jugar a nuestro primer juego hecho con XNA.&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/image_5F00_532B5C4A.png"&gt;&lt;img title="image" style="border-right:0px;border-top:0px;display:block;float:none;margin-left:auto;border-left:0px;margin-right:auto;border-bottom:0px;" height="320" alt="image" src="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/image_5F00_thumb_5F00_7252D8E5.png" width="531" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;Tras haber jugado un poco con esta especie de &amp;ldquo;Indiana Jones&amp;rdquo; en 2D, vamos a pararnos un rato a estudiar el c&amp;oacute;digo. C&amp;oacute;mo ver&amp;eacute;is, tenemos numerosas cosas, en primer lugar veremos 3 grandes bloques, uno con un icono de Windows, otro con un icono de Xbox 360 y otro con el icono de Zune, como es obvio y habr&amp;eacute;is intuido, es el mismo juego, pero programado para las tres plataformas diferentes. Si ahora nos centramos en el bloque del c&amp;oacute;digo de Windows, veremos numerosas clases diferentes, &amp;ldquo;enemy, animation, gem, player &amp;hellip;&amp;rdquo;, pero &amp;iquest;para qu&amp;eacute; queremos todas estas clases? Bien, cuando creemos un nuevo proyecto, se nos generar&amp;aacute; una &amp;uacute;nica clase llamada &amp;ldquo;game&amp;rdquo;, donde contendr&amp;aacute; todos los elementos necesarios para ejecutar el videojuego, pero por mantener un poco de orden y limpieza, y que cuando llevemos algunos cientos de l&amp;iacute;neas no nos comencemos a liar, est&amp;aacute; bien el utilizar una de las ventajas que nos ofrece C#, la orientaci&amp;oacute;n a objetos, y separar los elementos principales del juego en clases independientes, que iremos instanciando en la clase &amp;ldquo;game&amp;rdquo; seg&amp;uacute;n vayamos necesitando. Por ejemplo, podemos separar en clases independientes los movimientos que puede realizar el personaje principal del juego de los de otros personajes que salgan en el juego, sus texturas y variables, &amp;hellip; Si no ten&amp;eacute;is muy claro a&amp;uacute;n de que estamos hablando, cuando veamos algo de c&amp;oacute;digo volveremos sobre ello.&lt;/p&gt;
&lt;p align="justify"&gt;Por otro lado, adem&amp;aacute;s de las clases, ver&amp;eacute;is una secci&amp;oacute;n en la que pone HighResolutionContent y otra que pone SharedContent, estas son las carpetas que contendr&amp;aacute;n las im&amp;aacute;genes, fondos, m&amp;uacute;sicas y dem&amp;aacute;s elementos externos que utiliza el videojuego. Todos estos elementos externos como im&amp;aacute;genes, sonidos, m&amp;uacute;sica de fondo&amp;hellip; los almacenaremos en la carpeta &amp;ldquo;Content&amp;rdquo;, que se nos ha generado dentro de la carpeta ra&amp;iacute;z del proyecto, y luego podremos ir generando dentro de ella subcarpetas para organizar todo un poco.&lt;/p&gt;
&lt;p align="justify"&gt;Tras explicaros un poco a &amp;ldquo;groso modo&amp;rdquo; el contenido del videojuego de muestra, vamos a cerrarlo y a crear el proyecto de nuestro primer videojuego.&lt;/p&gt;
&lt;p align="justify"&gt;Al igual que antes vamos a la pesta&amp;ntilde;a &amp;ldquo;Archivo&amp;rdquo; y seleccionamos &amp;ldquo;Nuevo proyecto&amp;rdquo;, se nos abrir&amp;aacute;n todas las plantillas que podemos seleccionar, de todos los elementos que salen a nosotros solo nos interesan tres de ellos:&lt;/p&gt;
&lt;p align="justify"&gt;&amp;middot; Windows Game (3.1)&lt;/p&gt;
&lt;p align="justify"&gt;&amp;middot; Xbox 360 Game (3.1)&lt;/p&gt;
&lt;p align="justify"&gt;&amp;middot; Zune Game (3.1)&lt;/p&gt;
&lt;p align="justify"&gt;Para comenzar vamos a generar un &amp;ldquo;Windows Game&amp;rdquo;. Bien, ahora le damos un nombre, una ubicaci&amp;oacute;n y aceptamos.&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/image_5F00_26D57A38.png"&gt;&lt;img title="image" style="border-right:0px;border-top:0px;display:block;float:none;margin-left:auto;border-left:0px;margin-right:auto;border-bottom:0px;" height="512" alt="image" src="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/image_5F00_thumb_5F00_3B7F750B.png" width="360" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;Si os fij&amp;aacute;is en el explorador de soluciones, ya no tenemos todas las clases que ten&amp;iacute;amos en el videojuego anterior, como os dije solo tenemos ahora una clase llamada Game1, donde deberemos programar todo el juego. Por otro lado tenemos otra clase llamada Program, que ignoraremos, ya que simplemente es la encargada de llamar a la clase Game1 para ejecutar el juego.&lt;/p&gt;
&lt;p align="justify"&gt;Para finalizar por hoy, vamos a abrir el c&amp;oacute;digo de la clase Game1.cs y estudiarlo un poco, para ello, podemos hacer doble clic sobre ella, se os abrir&amp;aacute; la clase con el siguiente c&amp;oacute;digo que vamos a analizar por partes:&lt;/p&gt;
&lt;p align="justify"&gt;En primer lugar veremos todas las librer&amp;iacute;as que utiliza, si os fij&amp;aacute;is la mayor&amp;iacute;a llaman a la biblioteca de Xna:&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;   
&lt;table cellspacing="0" cellpadding="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;using System;&lt;/p&gt;
&lt;p&gt;using System.Collections.Generic;&lt;/p&gt;
&lt;p&gt;using System.Linq;&lt;/p&gt;
&lt;p&gt;using Microsoft.Xna.Framework;&lt;/p&gt;
&lt;p&gt;using Microsoft.Xna.Framework.Audio;&lt;/p&gt;
&lt;p&gt;using Microsoft.Xna.Framework.Content;&lt;/p&gt;
&lt;p&gt;using Microsoft.Xna.Framework.GamerServices;&lt;/p&gt;
&lt;p&gt;using Microsoft.Xna.Framework.Graphics;&lt;/p&gt;
&lt;p&gt;using Microsoft.Xna.Framework.Input;&lt;/p&gt;
&lt;p&gt;using Microsoft.Xna.Framework.Media;&lt;/p&gt;
&lt;p&gt;using Microsoft.Xna.Framework.Net;&lt;/p&gt;
&lt;p&gt;using Microsoft.Xna.Framework.Storage;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;Avanzando un poco llegamos a una serie de funciones, de las cuales nos centraremos &amp;uacute;nicamente en cuatro de ellas, ya que ser&amp;aacute;n las &amp;uacute;nicas que debemos tocar a la hora de programar el juego.&lt;/p&gt;
&lt;p align="justify"&gt;La primera de las cuatro funciones que aparecen es la funci&amp;oacute;n Initialize, esta funci&amp;oacute;n se ejecuta &amp;uacute;nicamente cuando se inicia el videojuego, as&amp;iacute; que la aprovecharemos para inicializar variables, inicializar las texturas de los personajes e inicializar el tama&amp;ntilde;o de pantalla del videojuego:&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;   
&lt;table cellspacing="0" cellpadding="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;protected override void Initialize()&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;// TODO: Add your initialization logic here&lt;/p&gt;
&lt;p&gt;base.Initialize();&lt;/p&gt;
&lt;p&gt;}&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;La siguiente funci&amp;oacute;n, LoadContent, la utilizaremos para cargar las im&amp;aacute;genes (que almacenaremos en la carpeta &amp;ldquo;Content&amp;rdquo;) que representaran las texturas del juego y los sonidos y dem&amp;aacute;s elementos externos que requiramos en el videojuego:&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;   
&lt;table cellspacing="0" cellpadding="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;protected override void LoadContent()&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;// Create a new SpriteBatch, which can be used to draw textures.&lt;/p&gt;
&lt;p&gt;spriteBatch = new SpriteBatch(GraphicsDevice);&lt;/p&gt;
&lt;p&gt;// TODO: use this.Content to load your game content here&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;Las dos funciones anteriores, Initialize y LoadContent se ejecutar&amp;aacute;n &amp;uacute;nicamente al principio del juego. Ahora vamos a explicar las siguiente funciones que se ejecutaran de manera infinita hasta que el juego finalice, es decir, en un bucle cuya funci&amp;oacute;n de salida es cerrar el videojuego.&lt;/p&gt;
&lt;p align="justify"&gt;En la funci&amp;oacute;n Update deberemos programar las acciones que determinen las modificaciones en el juego, es decir, por ejemplo, si el personaje principal, se mueve hasta la mitad de la pantalla y hay una piedra, que no pueda avanzar m&amp;aacute;s, o por poner otro ejemplo, si estamos programando un juego de coches, si el jugador pulsa la tecla flecha izquierda, haremos que el coche gire a la izquierda:&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;   
&lt;table cellspacing="0" cellpadding="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;protected override void Update(GameTime gameTime)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;// Allows the game to exit&lt;/p&gt;
&lt;p&gt;if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)&lt;/p&gt;
&lt;p&gt;this.Exit();&lt;/p&gt;
&lt;p&gt;// TODO: Add your update logic here&lt;/p&gt;
&lt;p&gt;base.Update(gameTime);&lt;/p&gt;
&lt;p&gt;}&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;Finalmente nos encontraremos con la function Draw, que se ejecutar&amp;aacute; despu&amp;eacute;s de la funci&amp;oacute;n Update, y ser&amp;aacute; la encargada de dibujar todos los elementos en pantalla, por tanto, si se ha producido un cambio en el juego en la funci&amp;oacute;n Update, cambiaremos los objetos de pantalla para reproducir ese cambio en la funci&amp;oacute;n draw. Por continuar el ejemplo, si tenemos el coche en el centro de la pantalla, y en la funci&amp;oacute;n Update detectamos que el jugador a pulsado la tecla izquierda, y hemos indicado al coche, que gire a la izquierda unos pixels, dibujaremos el coche en esta iteraci&amp;oacute;n del bucle general unos pixels mas a la izquierda, para visualizar la acci&amp;oacute;n que ha ejercido el jugador sobre el teclado en la pantalla:&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;   
&lt;table cellspacing="0" cellpadding="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;protected override void Draw(GameTime gameTime)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;GraphicsDevice.Clear(Color.CornflowerBlue);&lt;/p&gt;
&lt;p&gt;// TODO: Add your drawing code here&lt;/p&gt;
&lt;p&gt;base.Draw(gameTime);&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;Con todo esto, ten&amp;eacute;is para practicar durante los pr&amp;oacute;ximos d&amp;iacute;as, hoy ya hemos visto un c&amp;oacute;digo terminado, es m&amp;aacute;s sencillo de lo que parece a primera vista, y como hab&amp;eacute;is visto en el videojuego que estamos programando desde cero, las funciones para las que debemos generar el c&amp;oacute;digo se resumen en cuatro muy sencillas de entender y que tienen una finalidad muy delimitada, lo que las simplifica enormemente.&lt;/p&gt;
&lt;p align="justify"&gt;El pr&amp;oacute;ximo d&amp;iacute;a rellenaremos estas cuatro funciones para generar nuestro primer juego, en &amp;eacute;l, a&amp;ntilde;adiremos un mu&amp;ntilde;eco que se mueva por la pantalla, un ejemplo sencillo y muy ilustrativo, por si quer&amp;eacute;is ir prepar&amp;aacute;ndolo, necesitaremos un fondo como el que hab&amp;eacute;is visto en el videojuego &amp;ldquo;Platformer Starter Kit (3.1)&amp;rdquo;, y dos im&amp;aacute;genes de un mu&amp;ntilde;eco mirando hacia ambos lados. &lt;/p&gt;
&lt;p align="justify"&gt;Un saludo y espero est&amp;eacute;is disfrutando del manual!!&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;****************************************************************&lt;/p&gt;
&lt;p align="justify"&gt;-&amp;nbsp;&lt;a href="http://www.windowstecnico.com/archive/2009/08/31/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-i.aspx"&gt;Dise&amp;ntilde;ar juegos para Windows y XBOX 360 con Microsoft XNA (I de VI)&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;-&amp;nbsp;&lt;a href="http://www.windowstecnico.com/archive/2009/09/07/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-ii.aspx"&gt;Dise&amp;ntilde;ar juegos para Windows y XBOX 360 con Microsoft XNA (II de VI)&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;-&amp;nbsp;&lt;a href="http://www.windowstecnico.com/archive/2009/09/14/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-iii.aspx"&gt;Dise&amp;ntilde;ar juegos para Windows y XBOX 360 con Microsoft XNA (III de VI)&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;-&amp;nbsp;&lt;a href="http://www.windowstecnico.com/archive/2009/09/17/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-iv.aspx"&gt;Dise&amp;ntilde;ar juegos para Windows y XBOX 360 con Microsoft XNA (IV de VI)&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;-&amp;nbsp;&lt;a href="http://www.windowstecnico.com/archive/2009/09/22/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-v.aspx"&gt;Dise&amp;ntilde;ar juegos para Windows y XBOX 360 con Microsoft XNA (V de VI)&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;-&lt;a href="http://www.windowstecnico.com/archive/2009/09/28/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-vi.aspx" title="Dise&amp;ntilde;ar juegos XNA"&gt;&amp;nbsp;Dise&amp;ntilde;ar juegos para Windows y XBOX 360 con Microsoft XNA (VI de VI)&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;****************************************************************&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://windowstecnico.com/aggbug.aspx?PostID=673" width="1" height="1"&gt;</description><category domain="http://windowstecnico.com/archive/tags/Desarrollo/default.aspx">Desarrollo</category><category domain="http://windowstecnico.com/archive/tags/Xna/default.aspx">Xna</category><category domain="http://windowstecnico.com/archive/tags/Videojuegos/default.aspx">Videojuegos</category><category domain="http://windowstecnico.com/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://windowstecnico.com/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://windowstecnico.com/archive/tags/Programacion/default.aspx">Programacion</category><category domain="http://windowstecnico.com/archive/tags/.Net/default.aspx">.Net</category></item><item><title>Diseñar juegos para Windows y XBOX 360 con Microsoft XNA (I de VI)</title><link>http://windowstecnico.com/archive/2009/08/31/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-i.aspx</link><pubDate>Mon, 31 Aug 2009 08:38:00 GMT</pubDate><guid isPermaLink="false">f5fee4ed-c2ed-43f2-a57e-69c2e2dfbdde:656</guid><dc:creator>Juan Antonio</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://windowstecnico.com/rsscomments.aspx?PostID=656</wfw:commentRss><comments>http://windowstecnico.com/archive/2009/08/31/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-i.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/image_5F00_49925BD7.png"&gt;&lt;img border="0" width="240" src="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/image_5F00_thumb_5F00_0F3C0758.png" alt="image" height="200" style="border-top-width:0px;display:block;border-left-width:0px;float:none;border-bottom-width:0px;margin-left:auto;margin-right:auto;border-right-width:0px;" title="image" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p align="justify"&gt;Buenas a todos, tras una temporada de relax por vacaciones, vuelvo a Windows T&amp;eacute;cnico con un tema que atraer&amp;aacute; a muchos usuarios de videojuegos que a&amp;uacute;n sabiendo algo de programaci&amp;oacute;n no han tenido la oportunidad de programarse sus propios videojuegos por la complicaci&amp;oacute;n que esto conllevaba. Esto gracias a Microsoft XNA ya es historia, ya que con esta plataforma, el dise&amp;ntilde;o y la programaci&amp;oacute;n de videojuegos ser&amp;aacute; una tarea bastante sencilla si poseemos algunos conocimientos de programaci&amp;oacute;n.&lt;/p&gt;
&lt;p align="justify"&gt;A lo largo de las pr&amp;oacute;ximas semanas vamos a introducirnos en la plataforma XNA de Microsoft, que nos permitir&amp;aacute; programar nuestros propios videojuegos para Windows y XBOX 360, aprenderemos el contenido necesario que requiere un juego para ejecutarse, hablaremos de c&amp;oacute;mo conseguir efectos visuales atractivos, movimientos y de c&amp;oacute;mo conseguir que un jugador pueda interactuar con los contenidos del juego y finalmente tras aprender c&amp;oacute;mo funciona un videojuego internamente, programaremos nuestro primer juego.&lt;/p&gt;
&lt;p align="justify"&gt;En el post de hoy, vamos a empezar explicando el porqu&amp;eacute; de XNA, que es, cuanto lleva entre nosotros, que clase de videojuegos nos va a permitir crear y sobretodo que facilidades nos proporcionar&amp;aacute; para ello.&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;&amp;iquest;Qu&amp;eacute; es Microsoft XNA?&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;XNA es una plataforma de desarrollo de videojuegos que nos permitir&amp;aacute; programar todo tipo de videojuegos sin limitaciones tanto en 2D, como en 3D, gracias a una rica biblioteca de clases.&lt;/p&gt;
&lt;p align="justify"&gt;XNA se instala sobre Visual Studio C# 2005/2008 Express Edition, la versi&amp;oacute;n gratuita de Visual Studio para programar en C#, por lo que la programaci&amp;oacute;n de videojuegos bajo esta plataforma es totalmente gratuita.&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;&amp;iquest;Tiene alg&amp;uacute;n coste la programaci&amp;oacute;n en XNA?, &amp;iquest;C&amp;oacute;mo lo podemos obtener?&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Como os acabo de contar, la programaci&amp;oacute;n de videojuegos es totalmente gratuita, simplemente nos descargaremos Visual Studio C# 2005 Express Edition &amp;oacute; Visual Studio C# 2008 Express Edition desde el siguiente enlace:&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://www.microsoft.com/express/download/default.aspx#webInstall"&gt;http://www.microsoft.com/express/download/default.aspx#webInstall&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Nos daremos de alta con nuestra cuenta de Hotmail como habitualmente, y nos enviar&amp;aacute;n una licencia de uso totalmente gratis.&lt;/p&gt;
&lt;p align="justify"&gt;Despu&amp;eacute;s, nos bajaremos la biblioteca de clases de XNA:&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=80782277-d584-42d2-8024-893fcd9d3e82&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=80782277-d584-42d2-8024-893fcd9d3e82&amp;amp;displaylang=en&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Y la instalaremos.&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;&amp;iquest;Qu&amp;eacute; versi&amp;oacute;n de XNA nos tenemos que descargar?&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;En la actualidad XNA va por la versi&amp;oacute;n 3.1, la cual es necesaria si queremos programar adem&amp;aacute;s de los juegos, los Xbox LIVE Indie Games, los mu&amp;ntilde;ecos o avatares que nos representan a nosotros en nuestra consola Xbox 360 e integrarlos en los juegos, &amp;iquest;una aut&amp;eacute;ntica pasada no?&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;&amp;iquest;En qu&amp;eacute; sistemas operativos podemos instalar Microsoft XNA?&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;XNA se puede instalar en todos los sistemas operativos de Microsoft a partir de Windows XP SP2. Yo lo tengo instalado sobre Windows 7 funcionando de maravilla :)&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;&amp;iquest;Cu&amp;aacute;ndo comenz&amp;oacute; Microsoft XNA?&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;XNA comenz&amp;oacute; a mediados del 2006 con la versi&amp;oacute;n beta, que se hizo definitiva a finales del mismo a&amp;ntilde;o.&lt;/p&gt;
&lt;p align="justify"&gt;En sus posteriores versiones se han ido a&amp;ntilde;adiendo novedades como la integraci&amp;oacute;n con la versi&amp;oacute;n 2008 de Visual Studio, la posibilidad de programar videojuegos para Zune, el reproductor multimedia de Microsoft, y se han aumentado el n&amp;uacute;mero de clases y resuelto algunos bugs..&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;&amp;iquest;En donde podremos ejecutar nuestros juegos?&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Podremos programar videojuegos tanto para PC, como para XBOX 360, como para Zune.&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;&amp;iquest;Podr&amp;aacute; alguien jugar con nuestros juegos?&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Por supuesto, de hecho es uno de los aspectos m&amp;aacute;s importantes con los que se ha pensado y dise&amp;ntilde;ado XNA, &amp;ldquo;videojuegos de todos y para todos&amp;rdquo;, por ello han querido generar una plataforma sencilla y f&amp;aacute;cil de entender por el usuario medio.&lt;/p&gt;
&lt;p align="justify"&gt;En el siguiente link, encontrareis la comunidad que ha creado Microsoft para que todo el mundo pueda participar, intercambiar videojuegos, que sean probados por revisores, podr&amp;eacute;is conseguir manuales, c&amp;oacute;digos fuentes, los programas necesarios para el desarrollo de videojuegos y muchas cosas m&amp;aacute;s:&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://creators.xna.com/es-ES/"&gt;http://creators.xna.com/es-ES/&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;&amp;iquest;Es diferente programar un videojuego de Windows a uno de XBOX 360?&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;No, la programaci&amp;oacute;n de los videojuegos es la misma, simplemente para interactuar con el ordenador, tendremos que indicarle a nuestro programa que capture las teclas o los movimientos del rat&amp;oacute;n y en el caso de la Xbox 360, que capture las pulsaciones de los botones del mando, como ver&amp;eacute;is en pr&amp;oacute;ximos post esta tarea es muy sencilla.&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;&amp;iquest;En qu&amp;eacute; lenguaje de programaci&amp;oacute;n se programan los videojuegos de XNA?&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Los videojuegos se programan en C#. Si no est&amp;aacute;is familiarizados con el lenguaje os dir&amp;eacute; que es hoy por hoy el presente y el futuro de Microsoft y de much&amp;iacute;simas otras empresas tras convertirse en un est&amp;aacute;ndar. Es un lenguaje derivado de C/C++ orientado a objetos y que se encuentra totalmente integrado con la plataforma .NET. Si busc&amp;aacute;is por internet encontrar&amp;eacute;is infinidad de manuales y como ver&amp;eacute;is si ten&amp;eacute;is conocimientos de programaci&amp;oacute;n en C/C++ o Java, adaptaros a C# ser&amp;aacute;n escasos cinco minutos.&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;&amp;iquest;Qu&amp;eacute; clase de videojuegos podremos crear?&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Con XNA podremos programar todo tipo de juegos en 2D y recordar la m&amp;iacute;tica &amp;eacute;poca del mundo de las consolas en la d&amp;eacute;cada de los 80-90 o bien videojuegos modernos en 3D, para estos &amp;uacute;ltimos l&amp;oacute;gicamente necesitareis ayudaros de un programa de dise&amp;ntilde;o 3D c&amp;oacute;mo 3ds Max, y luego importar los elementos que gener&amp;eacute;is a XNA. Si no quer&amp;eacute;is quedaros solo en la programaci&amp;oacute;n de videojuegos en 2D y quer&amp;eacute;is dar el salto a 3D pero no quer&amp;eacute;is aprender a dise&amp;ntilde;ar figuras en 3D, siempre pod&amp;eacute;is descargaros algunas por internet, con cualquier buscador encontrareis cientos de ellas, yo hace poco me descargu&amp;eacute; unos cuantos coches modernos en 3D para practicar un poco.&lt;/p&gt;
&lt;p align="justify"&gt;As&amp;iacute; que ya solo me queda decir, que os anim&amp;eacute;is a seguir esta cadena de posts que hoy comenzamos y program&amp;eacute;is vuestros propios videojuegos, que como ver&amp;eacute;is es una tarea m&amp;aacute;s sencilla de lo que parece y que os gustar&amp;aacute; y enganchar&amp;aacute;. Y si quer&amp;eacute;is intentad compartirlos con los dem&amp;aacute;s usuarios, quien sabe, quiz&amp;aacute;s entre ellos salga uno de los programadores del pr&amp;oacute;ximo Halo&amp;hellip; J&lt;/p&gt;
&lt;p align="justify"&gt;De momento para abriros el apetito, os dejo un video de un juego que he programado en una tarde (para que ve&amp;aacute;is la facilidad que nos proporciona XNA y el ahorro de tiempo en comparaci&amp;oacute;n con otras plataformas) versionando un poco uno de los juegos que m&amp;aacute;s me gustaron de mi infancia:&lt;/p&gt;
&lt;div style="display:block;float:none;margin-left:auto;width:425px;margin-right:auto;padding:0px;" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:6912214d-f388-4bf7-96a0-62dc01cf291e" class="wlWriterEditableSmartContent"&gt;
&lt;div&gt;
&lt;object height="355" width="425"&gt;
&lt;param value="http://www.youtube.com/v/ychQYuSF3r8" name="movie" /&gt;
&lt;param name="wmode" value="transparent" /&gt;&lt;embed height="355" width="425" wmode="transparent" type="application/x-shockwave-flash" src="http://www.youtube.com/v/ychQYuSF3r8"&gt;&lt;/embed&gt;
&lt;/object&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Os dejo tambi&amp;eacute;n algunas im&amp;aacute;genes y un video de varios videojuegos que han sido programados en XNA:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/image_5F00_026441EB.png"&gt;&lt;img border="0" width="461" src="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/image_5F00_thumb_5F00_3DE5D41B.png" alt="image" height="354" style="border-top-width:0px;display:block;border-left-width:0px;float:none;border-bottom-width:0px;margin-left:auto;margin-right:auto;border-right-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/image_5F00_6D833100.png"&gt;&lt;img border="0" width="471" src="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/image_5F00_thumb_5F00_37CA994E.png" alt="image" height="361" style="border-top-width:0px;display:block;border-left-width:0px;float:none;border-bottom-width:0px;margin-left:auto;margin-right:auto;border-right-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/image_5F00_64C1CB33.png"&gt;&lt;img border="0" width="466" src="http://www.windowstecnico.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowstecnico/image_5F00_thumb_5F00_56AD1EFA.png" alt="image" height="305" style="border-top-width:0px;display:block;border-left-width:0px;float:none;border-bottom-width:0px;margin-left:auto;margin-right:auto;border-right-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="display:block;float:none;margin-left:auto;width:425px;margin-right:auto;padding:0px;" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:c83cb280-2159-4400-95f6-1f66883a757d" class="wlWriterEditableSmartContent"&gt;
&lt;div&gt;
&lt;object height="355" width="425"&gt;
&lt;param value="http://www.youtube.com/v/6Nuap6VG3gI&amp;amp;hl=es&amp;amp;fs=1&amp;amp;&amp;amp;hl=en" name="movie" /&gt;&lt;embed height="355" width="425" type="application/x-shockwave-flash" src="http://www.youtube.com/v/6Nuap6VG3gI&amp;amp;hl=es&amp;amp;fs=1&amp;amp;&amp;amp;hl=en"&gt;&lt;/embed&gt;
&lt;/object&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;C&amp;oacute;mo veis mi videojuego es algo m&amp;aacute;s humilde a los de las capturas que os acabo de mostrar, pero como siempre en la vida, empezaremos la casa por los cimientos para luego escalar hasta el tejado.&lt;/p&gt;
&lt;p align="justify"&gt;En el pr&amp;oacute;ximo post, hablaremos de c&amp;oacute;mo instalar todos los elementos que nos hemos descargado, c&amp;oacute;mo crear el proyecto de nuestro primer videojuego y hablaremos finalmente de las partes de las que se compone un juego.&lt;/p&gt;
&lt;p align="justify"&gt;Saludos!&lt;/p&gt;
&lt;p align="justify"&gt;****************************************************************&lt;/p&gt;
&lt;p align="justify"&gt;-&amp;nbsp;&lt;a href="http://www.windowstecnico.com/archive/2009/08/31/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-i.aspx"&gt;Dise&amp;ntilde;ar juegos para Windows y XBOX 360 con Microsoft XNA (I de VI)&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;-&amp;nbsp;&lt;a href="http://www.windowstecnico.com/archive/2009/09/07/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-ii.aspx"&gt;Dise&amp;ntilde;ar juegos para Windows y XBOX 360 con Microsoft XNA (II de VI)&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;-&amp;nbsp;&lt;a href="http://www.windowstecnico.com/archive/2009/09/14/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-iii.aspx"&gt;Dise&amp;ntilde;ar juegos para Windows y XBOX 360 con Microsoft XNA (III de VI)&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;-&amp;nbsp;&lt;a href="http://www.windowstecnico.com/archive/2009/09/17/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-iv.aspx"&gt;Dise&amp;ntilde;ar juegos para Windows y XBOX 360 con Microsoft XNA (IV de VI)&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;-&amp;nbsp;&lt;a href="http://www.windowstecnico.com/archive/2009/09/22/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-v.aspx"&gt;Dise&amp;ntilde;ar juegos para Windows y XBOX 360 con Microsoft XNA (V de VI)&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;-&lt;a title="Dise&amp;ntilde;ar juegos XNA" href="http://www.windowstecnico.com/archive/2009/09/28/dise-241-a-tus-propios-videojuegos-para-windows-zune-y-xbox-360-con-microsoft-xna-parte-vi.aspx"&gt;&amp;nbsp;Dise&amp;ntilde;ar juegos para Windows y XBOX 360 con Microsoft XNA (VI de VI)&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;****************************************************************&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://windowstecnico.com/aggbug.aspx?PostID=656" width="1" height="1"&gt;</description><category domain="http://windowstecnico.com/archive/tags/Desarrollo/default.aspx">Desarrollo</category><category domain="http://windowstecnico.com/archive/tags/Xna/default.aspx">Xna</category><category domain="http://windowstecnico.com/archive/tags/Videojuegos/default.aspx">Videojuegos</category><category domain="http://windowstecnico.com/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://windowstecnico.com/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://windowstecnico.com/archive/tags/Programacion/default.aspx">Programacion</category><category domain="http://windowstecnico.com/archive/tags/.Net/default.aspx">.Net</category></item></channel></rss>