<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://geeks.ms/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>Fouz Blog</title><link>http://geeks.ms/blogs/cfouz/default.aspx</link><description>&lt;b&gt;Share your mind&lt;/b&gt;</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>Screens Sample in XNA</title><link>http://geeks.ms/blogs/cfouz/archive/2009/10/19/screens-sample-in-xna.aspx</link><pubDate>Mon, 19 Oct 2009 13:38:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:158355</guid><dc:creator>Carlos Fouz</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/cfouz/rsscomments.aspx?PostID=158355</wfw:commentRss><comments>http://geeks.ms/blogs/cfouz/archive/2009/10/19/screens-sample-in-xna.aspx#comments</comments><description>&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;Este c&amp;oacute;digo de ejemplo que pod&amp;eacute;is descargar encontrareis una aplicaci&amp;oacute;n XNA con diferentes pantallas.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;El proyecto es el siguiente:&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/cfouz/screenproject.jpg"&gt;&lt;img border="0" src="http://geeks.ms/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/cfouz/screenproject.jpg" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;Evidentemente no voy a explicarlo todo porque saldr&amp;iacute;a un pedazo de post, a grandes rasgos :&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;&lt;strong&gt;Content &lt;/strong&gt;: las im&amp;aacute;genes, siguiendo el mismo patr&amp;oacute;n que en el post anterior de SpriteBase, m&amp;aacute;s la carpeta Screens que contiene las im&amp;aacute;genes que mostraremos en las diversas pantallas.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;&lt;strong&gt;CFUtil&lt;/strong&gt; : En esta carpeta tenemos las utilidades que utilizo en las clases principales, igual que en el articulo Spritebase, aqu&amp;iacute; tenemos el &lt;b style="mso-bidi-font-weight:normal;"&gt;ScreenBase&lt;/b&gt; que utilizaremos para generar las diferentes pantallas.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Dentro encontramos dos clases que heredan de DrawableGameComponent, que son &lt;b style="mso-bidi-font-weight:normal;"&gt;ImatgeComponent&lt;/b&gt; que brinda la funcionalidad de poner una imagen de fondo centrada, a toda pantalla o en una posici&amp;oacute;n indicada para una pantalla, y &lt;b style="mso-bidi-font-weight:normal;"&gt;MenuComponent&lt;/b&gt; que genera el men&amp;uacute; de la pantalla principal (Jugar/Ayuda/Acerca de&amp;hellip;/Salir)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;Respecto a las clases principales vemos que tenemos todas la del ejemplo de SpriteBase, las cuales son utilizadas cuando le damos a la opci&amp;oacute;n jugar. Debido a que no es un ejemplo de un juego, sino de c&amp;oacute;mo generar las pantallas, el juego en si ser&amp;aacute; el mismo ejemplo que el articulo anterior.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;Las nuevas clases son las terminadas en Screen:&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-size:10pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;MenuScreen&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt; : &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;La pantalla principal donde hay un men&amp;uacute; para seleccionar las opciones principales :&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/cfouz/screen1.jpg"&gt;&lt;img border="0" src="http://geeks.ms/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/cfouz/screen1.jpg" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/cfouz/screen1.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/cfouz/screen2.jpg"&gt;&lt;img border="0" src="http://geeks.ms/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/cfouz/screen2.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;A nivel de c&amp;oacute;digo se hereda de ScreenBase y en el constructor se a&amp;ntilde;aden dos componentes ImageComponent y un MenuComponent :&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:ES;" lang="ES"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;class MenuScreen:ScreenBase&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;private ImageComponent imgGeeks;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;private ImageComponent imgAvion;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;public MenuComponent menu;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;public MenuScreen(Game game)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;: base(game)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;this.menu = new MenuComponent(game);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;this.imgGeeks = new ImageComponent(game, base.Game.Content.Load&amp;lt;Texture2D&amp;gt;(&amp;quot;Screens/geeks&amp;quot;)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;, ImatgeMode.Custom,new Vector2());&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;this.imgAvion = new ImageComponent(game, base.Game.Content.Load&amp;lt;Texture2D&amp;gt;(&amp;quot;Screens/1945&amp;quot;)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;, ImatgeMode.Custom, new Vector2(300, 100));&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;this.imgAvion.pos = new Vector2(300, 100);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;base.Components.Add(this.imgAvion);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;base.Components.Add(this.imgGeeks);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;base.Components.Add(this.menu);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-size:10pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;HelpScreen&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt; :&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;La pantalla donde se nos muestra la informaci&amp;oacute;n de ayuda :&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/cfouz/screen3.jpg"&gt;&lt;img border="0" src="http://geeks.ms/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/cfouz/screen3.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;class HelpScreen : ScreenBase&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;private SpriteFont textFont;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;private SpriteBatch spriteBatch;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;public HelpScreen(Game game)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;: base(game)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;base.Components.Add(new ImageComponent(game, base.Game.Content.Load&amp;lt;Texture2D&amp;gt;(&amp;quot;Screens/help&amp;quot;)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;,ImatgeMode.Stretch,new Vector2()));&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;this.textFont = Game.Content.Load&amp;lt;SpriteFont&amp;gt;(&amp;quot;Font//Verdana&amp;quot;);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;this.spriteBatch = (SpriteBatch)Game.Services.GetService(typeof(SpriteBatch));&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;public override void Draw(GameTime gameTime)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;base.Draw(gameTime);&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;//primero ponemos la imagen y despu&amp;eacute;s el texto encima.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;spriteBatch.DrawString(this.textFont, &amp;quot;Intrucciones :\n&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;1 - Avion\n&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;2 - Explosion\n&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;3 - Asteroide\n&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;4 - Personaje\n&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Escape - Salir &amp;quot;, &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;new Vector2(95, 135), &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Color.Blue);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;Bien en esta pantalla a parte de poner un ImageComponet como fondo de pantalla, tambi&amp;eacute;n tenemos un ejemplo de c&amp;oacute;mo dibujar en ella un texto por ejemplo.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-size:10pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;AboutScreen &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;:&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;Pantalla donde muestra el t&amp;iacute;pico Acerca de nuestra aplicaci&amp;oacute;n.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/cfouz/screen4.jpg"&gt;&lt;img border="0" src="http://geeks.ms/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/cfouz/screen4.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;class AboutScreen : ScreenBase&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;private SpriteFont textFont;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;private SpriteBatch spriteBatch;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;public AboutScreen(Game1 game)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;: base(game)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;base.Components.Add(new ImageComponent(game, base.Game.Content.Load&amp;lt;Texture2D&amp;gt;(&amp;quot;Screens/geeks&amp;quot;)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;, ImatgeMode.Custom,new Vector2()));&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;this.textFont = Game.Content.Load&amp;lt;SpriteFont&amp;gt;(&amp;quot;Font//About&amp;quot;);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;this.spriteBatch = (SpriteBatch)Game.Services.GetService(typeof(SpriteBatch));&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;public override void Draw(GameTime gameTime)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Game.GraphicsDevice.Clear(Color.White);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;spriteBatch.DrawString(this.textFont,&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;quot;Acerca de... Screen Sample &amp;quot;,&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;new Vector2(105, 45),&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Color.Black);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:ES;" lang="ES"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;spriteBatch.DrawString(this.textFont,&amp;quot;Esta aplicacion es un ejemplo de como generar diferentes pantallas\nde menu para nuestros juegos. \n\n Autor:Carlos Fouz\n www.geeks.ms/blogs/cfouz&amp;quot;,&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:ES;" lang="ES"&gt;new Vector2(105, 155), Color.Black);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:ES;" lang="ES"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:ES;" lang="ES"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;base.Draw(gameTime);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;&amp;nbsp;&lt;/span&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-size:10pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;PlayScreen&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt; :&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;En esta pantalla se ejecutar&amp;iacute;a el juego en si, en este ejemplo lo que he puesto es lo mismo que en el ejemplo anterior de SpriteBase.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;Bien ahora ya creo que tenemos los conocimientos b&amp;aacute;sicos para poder empezar a crear un juego simple, utilizando este ejemplo como esqueleto.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Verdana;mso-ansi-language:ES-TRAD;" lang="ES-TRAD"&gt;Os animo a que os descargu&amp;eacute;is el c&amp;oacute;digo : (Por favor, visita la web para ver este medio)&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=158355" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/cfouz/archive/tags/XNA/default.aspx">XNA</category></item><item><title>SpriteBase.cs</title><link>http://geeks.ms/blogs/cfouz/archive/2009/10/05/spritebase-cs.aspx</link><pubDate>Mon, 05 Oct 2009 17:43:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:157435</guid><dc:creator>Carlos Fouz</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/cfouz/rsscomments.aspx?PostID=157435</wfw:commentRss><comments>http://geeks.ms/blogs/cfouz/archive/2009/10/05/spritebase-cs.aspx#comments</comments><description>&lt;p&gt;&lt;span style="font-size:small;"&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;&lt;span&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span&gt;&lt;strong&gt;Objectivo&lt;/strong&gt;: &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;- Generar una clase abstracta que nos brinde toda la funcionalidad necesaria para realizar nuestros frames2D de una manera muy simple.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;- Generar un ejemplo de cada tipo de frame que podemos tener en nuestro juego, como inanimado, animado, animaci&amp;oacute;n continua (loop) o un personaje que ande en todas direcciones.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span&gt;&lt;strong&gt;Requerimientos&lt;/strong&gt; :&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;- Heredar la clase abstracta, para establecer el tipo de frame que es (animado, inanimado, con o sin loop) y gestionar la posici&amp;oacute;n en pantalla.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;- Cargar las textura/as del frame.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;- Publicar com servicio el objeto SpriteBatch en la clase Game : &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;Services.AddService(&lt;span style="color:blue;"&gt;typeof&lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;SpriteBatch&lt;/span&gt;), spriteBatch);&lt;/span&gt;&lt;span lang="EN-GB" style="mso-ansi-language:EN-GB;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="EN-GB" style="mso-ansi-language:EN-GB;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="EN-GB" style="mso-ansi-language:EN-GB;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;&lt;strong&gt;Dise&amp;ntilde;o de la clase SpriteBase.cs&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;Atributos :&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-ansi-language:ES;mso-no-proof:yes;"&gt;protected&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:ES;mso-no-proof:yes;"&gt; &lt;span style="color:#2b91af;"&gt;Vector2&lt;/span&gt; position;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;//posicion del frame en pantalla&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-ansi-language:ES;mso-no-proof:yes;"&gt;protected&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:ES;mso-no-proof:yes;"&gt; &lt;span style="color:blue;"&gt;bool&lt;/span&gt; isAnimate=&lt;span style="color:blue;"&gt;false&lt;/span&gt;;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;//indica si tiene animaci&amp;oacute;n &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-ansi-language:ES;mso-no-proof:yes;"&gt;protected&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:ES;mso-no-proof:yes;"&gt; &lt;span style="color:blue;"&gt;bool&lt;/span&gt; loop = &lt;span style="color:blue;"&gt;false&lt;/span&gt;;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;//indica si la animacion tiene loop&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-ansi-language:ES;mso-no-proof:yes;"&gt;protected&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:ES;mso-no-proof:yes;"&gt; &lt;span style="color:blue;"&gt;int&lt;/span&gt; activeFrame;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;//indicador del frame actual&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-ansi-language:ES;mso-no-proof:yes;"&gt;protected&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:ES;mso-no-proof:yes;"&gt; &lt;span style="color:blue;"&gt;int&lt;/span&gt; initFrame;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;//indicador del primer frame de la animaci&amp;oacute;n&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-ansi-language:ES;mso-no-proof:yes;"&gt;protected&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:ES;mso-no-proof:yes;"&gt; &lt;span style="color:blue;"&gt;int&lt;/span&gt; lastFrame;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;//indicador del ultimo frame de la animaci&amp;oacute;n&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;protected&lt;/span&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt; &lt;span style="color:#2b91af;"&gt;Texture2D&lt;/span&gt;[] textura;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;//textura &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;protected&lt;/span&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt; &lt;span style="color:blue;"&gt;long&lt;/span&gt; frameDelay;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;//refresco&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;color:green;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;private &lt;/span&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;color:#2b91af;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;TimeSpan&lt;/span&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt; elapsedTime = &lt;span style="color:#2b91af;"&gt;TimeSpan&lt;/span&gt;.Zero;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;private &lt;/span&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;color:#2b91af;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;SpriteBatch&lt;/span&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt; sBatch;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;//almacenado en Services&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-GB" style="mso-ansi-language:EN-GB;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="EN-GB" style="mso-ansi-language:EN-GB;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="EN-GB" style="mso-ansi-language:EN-GB;"&gt;M&amp;eacute;todos :&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="EN-GB" style="mso-ansi-language:EN-GB;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;public&lt;/span&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt; SpriteBase(&lt;span style="color:#2b91af;"&gt;Game&lt;/span&gt; game): &lt;span style="color:blue;"&gt;base&lt;/span&gt;(game)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="mso-ansi-language:EN-GB;"&gt;En el qual recogeremos el SpriteBatch.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="EN-GB" style="mso-ansi-language:EN-GB;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;public&lt;/span&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt; &lt;span style="color:blue;"&gt;override&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Update(&lt;span style="color:#2b91af;"&gt;GameTime&lt;/span&gt; gameTime)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;Donde gestionaremos las animaciones .&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-ansi-language:ES;mso-no-proof:yes;"&gt;public&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:ES;mso-no-proof:yes;"&gt; &lt;span style="color:blue;"&gt;override&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Draw(&lt;span style="color:#2b91af;"&gt;GameTime&lt;/span&gt; gameTime)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;Donde pintaremos nuestro frame.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;&lt;strong&gt;Dise&amp;ntilde;o de la soluci&amp;oacute;n :&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-size:small;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/cfouz/spriteBase-diagram.JPG"&gt;&lt;img src="http://geeks.ms/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/cfouz/spriteBase-diagram.JPG" border="0" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-size:small;"&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;A grandes rasgos lo que se pretende es que construyamos nuestra clase heredando de SpriteBase y nos olvidemos de las cosas comunes en la gesti&amp;oacute;n de frames en juegos 2D.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;Implementaci&amp;oacute;n :&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;Para la gesti&amp;oacute;n de nuestros sprites lo &amp;uacute;nico que tenemos que hacer es heredar de SpriteBase y gestionar los atributos de la misma, as&amp;iacute; como cargar las textura/as y modificar la posici&amp;oacute;n si tiene movimiento.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;- Dibujar un sprite simple (un avi&amp;oacute;n)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;public&lt;/span&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt; &lt;span style="color:blue;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Avion&lt;/span&gt;: &lt;span style="color:#2b91af;"&gt;SpriteBase&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;public&lt;/span&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt; Avion(&lt;span style="color:#2b91af;"&gt;Game&lt;/span&gt; game, &lt;span style="color:#2b91af;"&gt;FrameRate&lt;/span&gt; frameRate): &lt;span style="color:blue;"&gt;base&lt;/span&gt;(game)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.frameDelay = &lt;span style="color:blue;"&gt;long&lt;/span&gt;.Parse(frameRate.GetHashCode().ToString());&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.isAnimate = &lt;span style="color:blue;"&gt;false&lt;/span&gt;; &lt;span style="color:green;"&gt;//no es una animaci&amp;oacute;n&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;base&lt;/span&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;.position = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Vector2&lt;/span&gt;(game.Window.ClientBounds.Width / 2, game.Window.ClientBounds.Height / 2);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.textura = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Texture2D&lt;/span&gt;[1];&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.textura[0] = &lt;span style="color:blue;"&gt;base&lt;/span&gt;.Game.Content.Load&amp;lt;&lt;span style="color:#2b91af;"&gt;Texture2D&lt;/span&gt;&amp;gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;avion/avion&amp;quot;&lt;/span&gt;);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:ES;mso-no-proof:yes;"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:ES;mso-no-proof:yes;"&gt;}&lt;/span&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;Con esto tenemos suficiente, podemos implementar el m&amp;eacute;todo update para modificar su posici&amp;oacute;n en pantalla controlando el teclado si lo creemos necesario. Por ejemplo :&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;override&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Update(&lt;span style="color:#2b91af;"&gt;GameTime&lt;/span&gt; gameTime)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:ES;mso-no-proof:yes;"&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;KeyboardState&lt;/span&gt; keyboard = &lt;span style="color:#2b91af;"&gt;Keyboard&lt;/span&gt;.GetState();&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (keyboard.IsKeyDown(&lt;span style="color:#2b91af;"&gt;Keys&lt;/span&gt;.Up))&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.position.Y -= 3;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (keyboard.IsKeyDown(&lt;span style="color:#2b91af;"&gt;Keys&lt;/span&gt;.Down))&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.position.Y += 3;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (keyboard.IsKeyDown(&lt;span style="color:#2b91af;"&gt;Keys&lt;/span&gt;.Left))&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.position.X -= 3;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (keyboard.IsKeyDown(&lt;span style="color:#2b91af;"&gt;Keys&lt;/span&gt;.Right))&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.position.X += 3;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.Update(gameTime);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:ES;mso-no-proof:yes;"&gt;}&lt;/span&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES-TRAD" style="font-family:Arial;font-size:12pt;mso-ansi-language:ES-TRAD;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;mso-bidi-language:AR-SA;"&gt;El resultado por pantalla es:&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/cfouz/pantalla_5F00_avio.jpg"&gt;&lt;img src="http://geeks.ms/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/cfouz/pantalla_5F00_avio.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;&lt;span style="font-size:small;"&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;- Generar un bucle de animaci&amp;oacute;n (un asteroide rotando)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
&lt;p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;class&lt;/span&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt; &lt;span style="color:#2b91af;"&gt;Asteroide&lt;/span&gt;:&lt;span style="color:#2b91af;"&gt;SpriteBase&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;{&lt;span style="color:#2b91af;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; Asteroide(&lt;span style="color:#2b91af;"&gt;Game&lt;/span&gt; game, &lt;span style="color:#2b91af;"&gt;FrameRate&lt;/span&gt; frameRate): &lt;span style="color:blue;"&gt;base&lt;/span&gt;(game)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.frameDelay = &lt;span style="color:blue;"&gt;long&lt;/span&gt;.Parse(frameRate.GetHashCode().ToString());&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.isAnimate = &lt;span style="color:blue;"&gt;true&lt;/span&gt;;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;//indicamos que es una animaci&amp;oacute;n&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.loop = &lt;span style="color:blue;"&gt;true&lt;/span&gt;;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;//indicamos que es un bucle&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.lastFrame = 7;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;//indicamos ultimo frame de la animaci&amp;oacute;n&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.position = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Vector2&lt;/span&gt;(game.Window.ClientBounds.Width / 2, game.Window.ClientBounds.Height / 2);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.CargaTextura();&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;private&lt;/span&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; CargaTextura()&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.textura = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Texture2D&lt;/span&gt;[8];&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.textura[0] = &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.Game.Content.Load&amp;lt;&lt;span style="color:#2b91af;"&gt;Texture2D&lt;/span&gt;&amp;gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;asteroide/asteroide1&amp;quot;&lt;/span&gt;);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.textura[1] = &lt;span style="color:blue;"&gt;base&lt;/span&gt;.Game.Content.Load&amp;lt;&lt;span style="color:#2b91af;"&gt;Texture2D&lt;/span&gt;&amp;gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;asteroide/asteroide2&amp;quot;&lt;/span&gt;);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.textura[2] = &lt;span style="color:blue;"&gt;base&lt;/span&gt;.Game.Content.Load&amp;lt;&lt;span style="color:#2b91af;"&gt;Texture2D&lt;/span&gt;&amp;gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;asteroide/asteroide3&amp;quot;&lt;/span&gt;);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.textura[3] = &lt;span style="color:blue;"&gt;base&lt;/span&gt;.Game.Content.Load&amp;lt;&lt;span style="color:#2b91af;"&gt;Texture2D&lt;/span&gt;&amp;gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;asteroide/asteroide4&amp;quot;&lt;/span&gt;);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.textura[4] = &lt;span style="color:blue;"&gt;base&lt;/span&gt;.Game.Content.Load&amp;lt;&lt;span style="color:#2b91af;"&gt;Texture2D&lt;/span&gt;&amp;gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;asteroide/asteroide5&amp;quot;&lt;/span&gt;);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.textura[5] = &lt;span style="color:blue;"&gt;base&lt;/span&gt;.Game.Content.Load&amp;lt;&lt;span style="color:#2b91af;"&gt;Texture2D&lt;/span&gt;&amp;gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;asteroide/asteroide6&amp;quot;&lt;/span&gt;);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.textura[6] = &lt;span style="color:blue;"&gt;base&lt;/span&gt;.Game.Content.Load&amp;lt;&lt;span style="color:#2b91af;"&gt;Texture2D&lt;/span&gt;&amp;gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;asteroide/asteroide7&amp;quot;&lt;/span&gt;);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.textura[7] = &lt;span style="color:blue;"&gt;base&lt;/span&gt;.Game.Content.Load&amp;lt;&lt;span style="color:#2b91af;"&gt;Texture2D&lt;/span&gt;&amp;gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;asteroide/asteroide8&amp;quot;&lt;/span&gt;);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:ES;mso-no-proof:yes;"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="EN-GB" style="mso-ansi-language:EN-GB;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span lang="ES-TRAD" style="font-family:Arial;font-size:12pt;mso-ansi-language:ES-TRAD;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;mso-bidi-language:AR-SA;"&gt;El resultado por pantalla es:&lt;/span&gt;&lt;/p&gt;
&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;&lt;span style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/cfouz/pantalla_5F00_asteroid.jpg"&gt;&lt;img src="http://geeks.ms/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/cfouz/pantalla_5F00_asteroid.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;&lt;span style="font-size:small;"&gt;-&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Generar una animaci&amp;oacute;n sin bucle (una explosi&amp;oacute;n)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;public&lt;/span&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt; &lt;span style="color:blue;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Explosion&lt;/span&gt;:&lt;span style="color:#2b91af;"&gt;SpriteBase&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; Explosion(&lt;span style="color:#2b91af;"&gt;Game&lt;/span&gt; game, &lt;span style="color:#2b91af;"&gt;FrameRate&lt;/span&gt; frameRate): &lt;span style="color:blue;"&gt;base&lt;/span&gt;(game)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.frameDelay = &lt;span style="color:blue;"&gt;long&lt;/span&gt;.Parse(frameRate.GetHashCode().ToString());&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.isAnimate = &lt;span style="color:blue;"&gt;true&lt;/span&gt;; &lt;span style="color:green;"&gt;//indicamos que es una animaci&amp;oacute;n&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.lastFrame = 6;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;//indicamos ultimo frame de la animaci&amp;oacute;n&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:ES;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.loop = &lt;span style="color:blue;"&gt;false&lt;/span&gt;;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;//indicamos que no es un bucle&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.position = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Vector2&lt;/span&gt;(game.Window.ClientBounds.Width / 2,game.Window.ClientBounds.Height / 2);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.CargaTextura();&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;span lang="EN-GB" style="mso-ansi-language:EN-GB;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; CargaTextura()&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.textura = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Texture2D&lt;/span&gt;[7];&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.textura[0] = &lt;span style="color:blue;"&gt;base&lt;/span&gt;.Game.Content.Load&amp;lt;&lt;span style="color:#2b91af;"&gt;Texture2D&lt;/span&gt;&amp;gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;explosion/explo1&amp;quot;&lt;/span&gt;);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.textura[1] = &lt;span style="color:blue;"&gt;base&lt;/span&gt;.Game.Content.Load&amp;lt;&lt;span style="color:#2b91af;"&gt;Texture2D&lt;/span&gt;&amp;gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;explosion/explo2&amp;quot;&lt;/span&gt;);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.textura[2] = &lt;span style="color:blue;"&gt;base&lt;/span&gt;.Game.Content.Load&amp;lt;&lt;span style="color:#2b91af;"&gt;Texture2D&lt;/span&gt;&amp;gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;explosion/explo3&amp;quot;&lt;/span&gt;);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.textura[3] = &lt;span style="color:blue;"&gt;base&lt;/span&gt;.Game.Content.Load&amp;lt;&lt;span style="color:#2b91af;"&gt;Texture2D&lt;/span&gt;&amp;gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;explosion/explo4&amp;quot;&lt;/span&gt;);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.textura[4] = &lt;span style="color:blue;"&gt;base&lt;/span&gt;.Game.Content.Load&amp;lt;&lt;span style="color:#2b91af;"&gt;Texture2D&lt;/span&gt;&amp;gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;explosion/explo5&amp;quot;&lt;/span&gt;);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.textura[5] = &lt;span style="color:blue;"&gt;base&lt;/span&gt;.Game.Content.Load&amp;lt;&lt;span style="color:#2b91af;"&gt;Texture2D&lt;/span&gt;&amp;gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;explosion/explo6&amp;quot;&lt;/span&gt;);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.textura[6] = &lt;span style="color:blue;"&gt;base&lt;/span&gt;.Game.Content.Load&amp;lt;&lt;span style="color:#2b91af;"&gt;Texture2D&lt;/span&gt;&amp;gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;explosion/explo7&amp;quot;&lt;/span&gt;);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="EN-GB" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="EN-GB" style="mso-ansi-language:EN-GB;"&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span lang="ES-TRAD" style="font-family:Arial;font-size:12pt;mso-ansi-language:ES-TRAD;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;mso-bidi-language:AR-SA;"&gt;El resultado por pantalla es:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/cfouz/pantalla_5F00_explosio.jpg"&gt;&lt;img src="http://geeks.ms/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/cfouz/pantalla_5F00_explosio.jpg" border="0" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;&lt;span style="font-size:small;"&gt;-&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Generar un personaje&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;&lt;span style="font-size:small;"&gt;Esta clase la podeis descargar para ver como funciona, es exactamente que una animaci&amp;oacute;n con loop pero en el m&amp;eacute;todo update asignamos a las variables initFrame, activeFrame i lastFrame el valor de cada animaci&amp;oacute;n en funci&amp;oacute;n de la direcci&amp;oacute;n del personaje.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;&lt;span style="font-size:small;"&gt;El resultado por pantalla es: &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;&lt;span lang="ES-TRAD" style="font-family:Arial;font-size:12pt;mso-ansi-language:ES-TRAD;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:ES;mso-bidi-language:AR-SA;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-size:small;"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/cfouz/pantalla_5F00_personatje.jpg"&gt;&lt;img src="http://geeks.ms/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/cfouz/pantalla_5F00_personatje.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD;"&gt;&lt;span style="font-size:small;"&gt;Bien os insto a que os descargu&amp;eacute;is el c&amp;oacute;digo fuente para testearlo, lo encontrareis todo comentado para que sea m&amp;aacute;s f&amp;aacute;cil de entender.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;(Por favor, visita la web para ver este medio)&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=157435" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/cfouz/archive/tags/XNA/default.aspx">XNA</category></item><item><title>Sprites, downloads</title><link>http://geeks.ms/blogs/cfouz/archive/2009/09/18/sprites-downloads.aspx</link><pubDate>Fri, 18 Sep 2009 09:56:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:156035</guid><dc:creator>Carlos Fouz</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/cfouz/rsscomments.aspx?PostID=156035</wfw:commentRss><comments>http://geeks.ms/blogs/cfouz/archive/2009/09/18/sprites-downloads.aspx#comments</comments><description>&lt;p&gt;Para los que no tenemos conocimientos, tiempo ni mucho menos arte para realizar sprites para nuestros juegos lo mejor es descargarnos algunos de internet.&lt;/p&gt;
&lt;p&gt;En gamedev.net he encontradro unos posts que contienen multitud de sitios donde podemos descargarnos sprites para nuestros juegos, incluso en 3D. Muy interesante hecharles un vistazo.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.gamedev.net/community/forums/topic.asp?topic_id=544073"&gt;http://www.gamedev.net/community/forums/topic.asp?topic_id=544073&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.gamedev.net/community/forums/topic.asp?topic_id=272386"&gt;http://www.gamedev.net/community/forums/topic.asp?topic_id=272386&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Tambi&amp;eacute;n resulta interesante la lista de recopilaci&amp;oacute;n de sitios en :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://gamemaking.indiangames.net/index_files/FreeSpritesforGames.htm"&gt;http://gamemaking.indiangames.net/index_files/FreeSpritesforGames.htm&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=156035" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/cfouz/archive/tags/XNA/default.aspx">XNA</category></item><item><title>Mover un Sprite – II</title><link>http://geeks.ms/blogs/cfouz/archive/2009/08/31/mover-un-sprite-ii.aspx</link><pubDate>Mon, 31 Aug 2009 14:03:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:155031</guid><dc:creator>Carlos Fouz</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/cfouz/rsscomments.aspx?PostID=155031</wfw:commentRss><comments>http://geeks.ms/blogs/cfouz/archive/2009/08/31/mover-un-sprite-ii.aspx#comments</comments><description>&lt;p&gt;


 
  Normal
  0
  21
  
  
  false
  false
  false
  
   
   
   
   
   
  
  MicrosoftInternetExplorer4
 

 
 

&lt;object classid="clsid:38481807-CA0E-42D2-BF39-B33AF135CC4D" id="ieooui"&gt;
&lt;/object&gt;






&lt;/p&gt;
&lt;p style="text-align:justify;" class="MsoNormal"&gt;&lt;span lang="ES-TRAD" style="font-size:9pt;font-family:Verdana;"&gt;El
objetivo en este peque&amp;ntilde;o ejemplo es, continuando con el ejemplo anterior,
realizar una pantalla donde se nos mueva hasta 5 pelotas colisionando entre
ellas. Se mostrar&amp;aacute; una pelota inicial y cuando el usuario pulse la tecla
&amp;ldquo;espacio&amp;rdquo; del teclado a&amp;ntilde;adir&amp;aacute; una pelota a la pantalla.&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:justify;" class="MsoNormal"&gt;&lt;span lang="ES-TRAD" style="font-size:9pt;font-family:Verdana;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:justify;" class="MsoNormal"&gt;&lt;span lang="ES-TRAD" style="font-size:9pt;font-family:Verdana;"&gt;Las
posiciones iniciales de las pelotas han de ser un valor aleatorio y se ha de
controlar que al mostrar una pelota nueva no se ponga encima de una de las
existentes.&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:justify;" class="MsoNormal"&gt;&lt;span lang="ES-TRAD" style="font-size:9pt;font-family:Verdana;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:justify;" class="MsoNormal"&gt;&lt;span lang="ES-TRAD" style="font-size:9pt;font-family:Verdana;"&gt;Bien pues
pong&amp;aacute;monos manos a la obra.&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:justify;" class="MsoNormal"&gt;&lt;span lang="ES-TRAD" style="font-size:9pt;font-family:Verdana;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:justify;" class="MsoNormal"&gt;&lt;span lang="ES-TRAD" style="font-size:9pt;font-family:Verdana;"&gt;Sobre la
clase cfSprite realizada en el articulo anterior solamente variaremos lo
siguiente :&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:justify;" class="MsoNormal"&gt;&lt;span lang="ES-TRAD" style="font-size:9pt;font-family:Verdana;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-left:36pt;text-align:justify;text-indent:-18pt;" class="MsoNormal"&gt;&lt;span lang="ES-TRAD" style="font-size:9pt;font-family:Verdana;"&gt;&lt;span&gt;-&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal;-x-system-font:none;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="ES-TRAD" style="font-size:9pt;font-family:Verdana;"&gt;A&amp;ntilde;adir los siguientes atributos&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;public&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:#2b91af;"&gt;Vector2&lt;/span&gt; centro { &lt;span style="color:blue;"&gt;get&lt;/span&gt; { &lt;span style="color:blue;"&gt;return&lt;/span&gt; posicion
+ (tamano / 2); } } &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;public&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:blue;"&gt;float&lt;/span&gt; radio { &lt;span style="color:blue;"&gt;get&lt;/span&gt; { &lt;span style="color:blue;"&gt;return&lt;/span&gt; tamano.X
/ 2; } } &lt;span style="color:green;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-left:18pt;text-align:justify;" class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:9pt;font-family:Verdana;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-left:36pt;text-align:justify;text-indent:-18pt;" class="MsoNormal"&gt;&lt;span lang="ES-TRAD" style="font-size:9pt;font-family:Verdana;"&gt;&lt;span&gt;-&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal;-x-system-font:none;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="ES-TRAD" style="font-size:9pt;font-family:Verdana;"&gt;A&amp;ntilde;adir el m&amp;eacute;todo CirculoColision
para detectar si nuestra pelota choca con otra&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;public&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:blue;"&gt;bool&lt;/span&gt; CirculoColision(&lt;span style="color:#2b91af;"&gt;cfSprite&lt;/span&gt; otroSprite)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;return&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;Vector2&lt;/span&gt;.Distance(&lt;span style="color:blue;"&gt;this&lt;/span&gt;.centro, otroSprite.centro) &amp;lt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.radio + otroSprite.radio);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-left:36pt;text-align:justify;text-indent:-18pt;" class="MsoNormal"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;"&gt;&lt;span&gt;-&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal;-x-system-font:none;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;"&gt;A&amp;ntilde;adir el m&amp;eacute;todo Dispose. En el ejemplo anterior
se realizaba desde la clase Game pero la intenci&amp;oacute;n ahora es gestionar un
arraylist de pelotas. Para realizar el dispose se recorrer&amp;aacute; el arraylist
llamando a los dispose de los objetos cargados.&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:justify;" class="MsoNormal"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;public&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Dispose()&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (!&lt;span style="color:blue;"&gt;this&lt;/span&gt;.textura.IsDisposed)
&lt;span style="color:blue;"&gt;this&lt;/span&gt;.textura.Dispose();&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:justify;" class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:9pt;font-family:Verdana;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:justify;" class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:9pt;font-family:Verdana;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:justify;" class="MsoNormal"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;"&gt;Ahora lo que nos falta es modificar
nuestra clase Game1.cs.&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:justify;" class="MsoNormal"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:justify;" class="MsoNormal"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;"&gt;A&amp;ntilde;adiremos &lt;/span&gt;&lt;span lang="ES" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;using&lt;/span&gt;&lt;span lang="ES" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; System.Collections; &lt;/span&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;"&gt;para poder generar un atributo
tipo arraylist como &lt;/span&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:#2b91af;"&gt;ArrayList&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; balls = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ArrayList&lt;/span&gt;();&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:justify;" class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:justify;" class="MsoNormal"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;"&gt;Tambi&amp;eacute;n tendremos los atributos
:&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:justify;" class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:#2b91af;"&gt;Texture2D&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; ballTexture;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:#2b91af;"&gt;Vector2&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; ballSize = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Vector2&lt;/span&gt;(80f, 80f);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:#2b91af;"&gt;Vector2&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; windowSize = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Vector2&lt;/span&gt;(800f, 600f);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:#2b91af;"&gt;KeyboardState&lt;/span&gt;&lt;span lang="ES" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; oldKeyboardState;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:justify;" class="MsoNormal"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:justify;" class="MsoNormal"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;"&gt;No hay mucho que explicar,
simplemente atributos que necesitaremos en nuestros m&amp;eacute;todos. El KeyboardState
lo utilizo para guardar la &amp;uacute;ltima tecla pulsada, es decir, para que si el
usuario pulsa la tecla &amp;ldquo;espacio&amp;rdquo; del teclado solo lance una pelota ya que si no
lo controlar&amp;aacute; lanzar&amp;iacute;a las pelotas sucesivamente. Esto lo veremos m&amp;aacute;s adelante.&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:justify;" class="MsoNormal"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:justify;" class="MsoNormal"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;"&gt;Bien lo primero que tenemos que
hacer es calcular una posici&amp;oacute;n inicial y aleatoria donde posicionaremos la
pelota, para ello utilizamos el siguiente m&amp;eacute;todo :&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:justify;" class="MsoNormal"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;protected&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:#2b91af;"&gt;Vector2&lt;/span&gt;
getPosicioAleatoria()&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Random&lt;/span&gt; r =
&lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Random&lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;DateTime&lt;/span&gt;.Now.Millisecond);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:blue;"&gt;int&lt;/span&gt; x =
r.Next(0, &lt;span style="color:blue;"&gt;int&lt;/span&gt;.Parse((&lt;span style="color:blue;"&gt;this&lt;/span&gt;.windowSize.X
- &lt;span style="color:blue;"&gt;this&lt;/span&gt;.ballSize.X).ToString()));&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;int&lt;/span&gt; y = r.Next(0, &lt;span style="color:blue;"&gt;int&lt;/span&gt;.Parse((&lt;span style="color:blue;"&gt;this&lt;/span&gt;.windowSize.Y - &lt;span style="color:blue;"&gt;this&lt;/span&gt;.ballSize.Y).ToString()));&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;return&lt;/span&gt; &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Vector2&lt;/span&gt;(x, y);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:justify;" class="MsoNormal"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:justify;" class="MsoNormal"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;"&gt;En el LoadContent() de nuestra
clase Game1 cargaremos el recurso de la imagen de la pelota y llamaremos a un
m&amp;eacute;todo para que la lance a pantalla:&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;this&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;.ballTexture = Content.Load&amp;lt;&lt;span style="color:#2b91af;"&gt;Texture2D&lt;/span&gt;&amp;gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;pelota&amp;quot;&lt;/span&gt;);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;this&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;.llen&amp;ccedil;aPilota();&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:justify;" class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:9pt;font-family:Verdana;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:justify;" class="MsoNormal"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;"&gt;A continuaci&amp;oacute;n tenemos el m&amp;eacute;todo
llen&amp;ccedil;aPilota(), donde a&amp;ntilde;adiremos a nuestro array de pelotas una nueva
controlando que la posici&amp;oacute;n no colisione con ninguna que tenemos en pantalla.&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:justify;" class="MsoNormal"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;protected&lt;/span&gt;&lt;span lang="ES" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; llen&amp;ccedil;aPilota()&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:#2b91af;"&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;cfSprite&lt;/span&gt;&lt;span lang="ES" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; novaPilota;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:green;"&gt;//calculo de la posicion y velocidad aleatoria&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:#2b91af;"&gt;Vector2&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; posicioIni
= &lt;span style="color:blue;"&gt;this&lt;/span&gt;.getPosicioAleatoria();&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Random&lt;/span&gt; r = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Random&lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;DateTime&lt;/span&gt;.Now.Millisecond);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Vector2&lt;/span&gt; velocitat = &lt;span style="color:blue;"&gt;new&lt;/span&gt;
&lt;span style="color:#2b91af;"&gt;Vector2&lt;/span&gt;(r.Next(-5, 5),r.Next(-5, 5));&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;novaPilota = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;cfSprite&lt;/span&gt;(&lt;span style="color:blue;"&gt;this&lt;/span&gt;.ballTexture,&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;posicioIni,&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.ballSize,&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.windowSize,&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;velocitat&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;//control para que
no salga encima de otra pelota.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;int&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; numColisions = 1;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;while&lt;/span&gt; (numColisions&amp;gt;0)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;numColisions = 0;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;foreach&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;cfSprite&lt;/span&gt;
p &lt;span style="color:blue;"&gt;in&lt;/span&gt; &lt;span style="color:blue;"&gt;this&lt;/span&gt;.balls)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (novaPilota.CirculoColision(p))&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;novaPilota.posicion = &lt;span style="color:blue;"&gt;this&lt;/span&gt;.getPosicioAleatoria();&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;numColisions++;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.balls.Add(novaPilota);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:justify;" class="MsoNormal"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:justify;" class="MsoNormal"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;"&gt;Para que se nos muestre por
pantalla simplemente a&amp;ntilde;adimos el siguiente c&amp;oacute;digo en el m&amp;eacute;todo Draw() :&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:justify;" class="MsoNormal"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;foreach&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; (&lt;span style="color:#2b91af;"&gt;cfSprite&lt;/span&gt; p &lt;span style="color:blue;"&gt;in&lt;/span&gt; &lt;span style="color:blue;"&gt;this&lt;/span&gt;.balls)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;p.Draw(spriteBatch);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES-TRAD" style="font-size:9pt;font-family:Verdana;"&gt;y
hacemos lo mismo en el metodo Dispose :&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;foreach&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; (&lt;span style="color:#2b91af;"&gt;cfSprite&lt;/span&gt; p &lt;span style="color:blue;"&gt;in&lt;/span&gt; &lt;span style="color:blue;"&gt;this&lt;/span&gt;.balls)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;p.Dispose();&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES-TRAD" style="font-size:9pt;font-family:Verdana;"&gt;Ahora
solo nos falta controlar el teclado y actualizar las posiciones de las pelotas
en pantalla, esto igual que el ejemplo anterior se realiza en el m&amp;eacute;todo Update ,
es decir, en el bucle del juego.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES-TRAD" style="font-size:9pt;font-family:Verdana;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;protected&lt;/span&gt; &lt;span style="color:blue;"&gt;override&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Update(&lt;span style="color:#2b91af;"&gt;GameTime&lt;/span&gt;
gameTime)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;KeyboardState&lt;/span&gt; keyboardState = &lt;span style="color:#2b91af;"&gt;Keyboard&lt;/span&gt;.GetState();&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (keyboardState.IsKeyDown(&lt;span style="color:#2b91af;"&gt;Keys&lt;/span&gt;.Space)
&amp;amp;&amp;amp; !&lt;span style="color:blue;"&gt;this&lt;/span&gt;.oldKeyboardState.IsKeyDown(&lt;span style="color:#2b91af;"&gt;Keys&lt;/span&gt;.Space))&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;//restici&amp;oacute;n
de 5 pelotas a la pantalla.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;if&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; (&lt;span style="color:blue;"&gt;this&lt;/span&gt;.balls.Count&amp;lt;5)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.llen&amp;ccedil;aPilota();&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.oldKeyboardState = &lt;span style="color:#2b91af;"&gt;Keyboard&lt;/span&gt;.GetState();&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (keyboardState.IsKeyDown(&lt;span style="color:#2b91af;"&gt;Keys&lt;/span&gt;.Escape))&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;this&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;.Exit();&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;//movem
les pilotes&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;foreach&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;cfSprite&lt;/span&gt;
p &lt;span style="color:blue;"&gt;in&lt;/span&gt; &lt;span style="color:blue;"&gt;this&lt;/span&gt;.balls)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;p.Mover();&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;//control de colisio&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:blue;"&gt;foreach&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;cfSprite&lt;/span&gt; p2 &lt;span style="color:blue;"&gt;in&lt;/span&gt; &lt;span style="color:blue;"&gt;this&lt;/span&gt;.balls)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt;
(p.CirculoColision(p2))&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Vector2&lt;/span&gt; tempVelocity = p.velocidad;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;p.velocidad =
p2.velocidad;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span lang="ES" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;p2.velocidad
= tempVelocity;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.Update(gameTime);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB" style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES-TRAD" style="font-size:9pt;font-family:Verdana;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES-TRAD" style="font-size:9pt;font-family:Verdana;"&gt;B&amp;aacute;sicamente
controlamos que la tecla pulsada sea el espacio y que no la haya mantenido
pulsada (oldKeyboardState).&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES-TRAD" style="font-size:9pt;font-family:Verdana;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES-TRAD" style="font-size:9pt;font-family:Verdana;"&gt;Finalmente
recorremos las pelotas y gestionamos la colisi&amp;oacute;n entre ellas.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES-TRAD" style="font-size:9pt;font-family:Verdana;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:justify;" class="MsoNormal"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;"&gt;Ya estamos listos para ejecutar
y si todo ha ido bien deber&amp;iacute;amos ver un resultado similar a esto :&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:justify;" class="MsoNormal"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:justify;" class="MsoNormal"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/cfouz/pelota.jpg"&gt;&lt;img border="0" src="http://geeks.ms/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/cfouz/pelota.jpg" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:justify;" class="MsoNormal"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align:justify;" class="MsoNormal"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;"&gt;(Por favor, visita la web para ver este medio)&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
&lt;span lang="ES-TRAD" style="font-size:9pt;font-family:Verdana;"&gt;Bien este han sido un
ejemplo muy b&amp;aacute;sicos de c&amp;oacute;mo podemos empezar a manejarnos con XNA, aunque lo
realizado dista a&amp;ntilde;os ( por no decir siglos..) de algo parecido a un juego,
hemos introducido objetos en la escena, colisiones entre ellos y una minima
interacci&amp;oacute;n con el usuario.&lt;/span&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://geeks.ms/aggbug.aspx?PostID=155031" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/cfouz/archive/tags/XNA/default.aspx">XNA</category></item><item><title>Mover un Sprite</title><link>http://geeks.ms/blogs/cfouz/archive/2009/08/29/mover-un-sprite.aspx</link><pubDate>Fri, 28 Aug 2009 22:30:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:154933</guid><dc:creator>Carlos Fouz</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/cfouz/rsscomments.aspx?PostID=154933</wfw:commentRss><comments>http://geeks.ms/blogs/cfouz/archive/2009/08/29/mover-un-sprite.aspx#comments</comments><description>&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Times New Roman;font-size:small;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Times New Roman;font-size:small;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Verdana;font-size:9pt;"&gt;Bien siguiendo con el ejemplo anterior ahora vamos a mover un sprite por la pantalla.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Verdana;font-size:9pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Verdana;font-size:9pt;"&gt;Para mover nuestro sprite necesitamos los siguientes atributos : Textura, posici&amp;oacute;n, tama&amp;ntilde;o de la imagen, velocidad i tama&amp;ntilde;o de la ventana.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Verdana;font-size:9pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Verdana;font-size:9pt;"&gt;La textura y la posici&amp;oacute;n ya la usamos en el ultimo ejemplo, ahora necesitamos el tama&amp;ntilde;o de la ventana y de la imagen para controlar que no se nos salga el sprite de pantalla sino que rebote sobre las paredes. La velocidad es un vector2 igual que la posici&amp;oacute;n, lo que debemos hacer es sumar los dos vectores para tener la posici&amp;oacute;n nueva.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Verdana;font-size:9pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Verdana;font-size:9pt;"&gt;Si a&amp;ntilde;adimos atributos a la clase tambi&amp;eacute;n modificamos el constructor de la misma para que reciba los mismos par&amp;aacute;metros.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Verdana;font-size:9pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Verdana;font-size:9pt;"&gt;Por ultimo para finalizar las modificaciones sobre la clase del sprite, generamos un m&amp;eacute;todo Mover que nos gestiona la pr&amp;oacute;xima posici&amp;oacute;n calculando que&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;el objeto no se salga de la pantalla.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Verdana;font-size:9pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Verdana;font-size:9pt;"&gt;Finalmente la clase cfSprite quedar&amp;iacute;a :&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Times New Roman;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-ansi-language:EN-GB;mso-no-proof:yes;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;cfSprite&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-ansi-language:EN-GB;mso-no-proof:yes;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-ansi-language:EN-GB;mso-no-proof:yes;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Texture2D&lt;/span&gt; textura&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;{ &lt;span style="color:blue;"&gt;get&lt;/span&gt;; &lt;span style="color:blue;"&gt;set&lt;/span&gt;; } &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-ansi-language:EN-GB;mso-no-proof:yes;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Vector2&lt;/span&gt; posicion&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;{ &lt;span style="color:blue;"&gt;get&lt;/span&gt;; &lt;span style="color:blue;"&gt;set&lt;/span&gt;; } &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-ansi-language:EN-GB;mso-no-proof:yes;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Vector2&lt;/span&gt; tamano { &lt;span style="color:blue;"&gt;get&lt;/span&gt;; &lt;span style="color:blue;"&gt;set&lt;/span&gt;; }&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-ansi-language:EN-GB;mso-no-proof:yes;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Vector2&lt;/span&gt; velocidad { &lt;span style="color:blue;"&gt;get&lt;/span&gt;; &lt;span style="color:blue;"&gt;set&lt;/span&gt;; } &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-ansi-language:EN-GB;mso-no-proof:yes;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:8pt;mso-no-proof:yes;"&gt;private&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-no-proof:yes;"&gt; &lt;span style="color:#2b91af;"&gt;Vector2&lt;/span&gt; tamanoVentana { &lt;span style="color:blue;"&gt;get&lt;/span&gt;; &lt;span style="color:blue;"&gt;set&lt;/span&gt;; } &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; cfSprite(&lt;span style="color:#2b91af;"&gt;Texture2D&lt;/span&gt; nuevaTextura, &lt;span style="color:#2b91af;"&gt;Vector2&lt;/span&gt; nuevaPosicion, &lt;span style="color:#2b91af;"&gt;Vector2&lt;/span&gt; nuevoTamano, &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Vector2&lt;/span&gt; nuevoTamanoPantalla, &lt;span style="color:#2b91af;"&gt;Vector2&lt;/span&gt; nuevaVelocidad)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.textura = nuevaTextura;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.posicion = nuevaPosicion;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.tamano = nuevoTamano;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.tamanoVentana = nuevoTamanoPantalla;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.velocidad = nuevaVelocidad;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Mover()&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;//&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;verificamos los casos en los que el objeto sale de pantalla&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:green;font-size:8pt;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;// derecha&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (posicion.X + tamano.X + velocidad.X &amp;gt; tamanoVentana.X)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;velocidad = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Vector2&lt;/span&gt;(-velocidad.X, velocidad.Y);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;//&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;izquierda&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (posicion.X + velocidad.X &amp;lt; 0)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;velocidad = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Vector2&lt;/span&gt;(-velocidad.X, velocidad.Y);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;//&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;arriba&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (posicion.Y + velocidad.Y &amp;lt; 0)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;velocidad = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Vector2&lt;/span&gt;(velocidad.X, -velocidad.Y);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;//&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;abajo&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (posicion.Y + tamano.Y + velocidad.Y &amp;gt; tamanoVentana.Y)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;velocidad = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Vector2&lt;/span&gt;(velocidad.X, -velocidad.Y);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-ansi-language:EN-GB;mso-no-proof:yes;" lang="EN-GB"&gt;posicion += velocidad;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-ansi-language:EN-GB;mso-no-proof:yes;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-ansi-language:EN-GB;mso-no-proof:yes;" lang="EN-GB"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-ansi-language:EN-GB;mso-no-proof:yes;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Draw(&lt;span style="color:#2b91af;"&gt;SpriteBatch&lt;/span&gt; spriteBatch)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-ansi-language:EN-GB;mso-no-proof:yes;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-ansi-language:EN-GB;mso-no-proof:yes;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;spriteBatch.Draw(&lt;span style="color:blue;"&gt;this&lt;/span&gt;.textura, &lt;span style="color:blue;"&gt;this&lt;/span&gt;.posicion, &lt;span style="color:#2b91af;"&gt;Color&lt;/span&gt;.White);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-ansi-language:EN-GB;mso-no-proof:yes;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-no-proof:yes;"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;span style="font-size:8pt;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Times New Roman;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Verdana;font-size:9pt;"&gt;Bien ahora simplemente hemos de modificar la case Game1.cs&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Verdana;font-size:9pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Verdana;font-size:9pt;"&gt;1.- Generar un atributo : cfSprite mySprite;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Verdana;font-size:9pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Verdana;font-size:9pt;"&gt;2.- Establecer el tama&amp;ntilde;o de la ventana en el constructor ( game1() )&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Times New Roman;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:green;font-size:8pt;mso-no-proof:yes;"&gt;//establecemos el tamano de la pantalla&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-no-proof:yes;"&gt;graphics.PreferredBackBufferWidth = 800;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-no-proof:yes;"&gt;graphics.PreferredBackBufferHeight = 600;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Times New Roman;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Verdana;font-size:9pt;"&gt;3.- &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;Instanciamos el sprite en el metodo LoadContent()&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;" lang="EN-GB"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:#2b91af;font-size:8pt;mso-ansi-language:EN-GB;mso-no-proof:yes;" lang="EN-GB"&gt;Vector2&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-ansi-language:EN-GB;mso-no-proof:yes;" lang="EN-GB"&gt; windowSize = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Vector2&lt;/span&gt;(graphics.PreferredBackBufferWidth, graphics.PreferredBackBufferHeight);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-ansi-language:EN-GB;mso-no-proof:yes;" lang="EN-GB"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-ansi-language:EN-GB;mso-no-proof:yes;" lang="EN-GB"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:8pt;mso-ansi-language:EN-GB;mso-no-proof:yes;" lang="EN-GB"&gt;this&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-ansi-language:EN-GB;mso-no-proof:yes;" lang="EN-GB"&gt;.mySprite = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;cfSprite&lt;/span&gt;(Content.Load&amp;lt;&lt;span style="color:#2b91af;"&gt;Texture2D&lt;/span&gt;&amp;gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;pelota&amp;quot;&lt;/span&gt;),&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-ansi-language:EN-GB;mso-no-proof:yes;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Vector2&lt;/span&gt;.Zero, &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Vector2&lt;/span&gt;(80f, 80f),&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-ansi-language:EN-GB;mso-no-proof:yes;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;windowSize, &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Vector2&lt;/span&gt;(3, 1)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-ansi-language:EN-GB;mso-no-proof:yes;" lang="EN-GB"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-no-proof:yes;"&gt;);&lt;/span&gt;&lt;span style="font-size:8pt;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Times New Roman;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Verdana;font-size:9pt;"&gt;4.- A&amp;ntilde;adir en el m&amp;eacute;todo Update la llamada para que se mueva el sprite&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Times New Roman;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:8pt;mso-no-proof:yes;"&gt;this&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-no-proof:yes;"&gt;.mySprite.Mover();&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Verdana;font-size:9pt;"&gt;5.- A&amp;ntilde;adir en el metodo Draw&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-ansi-language:EN-GB;mso-no-proof:yes;" lang="EN-GB"&gt;spriteBatch.Begin(&lt;span style="color:#2b91af;"&gt;SpriteBlendMode&lt;/span&gt;.AlphaBlend);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:8pt;mso-ansi-language:EN-GB;mso-no-proof:yes;" lang="EN-GB"&gt;this&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-ansi-language:EN-GB;mso-no-proof:yes;" lang="EN-GB"&gt;.mySprite.Draw(spriteBatch);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-ansi-language:EN-GB;mso-no-proof:yes;" lang="EN-GB"&gt;spriteBatch.End();&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:EN-GB;mso-no-proof:yes;" lang="EN-GB"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Verdana;font-size:9pt;"&gt;6.- Asegurarnos de descargar los recursos como siempre&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Times New Roman;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:8pt;mso-ansi-language:EN-GB;mso-no-proof:yes;" lang="EN-GB"&gt;this&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-ansi-language:EN-GB;mso-no-proof:yes;" lang="EN-GB"&gt;.mySprite.textura.Dispose();&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:8pt;mso-ansi-language:EN-GB;mso-no-proof:yes;" lang="EN-GB"&gt;spriteBatch.Dispose();&lt;/span&gt;&lt;span style="font-size:8pt;mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="mso-ansi-language:EN-GB;" lang="EN-GB"&gt;&lt;span style="font-family:Times New Roman;font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Verdana;font-size:9pt;"&gt;Bien ya lo tenemos, si ejecutamos veremos una pelota de tenis rebotando por la pantalla del juego, adjunto el c&amp;oacute;digo fuente para que lo puedan examinar.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;img border="0" src="http://geeks.ms/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/cfouz/pelota_5F00_Move.JPG" alt="" /&gt;(Por favor, visita la web para ver este medio)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=154933" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/cfouz/archive/tags/XNA/default.aspx">XNA</category></item><item><title>Gráficos 2D , mi primer Sprite</title><link>http://geeks.ms/blogs/cfouz/archive/2009/08/28/gr-225-ficos-2d-mi-primer-sprite.aspx</link><pubDate>Fri, 28 Aug 2009 11:31:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:154913</guid><dc:creator>Carlos Fouz</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/cfouz/rsscomments.aspx?PostID=154913</wfw:commentRss><comments>http://geeks.ms/blogs/cfouz/archive/2009/08/28/gr-225-ficos-2d-mi-primer-sprite.aspx#comments</comments><description>&lt;p&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;Empecemos como siempre por un poco de teor&amp;iacute;a para situarnos y poder m&amp;aacute;s adelante aplicar los conocimientos a la practica para asentarlos definitivamente.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;Un &lt;strong&gt;sprite&lt;/strong&gt; es un tipo de mapa de bits dibujados en la pantalla del ordenador, es decir, una imagen en 2 dimensiones que puede ser manipulada independientemente del escenario del juego. Esta imagen puede contener &amp;aacute;reas transparentes para mostrar una imagen que no sea rectangular a la vista del usuario.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;Evidentemente la animaci&amp;oacute;n del sprite se genera modificando su posici&amp;oacute;n en pantalla, al llamar al m&amp;eacute;todo Draw del objeto y gracias a XNA Framework nos ahorraremos de borrar la posici&amp;oacute;n anterior del sprite.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;strong&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;Sistema de coordenadas 2D&lt;/span&gt;&lt;/strong&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;. En un modelo en dos dimensiones tenemos las coordenadas X,Y para situar nuestro sprite. Funciona exactamente igual que un eje de coordenadas pero con la caracter&amp;iacute;stica que el punto (0,0) es la parte superior izquierda de la pantalla.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;Aqu&amp;iacute; os pongo un ejemplo grafico :&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/cfouz/2D-coordenadas.gif"&gt;&lt;img border="0" src="http://geeks.ms/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/cfouz/2D-coordenadas.gif" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;Para poder dibujar un sprite en pantalla utilizaremos el objeto &lt;strong&gt;SpriteBatch&lt;/strong&gt; del namespace Microsoft.Xna.Framework.Graphics. Ref. &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.graphics.spritebatch.aspx"&gt;http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.graphics.spritebatch.aspx&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;Dentro de este objeto tenemos m&amp;eacute;todos como el Draw para a&amp;ntilde;adir un sprite a renderizar o el DrawString para a&amp;ntilde;adir una cadena de texto a renderizar.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;Nos centraremos ene l m&amp;eacute;todo Draw, el cual podemos ver que esta sobrecargado y dispone de diferentes formas de llamarlo. Por ejemplo cogemos los par&amp;aacute;metros Texture2D, Vector2 (ser&amp;aacute; la posici&amp;oacute;n del sprite en pantalla) i Color.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;Para hacer una orientaci&amp;oacute;n a objetos crearemos una clase que se llame cfSprite con los atributos textura y posici&amp;oacute;n que asignaremos en el constructor por ejemplo. Tambi&amp;eacute;n generaremos un m&amp;eacute;todo Draw que recibir&amp;aacute; por par&amp;aacute;metro un objeto SpriteBatch e invocar&amp;aacute; a su m&amp;eacute;todo Draw pas&amp;aacute;ndole los atributos.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="EN-GB" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:EN-GB;"&gt;using Microsoft.Xna.Framework.Graphics;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;using Microsoft.Xna.Framework;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="EN-GB" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:EN-GB;"&gt;namespace cfDemo&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="EN-GB" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:EN-GB;"&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="EN-GB" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:EN-GB;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;class cfSprite&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="EN-GB" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:EN-GB;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="EN-GB" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:EN-GB;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;public Texture2D textura { get; set; }&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="EN-GB" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:EN-GB;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;public Vector2 posicion { get; set; }&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="EN-GB" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:EN-GB;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="EN-GB" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:EN-GB;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;public cfSprite (Texture2D nuevaTextura , Vector2 nuevaPosicion){&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;textura&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;= nuevaTextura;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;posicion = nuevaPosicion;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;public void Draw(SpriteBatch spriteBatch)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;spriteBatch.Draw(this.texture, this.position, Color.White);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;Bien ya disponemos una clase con la que podemos generar todos los sprites que deseemos. &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;Ahora lo que necesitamos es una imagen para nuestro sprite, por ejemplo podemos buscar una pelota en bing.com y guardarnos el fichero. Para a&amp;ntilde;adir este fichero como recurso de nuestro proyecto es tan f&amp;aacute;cil como hacer copiar del fichero y en la carpeta &amp;ldquo;content&amp;rdquo; de nuestro proyecto hacer pegar!, tambi&amp;eacute;n tiene la opci&amp;oacute;n haciendo click con el bot&amp;oacute;n derecho sobre la carpeta content.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;Para cargar un sprite nos iremos a la clase &lt;strong&gt;Game1.cs&lt;/strong&gt; y realizaremos las siguientes modificaciones :&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;1.- Generar un atributo : cfSprite mySprite;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;2.- A&amp;ntilde;adir en el m&amp;eacute;todo LoadContent()&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-indent:35.4pt;text-align:justify;"&gt;&lt;span lang="EN-GB" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:EN-GB;"&gt;// Instanciar nuestro sprite&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="EN-GB" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:EN-GB;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;mySprite = new cfSprite(Content.Load&amp;lt;Texture2D&amp;gt;(&amp;quot;pelota&amp;quot;), new Vector2(0f, 0f));&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="EN-GB" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:EN-GB;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;Bien analicemos un poco esta l&amp;iacute;nea :&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt 36pt;text-indent:-18pt;text-align:justify;mso-list:l0 level1 lfo1;tab-stops:list 36.0pt;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-fareast-font-family:Verdana;mso-bidi-font-family:Verdana;mso-ansi-language:ES;"&gt;&lt;span style="mso-list:Ignore;"&gt;-&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;Para cargar el fichero es tan simple como Content.Load&amp;lt;Texture2D&amp;gt;(&amp;quot;pelota&amp;quot;) donde pelota es el nombre que tenemos en el explorador de la soluci&amp;oacute;n, podemos ver que no hace falta poner la extensi&amp;oacute;n f&amp;iacute;sica del fichero para cargarlo.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt 18pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt 36pt;text-indent:-18pt;text-align:justify;mso-list:l0 level1 lfo1;tab-stops:list 36.0pt;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-fareast-font-family:Verdana;mso-bidi-font-family:Verdana;mso-ansi-language:ES;"&gt;&lt;span style="mso-list:Ignore;"&gt;-&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;Para establecer la posici&amp;oacute;n, (0,0) en este caso, podemos pasarle los valores de tipo float. Tambi&amp;eacute;n podemos utilizar la constante Vector2.Zero.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;3.- A&amp;ntilde;adir en el m&amp;eacute;todo Draw&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="EN-GB" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:EN-GB;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;spriteBatch.Begin(SpriteBlendMode.AlphaBlend); //si nuestro sprite tiene transparencies&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="EN-GB" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:EN-GB;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;mySprite.Draw(spriteBatch);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="EN-GB" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:EN-GB;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;spriteBatch.End();&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="EN-GB" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:EN-GB;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;4.- A&amp;ntilde;adir en el m&amp;eacute;todo UnloadContent()&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-indent:35.4pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;mySprite.texture.Dispose(); //para liberar los recursos&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;text-align:justify;"&gt;&lt;span lang="ES" style="font-size:9pt;font-family:Verdana;mso-bidi-font-family:Arial;mso-ansi-language:ES;"&gt;Bien ya podemos ejecutar y maravillarnos con lo buenos que somos :D jejeje, bien pr&amp;oacute;ximamente le daremos movimiento ( simplemente es actualizar su posici&amp;oacute;n dentro del bucle del programa ) e intentaremos gestionar colisiones.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=154913" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/cfouz/archive/tags/XNA/default.aspx">XNA</category></item><item><title>Iniciandonos en XNA</title><link>http://geeks.ms/blogs/cfouz/archive/2009/08/27/iniciandonos-en-xna.aspx</link><pubDate>Thu, 27 Aug 2009 11:22:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:154841</guid><dc:creator>Carlos Fouz</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/cfouz/rsscomments.aspx?PostID=154841</wfw:commentRss><comments>http://geeks.ms/blogs/cfouz/archive/2009/08/27/iniciandonos-en-xna.aspx#comments</comments><description>&lt;p&gt;
&lt;div&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;Antes de ponernos a programar como locos creo que lo mejor es entender un poco que nos genere el visual Studio cuando seleccionamos un nuevo proyecto tipo XNA.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;Program.cs&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt; : Contiene el Main de nuestro proyecto , instancia el juego (game class) y llama a su m&amp;eacute;todo Run().&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;static class Program&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;static void Main(string[] args)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;using (Game1 game = new Game1())&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;game.Run();&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;Viendo el c&amp;oacute;digo podemos apreciar que le podemos pasar par&amp;aacute;metros por l&amp;iacute;nea de comandos a nuestro main i que utilizar el using para definir el &amp;aacute;mbito final del cual el objeto se destruye, es decir, llamara a su m&amp;eacute;todo dispose autom&amp;aacute;ticamente.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;Game1.cs&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt; : Clase que hereda de Microsoft.Xna.Framework.Game i nos proporciona una serie de m&amp;eacute;todos para inicializar nuestro juego, as&amp;iacute; como el bucle principal que controla el juego.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;Atributos de la clase&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;:&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;GraphicsDeviceManager graphics;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;Este objeto es el handler para la capa de gr&amp;aacute;ficos, es decir, el objeto que utilizaremos para manejar la configuraci&amp;oacute;n de la tarjeta grafica. Ref. &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.graphicsdevicemanager.aspx"&gt;http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.graphicsdevicemanager.aspx&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;SpriteBatch spriteBatch;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;Este objeto es usado para dibujar texto e im&amp;aacute;genes en 2D, entraremos en m&amp;aacute;s profundidad en otros post pero para quien baja m&amp;aacute;s r&amp;aacute;pido que yo ( cosa no muy dif&amp;iacute;cil ) aqu&amp;iacute; tiene la referencia de MSDN&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.graphics.spritebatch.aspx"&gt;http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.graphics.spritebatch.aspx&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;M&amp;eacute;todos de la clase&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;:&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;- Constructor :&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;public Game1()&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;graphics = new GraphicsDeviceManager(this);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Content.RootDirectory = &amp;quot;Content&amp;quot;;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;Podemos observar que se instancia el objeto Graphics (atributo de la clase ) i que se asigna la carpeta Content que vemos en el explorador del proyecto como el directorio ra&amp;iacute;z donde guardaremos todos los contenidos del juego, es decir, sonidos, gr&amp;aacute;ficos, modelos 3d o efectos&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;A esto se le llama Content Pipeline i es una de las cosas m&amp;aacute;s interesantes que nos aporta XNA ya que nos facilita la carga de recursos, si quer&amp;eacute;is m&amp;aacute;s informaci&amp;oacute;n aqu&amp;iacute; hay un buen post &lt;a href="http://juank.black-byte.com/xna-content-pipeline/"&gt;http://juank.black-byte.com/xna-content-pipeline/&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;Para una aplicaci&amp;oacute;n Windows podemos establecer el tama&amp;ntilde;o de la pantalla en el constructor con el siguiente c&amp;oacute;digo :&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;this.graphics.PreferredBackBufferWidth = 800;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;this.graphics.PreferredBackBufferHeight = 600;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;Tambi&amp;eacute;n tenemos la opci&amp;oacute;n this.graphics.IsFullScreen para establecer true (pantalla completa) o false.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;- Initialize :&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;protected override void Initialize()&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;// TODO: Add your initialization logic here&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;base.Initialize();&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;Este m&amp;eacute;todo se lanza cuando desde el main se llama al m&amp;eacute;todo Run del objeto Game. Dentro de este m&amp;eacute;todo inicializaremos cualquier cosa que no sea recursos gr&amp;aacute;ficos, los cuales es mejor inicializarlos en el m&amp;eacute;todo LoadContent.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;- LoadContent &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;protected override void LoadContent()&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;// TODO: load content&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;Como hemos comentado anteriormente, aqu&amp;iacute; es el lugar indicado para cargar los recursos gr&amp;aacute;ficos.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;- UnloadContent&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;protected override void UnloadContent()&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;// &lt;span&gt;&amp;nbsp;&lt;/span&gt;Free the previously alocated resources&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;En este metodo descargaremos los recursos cargados, por ejemplo mySprite.texture.Dispose();&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;- Bucle del juego&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;Bien todos sabemos que el coraz&amp;oacute;n de todo juego es un bucle que actualizar los c&amp;aacute;lculos de los objetos en funci&amp;oacute;n de las posiciones y de los inputs del usuario, redibujar la pantalla y tiene una condici&amp;oacute;n de salida que finaliza el juego ( el usuario pulsa salir, ha muerto o ha ganado ).&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;Xna nos proporciona b&amp;aacute;sicamente dos m&amp;eacute;todos para gestionar esto, que son Update y Draw :&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;protected override void Update(GameTime gameTime)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;// Allows the game to exit&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;this.Exit();&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;// TODO: Add your update logic here&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;base.Update(gameTime);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;Por defecto nos pone una l&amp;iacute;nea para controlar el GamePad de la Xbox, pero como yo no tengo la Xbox en los futuros ejemplos cambiare todo a control de teclado Windows. El par&amp;aacute;metro gameTime es importante para la l&amp;oacute;gica del juego como veremos m&amp;aacute;s adelante. Ref. &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.game.update.aspx"&gt;http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.game.update.aspx&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;protected override void Draw(GameTime gameTime)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;graphics.GraphicsDevice.Clear(Color.CornflowerBlue);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;base.Draw(gameTime);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;En este m&amp;eacute;todo es donde se pintan los sprites o gestionamos lo que deseemos a nivel de render de objetos por pantalla. En este c&amp;oacute;digo he puesto por ejemplo que borre la pantalla y ponga un color azul de fondo. Ref. &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.game.draw.aspx"&gt;http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.game.draw.aspx&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;Bien hemos hecho un vistazo a una estructura b&amp;aacute;sica de un proyecto de XNA para entender la l&amp;oacute;gica de la programaci&amp;oacute;n antes de ponernos a &amp;ldquo;jugar&amp;rdquo;, Resumiendo un poco esta l&amp;oacute;gica seria :&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;Main&lt;span&gt;&amp;nbsp; &lt;/span&gt;(program.cs) &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Constructor &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;(game1.cs) &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Initialize() &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;LoadContent() &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Run()&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Update()&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Draw()&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;UnloadContent()&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9pt;font-family:Verdana;" lang="ES"&gt;Fin del programa&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:Verdana;" lang="ES"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;

&lt;/p&gt;

&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=154841" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/cfouz/archive/tags/XNA/default.aspx">XNA</category></item><item><title>Start again</title><link>http://geeks.ms/blogs/cfouz/archive/2009/08/27/start-again.aspx</link><pubDate>Thu, 27 Aug 2009 11:21:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:154840</guid><dc:creator>Carlos Fouz</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/cfouz/rsscomments.aspx?PostID=154840</wfw:commentRss><comments>http://geeks.ms/blogs/cfouz/archive/2009/08/27/start-again.aspx#comments</comments><description>&lt;p&gt;

&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES" style="font-size:10pt;"&gt;Bueno aqu&amp;iacute; estamos otra vez despu&amp;eacute;s una parada considerable.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES" style="font-size:10pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES" style="font-size:10pt;"&gt;Actualmente considero que no tengo nivel suficiente como para postear cosas interesantes sobre programaci&amp;oacute;n de software de gesti&amp;oacute;n ya que no me dedico a ello, por lo que no lo voy ha hacer m&amp;aacute;s. Por el contrario, actualmente empiezo a tener tiempo libre en mi vida personal por lo que me estoy empezando a mirar XNA.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES" style="font-size:10pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES" style="font-size:10pt;"&gt;Aunque mi nivel es inicial sobre el tema, ir&amp;eacute; aprendiendo sobre el y posteando las pocas cosas interesantes que realice. Para empezar me centrare todo en 2D hasta que lo domine, para despu&amp;eacute;s empezar a ver el 3D (de aqu&amp;iacute; a mucho seguro ;p&lt;span&gt;&amp;nbsp; &lt;/span&gt;jejeje ).&lt;/span&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://geeks.ms/aggbug.aspx?PostID=154840" width="1" height="1"&gt;</description></item><item><title>Fouz Blog End.</title><link>http://geeks.ms/blogs/cfouz/archive/2008/03/13/fouz-blog-end.aspx</link><pubDate>Thu, 13 Mar 2008 08:36:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:80538</guid><dc:creator>Carlos Fouz</dc:creator><slash:comments>13</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/cfouz/rsscomments.aspx?PostID=80538</wfw:commentRss><comments>http://geeks.ms/blogs/cfouz/archive/2008/03/13/fouz-blog-end.aspx#comments</comments><description>&lt;p&gt;Pues si , hasta aquí hemos llegado :D. He intentado mantener el blog aunque actualmente no me dedique a la informática pero ya ha llegado el momento de apartarme del camino definitivamente.&lt;/p&gt;
&lt;p&gt;Actualmente mi nivel técnico no me permite publicar cosas interesantes o novedosas en la red y personalmente no quiero contribuir a rellenar la red de “basura” por lo que he decidido eliminar el blog a finales de este mes.&lt;/p&gt;
&lt;p&gt;En el tiempo que me dedique, espero haber ayudado a alguien en su andanza por el mundo .net. &lt;/p&gt;
&lt;p&gt;Muchos recuerdos a todos! Bye bye!&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;img src="http://geeks.ms/photos/cfouz/images/80536/original.aspx" border="0" alt="" /&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://geeks.ms/aggbug.aspx?PostID=80538" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/cfouz/archive/tags/Off-topic/default.aspx">Off-topic</category></item><item><title>Sudoku en Assembler</title><link>http://geeks.ms/blogs/cfouz/archive/2008/01/15/sudoku-en-assembler.aspx</link><pubDate>Tue, 15 Jan 2008 17:47:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:63942</guid><dc:creator>Carlos Fouz</dc:creator><slash:comments>17</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/cfouz/rsscomments.aspx?PostID=63942</wfw:commentRss><comments>http://geeks.ms/blogs/cfouz/archive/2008/01/15/sudoku-en-assembler.aspx#comments</comments><description>&lt;p&gt;Pues sí... partiendo de un código base de la &lt;a class="" href="http://www.uoc.edu/portal/catala/index5.html"&gt;uoc&lt;/a&gt; he hecho un Sudoku en assembler, el código esta comentado en catalán porqué estoy muy perro para traducirlo, pero prometo colgar un articulo en canaldotnet traducido y aumentado el código con un tiempo para acabar el sudoku (cuando tenga tiempo libre).&lt;/p&gt;
&lt;p&gt;La intención es hacer un sudoku, donde la tecla ‘q’ permite salir, las teclas ‘j’,’k’,’l’,’i’ hacen de cursor para moverse por el tablero, los números para escribir el numero y el espacio para eliminarlo.&lt;br /&gt;&lt;img src="http://geeks.ms/photos/cfouz/images/63933/original.aspx" border="0" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;La aplicación ha de detectar el final de la partida y también en cada casilla vacía ha de indicar al usuario los números que puede introducir.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://geeks.ms/photos/cfouz/images/63934/original.aspx" border="0" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Yo no soy un experto en assembler ni mucho menos, por lo que el código puede ser un poco “cutre” para uno que sepa mucho o no tan eficiente como otro, pero bueno me lo pase muy bien haciéndolo :D&lt;/p&gt;
&lt;p&gt;Para ver el código formateado&amp;nbsp;yo recomiendo el programa &lt;a class="" href="http://www.context.cx/"&gt;ConText&amp;nbsp;&lt;/a&gt;&amp;nbsp;que es freeware.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://geeks.ms/photos/cfouz/images/63943/original.aspx" border="0" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Código:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre&gt;;SuDoKu
;Carlos A. Fouz Rodríguez (base - UOC)

.model small         ;modell de memòria SMALL
.stack 1024

DOSSERVICE  EQU  21H	; serveis DOS
BIOSSERVICE EQU  10H	; serveis BIOS

.data 
 Board db &amp;#39;   - S U D O K U -  &amp;#39; ;Tauler de joc que es mostra a l&amp;#39;inici del programa
        db &amp;#39;  1 2 3 4 5 6 7 8 9 &amp;#39;
        db &amp;#39; ÉÍÍÍÍÍËÍÍÍÍÍËÍÍÍÍÍ»&amp;#39;
        db &amp;#39;1º ³ ³ º ³ ³ º ³ ³ º&amp;#39;
        db &amp;#39; ºÄÅÄÅÄºÄÅÄÅÄºÄÅÄÅÄº&amp;#39;
        db &amp;#39;2º ³ ³ º ³ ³ º ³ ³ º&amp;#39;
        db &amp;#39; ºÄÅÄÅÄºÄÅÄÅÄºÄÅÄÅÄº&amp;#39;
        db &amp;#39;3º ³ ³ º ³ ³ º ³ ³ º&amp;#39;
        db &amp;#39; ÌÍÍÍÍÍÎÍÍÍÍÍÎÍÍÍÍÍ¹&amp;#39;
        db &amp;#39;4º ³ ³ º ³ ³ º ³ ³ º&amp;#39;
        db &amp;#39; ºÄÅÄÅÄºÄÅÄÅÄºÄÅÄÅÄº&amp;#39;
        db &amp;#39;5º ³ ³ º ³ ³ º ³ ³ º&amp;#39;
        db &amp;#39; ºÄÅÄÅÄºÄÅÄÅÄºÄÅÄÅÄº&amp;#39;
        db &amp;#39;6º ³ ³ º ³ ³ º ³ ³ º&amp;#39;
        db &amp;#39; ÌÍÍÍÍÍÎÍÍÍÍÍÎÍÍÍÍÍ¹&amp;#39;
        db &amp;#39;7º ³ ³ º ³ ³ º ³ ³ º&amp;#39;
        db &amp;#39; ºÄÅÄÅÄºÄÅÄÅÄºÄÅÄÅÄº&amp;#39;
        db &amp;#39;8º ³ ³ º ³ ³ º ³ ³ º&amp;#39;
        db &amp;#39; ºÄÅÄÅÄºÄÅÄÅÄºÄÅÄÅÄº&amp;#39;
        db &amp;#39;9º ³ ³ º ³ ³ º ³ ³ º&amp;#39;
        db &amp;#39; ÌÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍ¹&amp;#39;
        db &amp;#39; º                 º&amp;#39;
        db &amp;#39; ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ¼&amp;#39;
        

  ;Matriu 9x9 amb els valors inicials ; Possible solució
  Sudoku  db &amp;#39;123456789&amp;#39; ; 123456789
  	  db &amp;#39;456789123&amp;#39; ; 456789123
  	  db &amp;#39;789123456&amp;#39; ; 789123456 
  	  db &amp;#39;9123456  &amp;#39; ; 912345678
  	  db &amp;#39;345678   &amp;#39; ; 345678912
  	  db &amp;#39;67891    &amp;#39; ; 678912345
  	  db &amp;#39;8912     &amp;#39; ; 891234567
  	  db &amp;#39;234    9 &amp;#39; ; 234567891
  	  db &amp;#39;567      &amp;#39; ; 567891234

  ;Matriu 9x9 on posarem els números
  Play   db &amp;#39;         &amp;#39;
  	 db &amp;#39;         &amp;#39;
  	 db &amp;#39;         &amp;#39;
  	 db &amp;#39;         &amp;#39;
  	 db &amp;#39;         &amp;#39;
  	 db &amp;#39;         &amp;#39;
  	 db &amp;#39;         &amp;#39;
  	 db &amp;#39;         &amp;#39;
  	 db &amp;#39;         &amp;#39;


  State     db 1  ; 0: Sortir, hem pitjat la tecla &amp;#39;q&amp;#39; per sortir o s&amp;#39;ha acabat el temps.
                  ; 1: Continuem jugant.
                  ; 2: Guanyador, hem omplert la matriu Play correctament.

  ;Variables per indicar la posició del cursor dins la matriu Sodoku i Play.
  ;No les utilitzeu per indicar la posici¢ del cursor a la pantalla.
  RowCur    db 4  ; [0-8] Val 0:Fila 1,    val 8:Fila 9    (posició inicial:4 = Fila 5)
  ColCur    db 4  ; [0-8] Val 0:Columna 1, val 8:Column 9  (posició inicial:4 = Columna 5)

  RowIni    db ?  ;Fila inicial pel procediment CheckPos
  ColIni    db ?  ;Columna inicial pel procediment CheckPos
  BoxIni    db ?  ;Casella on comença la regió on està la posició que estem mirant.
 
  ;Variables amb els missatges que sortiran per pantalla.
  MsgHelpVacio  db &amp;#39;          &amp;#39;,&amp;#39;$&amp;#39;
  MsgExit   db &amp;#39;Oh! No has pogut acabar!&amp;#39;,&amp;#39;$&amp;#39;
  MsgWinner db &amp;#39;Enhorabona!  Has acabat.&amp;#39;,&amp;#39;$&amp;#39;
  Numeros db &amp;#39;0$1$2$3$4$5$6$7$8$9$&amp;#39;


.code


;*******************************************************************************
; Esborra la pantalla completament escrivint espais en blanc
; Parametres d&amp;#39;entrada: Cap
; Parametres de sortida: Cap
;*******************************************************************************
ClearScreen:

  push AX
  push BX
  push CX
  push DX

  ;Inicialització per posicionar el cursor
  mov bh,00h        ;pàgina
  mov dh,00h        ;fila inicial
  mov dl,00h        ;columna inicial
  mov ah,02h        ;servei per posicionar el cursor
  int BIOSSERVICE

  mov bh,00h        ;pàgina
  mov bl,07h        ;atribut
  mov cx,2000       ;80*25nombre de caràcters a escriure
  mov al,&amp;#39; &amp;#39;        ;caràcter
  mov ah,09h        ;servei per escriure caràcter.
  int BIOSSERVICE

  pop DX
  pop CX
  pop BX
  pop AX

ret

;*******************************************************************************
; Mostra el Tauler de joc sense Dades, és a dir, mostra la matriu Board
; Paràmetres d&amp;#39;entrada: Cap
; Paràmetres de sortida: Cap
;*******************************************************************************
PrintBoard:

  push AX
  push BX
  push CX
  push DX
  push SI

  ;Inicialitzar registres
  mov bh,00h        ;pagina  
  mov dh,00         ;fila inicial a pantalla on mostraurem el Tauler.
  mov dl,24         ;columna inicial a pantalla on mostrarem el Tauler.

  mov bl,07h        ;atribut
  mov cx,1          ;escriurem 1 caràcters cada cop
  
  mov si,0          ;índex per accedir al tauler
  
LoopPB:
  mov ah,02h        ;servei per posicionar el cursor
  int BIOSSERVICE

  mov al,BOARD[SI]  ;caràcter
  mov ah,09h        ;servei per escriure caràcter.
  int BIOSSERVICE

  inc si            ;incrementem l&amp;#39;índex per accedir a les dades
		    ;Actualitzem posició del cursor (fila i columna)
  inc dl            ;columna 
  cmp dl, 44
  jl LoopPB
  mov dl, 24
  inc dh            ;fila
  cmp dh, 23 
  jl LoopPB

  ;Posar el cursor a la posició inicial (5,5)
  mov al,2          ;multipliquem per 2 per saltarnos les ratlles del tauler.
  mul RowCur
  mov dh,al
  add dh,03         ;03: fila a pantalla de la posició (1,1)
  mov al,2
  mul ColCur
  mov dl,al
  add dl,26         ;26: columna a pantalla de la posició (1,1)

  mov ah,02h        ;servei per posicionar el cursor
  mov bh,00h        ;pagina
  int BIOSSERVICE

  pop SI
  pop DX
  pop CX
  pop BX
  pop AX

  ret

;*******************************************************************************
; Verifica quins números no es poden posar en una casella de la matriu Play
;
; Paràmetres d&amp;#39;entrada: SI: Index dins la matriu Play (posició que volem mirar)
; SI: pot pendre valors de 0 a 80.
;
; Paràmetres de sortida: AX: Registre on el bit &amp;#39;i&amp;#39; indica que en aquella 
; posició NO podem posar-hi el nombre &amp;#39;i&amp;#39;. AX (bit 15 - bit 0) només utilitzarem
; del (bit 9 - bit 1). EX: 0000 0000 0001 0110 vol dir que a la posició indicada 
; per SI de la matriu Play no podem posar els nombres 1,2 i 4
;*******************************************************************************
CheckPos:

  push BX
  push CX
  push DX
  push SI

  mov ch,Play[SI]   ;agafem la posició que estem verificant, la guardem a la pila
  mov Play[SI],&amp;#39; &amp;#39;  ;i la posem en blanc per no verificar-la.

  mov bl,9          ;Determinal la posició inicial de la fila i columna.
  mov AX,SI         ;SI és la posició dins la matriu Play.
  	    
  div bl            ;dividim SI entre 9
  mov ColIni,ah     ;AH:(reste):columna, AL(quocient): fila
  mov RowIni,al     ;RowIni: fila inicial dins de Play.
                    ;ColIni: columna inicial dins de Play.
  
  mov bl,3          ;Calculem la casella on comanença el quadrant de la posició  
  mov AX,0          ;que estem mirant.
  mov al,ColIni         
  div bl            ;AL(quocient): 
  mov ah,0          ;AH:(reste): no el volem.
  mul bl            
  mov cl,al  

  mov AX,0          
  mov al,RowIni     
  div bl            ;AL(quocient): 
  mov ah,0          ;AH:(reste): no ens cal.
  mov bl,27
  mul bl
  add al,cl
  mov BoxIni,al  

  mov AX,0
  mov al,RowIni
  mov bl,9
  mul bl            ;multipliquem AL(fila)*9
  mov SI,AX         ;SI: Índex de la matriu Play
  add AX,9
  mov BX,AX         ;BX: Índex de la matriu Play on hem de parar.
  mov AX,0          ;AX: Màscara on acumulem els numeros que anem trobant.

CheckRow:
  
  cmp Play[SI],&amp;#39; &amp;#39;
  je ContRow

  mov DX,0000000000000001b  ;DX: Màscara on indicarem el número trobat
  mov Cl,Play[SI]
  sub cl,48
  shl DX,cl          ;posem el 1 a la posició del número que tenim a Play.
  or  AX,DX          ;actualitzarem la màscara AX.
  
ContRow:  
  add SI,1
  cmp SI,BX
  jl  CheckRow


  mov BX,0          
  mov bl,ColIni         
  mov SI,BX         ;SI: Índex de la matriu Play
  
CheckColumm:

  cmp Play[SI],&amp;#39; &amp;#39;
  je ContColumm

  mov DX,0000000000000001b  ;DX: Màscara on indicarem el número trobat
  mov Cl,Play[SI]
  sub cl,48
  shl DX,cl         ;posem el 1 a la posició del número que tenim a Play.
  or  AX,DX          ;actualitzarem la màscara AX.
  
ContColumm:  
  add SI,9
  cmp SI,81
  jl  CheckColumm

  mov BX,0          
  mov bl,BoxIni         
  mov SI,BX         ;SI: Índex de la matriu Play on comença el quadrant.
  add BX,20         ;BX: Índex de la matriu Play on hem de parar. 

CheckBox:

  cmp Play[SI],&amp;#39; &amp;#39;
  je ContBox1

  mov DX,0000000000000001b  ;DX: Màscara on indicarem el número trobat
  mov Cl,Play[SI]
  sub cl,48
  shl DX,cl          ;posem el 1 a la posició del número que tenim a Play.
  or  AX,DX          ;actualitzarem la màscara AX.
  
ContBox1:
  add SI,1

  cmp Play[SI],&amp;#39; &amp;#39;
  je ContBox2

  mov DX,0000000000000001b  ;DX: Màscara on indicarem el número trobat
  mov Cl,Play[SI]
  sub cl,48
  shl DX,cl          ;posem el 1 a la posició del número que tenim a Play.
  or  AX,DX          ;actualitzarem la màscara AX.
  
ContBox2:  
  add SI,1

  cmp Play[SI],&amp;#39; &amp;#39;
  je ContBox3

  mov DX,0000000000000001b  ;DX: Màscara on indicarem el número trobat
  mov Cl,Play[SI]
  sub cl,48
  shl DX,cl          ;posem el 1 a la posició del número que tenim a Play.
  or  AX,DX          ;actualitzarem la màscara AX.
  
ContBox3:

  add SI,7
  cmp SI,BX
  jl  CheckBox

  pop SI

  mov Play[SI],ch  ;restaurem el valor de la matriu Play.

  pop DX
  pop CX
  pop BX
  ;AX té la màscara amb el números que no es poden posar a la posició SI de Play

  ret

;*******************************************************************************
; Copia els valors inicials de la matriu Sudoku a la matriu Play.
; Paràmetres d&amp;#39;entrada: Cap
; Paràmetres de sortida: Cap
;*******************************************************************************
IniPlay:

  mov si,0            ;Índex per anar copiant la informació.
 
  ;Iniciem el bucle per fer la cópia.
LoopIP:

  mov cl,Sudoku[SI]   ;Agafem el valor de la matriu Sudoku
  mov Play[SI],cl     ;Posem el valor a la matriu Play.

  inc si              ;incrementem l&amp;#39;índex per accedir a la següent posició
  cmp si, 81          ;matriu de 9x9 posicions (0-80)
  jl LoopIP
  ret

;*******************************************************************************
; Mostra quins números es poden escriura a la casella del cursor.
; S&amp;#39;ha de tenir en compte que si és casella d&amp;#39;un dels valors inicals no s&amp;#39;hi pot
; escriure res.
; Paràmetres d&amp;#39;entrada: Cap
; Paràmetres de sortida: Cap
;*******************************************************************************
PrintHelp:

  ;eliminem missatge de ajuda anterior pintant la variable MsgHelpVacio
  mov dh,21             ;fila
  mov dl,26             ;columna
  push DX
  lea dx,MsgHelpVacio
  push DX
  call PrintMessage
  add sp,4

  ;POSICIO CURSOR AL ARRAY : Multipliquem per 9 el RowCur + el valor del ColCur
  mov ax,9
  mul RowCur
  mov dx,0
  mov dl,ColCur
  add ax, dx
  mov si, ax         ; si indica la posicio del digit al array

  ;controlem que aquesta posicio es una de las que pot escriure l&amp;#39;usuari
  cmp SUDOKU[ si ],&amp;#39; &amp;#39;
  jne noHelp

  Call CheckPos      ; si es el parametre d´entrada que indica la posicio en l´array
                     ; Paràmetres de sortida: AX: Registre on el bit &amp;#39;i&amp;#39; indica que en aquella
                     ; posició NO podem posar-hi el nombre &amp;#39;i&amp;#39;. AX (bit 15 - bit 0) només utilitzarem
                     ; del (bit 9 - bit 1). EX: 0000 0000 0001 0110 vol dir que a la posició indicada
                     ; per SI de la matriu Play no podem posar els nombres 1,2 i 4
  jmp helpCheck1

noHelp:
  mov ax, 0000001111111110b ;si no pot escriure generem la nostre propia AX
helpCheck1:
  ;AX tenim els possibles valors
  mov bl,26             ;columna on escriurem el missatge
  ;verifiquem si pot escriure el 1
  mov dx, ax
  and dx, 0000000000000010b
  cmp dx, 0000000000000010b
  je helpCheck2
  mov dh,21             ;fila
  mov dl,bl             ;columna
  push DX
  lea dx,Numeros[ 2 ]
  push DX
  call PrintMessage     ;pintem el numero 1
  add sp,4
  inc bl                ;incrementem columna per escriure més numeros

helpCheck2:
  ;verifiquem si pot escriure el 2
  mov dx, ax
  and dx, 0000000000000100b
  cmp dx, 0000000000000100b
  je helpCheck3
  mov dh,21            ;fila
  mov dl,bl            ;columna
  push DX
  lea dx,Numeros[ 4 ]
  push DX
  call PrintMessage    ;pintem el numero 2
  add sp,4
  inc bl               ;incrementem columna per escriure més numeros

helpCheck3:
  ;verifiquem si pot escriure el 3
  mov dx, ax
  and dx, 0000000000001000b
  cmp dx, 0000000000001000b
  je helpCheck4
  mov dh,21            ;fila
  mov dl,bl            ;columna
  push DX
  lea dx,Numeros[ 6 ]
  push DX
  call PrintMessage    ;pintem el numero 3
  add sp,4
  inc bl               ;incrementem columna per escriure més numeros

helpCheck4:
  ;verifiquem si pot escriure el 4
  mov dx, ax
  and dx, 0000000000010000b
  cmp dx, 0000000000010000b
  je helpCheck5
  mov dh,21            ;fila
  mov dl,bl            ;columna
  push DX
  lea dx,Numeros[ 8 ]
  push DX
  call PrintMessage    ;pintem el numero 4
  add sp,4
  inc bl               ;incrementem columna per escriure més numeros

helpCheck5:
  ;verifiquem si pot escriure el 5
  mov dx, ax
  and dx, 0000000000100000b
  cmp dx, 0000000000100000b
  je helpCheck6
  mov dh,21            ;fila
  mov dl,bl            ;columna
  push DX
  lea dx,Numeros[ 10 ]
  push DX
  call PrintMessage    ;pintem el numero 5
  add sp,4
  inc bl               ;incrementem columna per escriure més numeros

helpCheck6:
  ;verifiquem si pot escriure el 6
  mov dx, ax
  and dx, 0000000001000000b
  cmp dx, 0000000001000000b
  je helpCheck7
  mov dh,21            ;fila
  mov dl,bl            ;columna
  push DX
  lea dx,Numeros[ 12 ]
  push DX
  call PrintMessage
  add sp,4             ;pintem el numero 6
  inc bl               ;incrementem columna per escriure més numeros

helpCheck7:
  ;verifiquem si pot escriure el 7
  mov dx, ax
  and dx, 0000000010000000b
  cmp dx, 0000000010000000b
  je helpCheck8
  mov dh,21            ;fila
  mov dl,bl            ;columna
  push DX
  lea dx,Numeros[ 14 ]
  push DX
  call PrintMessage    ;pintem el numero 7
  add sp,4
  inc bl               ;incrementem columna per escriure més numeros

helpCheck8:
  ;verifiquem si pot escriure el 8
  mov dx, ax
  and dx, 0000000100000000b
  cmp dx, 0000000100000000b
  je helpCheck9
  mov dh,21            ;fila
  mov dl,bl            ;columna
  push DX
  lea dx,Numeros[ 16 ]
  push DX
  call PrintMessage    ;pintem el numero 8
  add sp,4
  inc bl               ;incrementem columna per escriure més numeros

helpCheck9:
  ;verifiquem si pot escriure el 9
  mov dx, ax
  and dx, 0000001000000000b
  cmp dx, 0000001000000000b
  je finHelp
  mov dh,21            ;fila
  mov dl,bl            ;columna
  push DX
  lea dx,Numeros[ 18 ]
  push DX
  call PrintMessage    ;pintem el numero 9
  add sp,4
  inc bl               ;incrementem columna per escriure més numeros

finHelp:
  ret

;*******************************************************************************
; Actualitza el contingut del Tauler de Joc amb les dades de la matriu indicada
; per BX. Si a la matriu Sudoku hi ha un espai en blanc en aquella posició s&amp;#39;ha
; d&amp;#39;escriure el número de diferent color.
; Paràmetres d&amp;#39;entrada: BX: Adreça inicial de les dades a mostrar en el tauler.
; Paràmetres de sortida: Cap
;*******************************************************************************
UpdateBoard:
  push AX
  push CX
  push DX
  push SI

  push BX           ; el tractem a apart perque ‚s on tenim l&amp;#39;adreca de la matriu.
                    ; el guardem perque tambe‚ l&amp;#39;hem d&amp;#39;utilitzar en els serveis BIOS

  ;Inicialitzar registres
  mov bh,00h        ;pagina
  mov dh,03         ;fila inicial on podem escriure en el tauler.
  mov dl,26         ;columna inicial on podem escriure en el tauler.

  mov cx,1          ;escriurem 1 caràcters cada cop

  mov si,0          ;índex per a les dades de Sudoku

LoopUB:
  mov ah,02h        ;servei per posicionar el cursor
  int BIOSSERVICE

  pop BX
  mov al,[BX][SI]  ;caràcter
  push BX

  ;Si a la matriu un espai en blanc s&amp;#39;ha d&amp;#39;escriure de diferent color.
  cmp Sudoku[SI],&amp;#39; &amp;#39;
  je diferentColor

  mov bl,09h        ;atribut (blau mar¡ amb intensitat)
  jmp printUpdate

diferentColor:
  mov bl,0Bh        ;atribut (blau clar amb intensitat)

printUpdate:
  mov ah,09h        ;servei per escriure caràcter.
  mov bh,00h        ;pagina
  int BIOSSERVICE

  inc si            ;incrementem l&amp;#39;índex per accedir a les dades
  
  ;Actualitzem posició del cursor (fila i columna)
  inc dl            ;columna ( dos salts per les linees del tauler )
  inc dl
  ;en cas que la columna sigui 44 a la seguent fila (fila + 2)e init la columna a 26
  cmp dl, 44        
  jl LoopUB
  mov dl, 26        ;columna inicial on podem escriure en el tauler.
  inc dh            ;fila  ( dos salts per les linees del tauler )
  inc dh
  cmp dh, 20        ;en cas que la fila sigui 20 ja hem finalitzat d&amp;#39;escriure la matriu.
  jl LoopUB

  ;Posar el cursor a la posició inicial (5,5)
  mov al,2          ;multipliquem per 2 per saltarnos les ratlles del tauler.
  mul RowCur
  mov dh,al
  add dh,03         ;03: fila a pantalla de la posició (1,1)
  mov al,2
  mul ColCur
  mov dl,al
  add dl,26         ;26: columna a pantalla de la posició (1,1)

  mov ah,02h        ;servei per posicionar el cursor
  mov bh,00h        ;pagina
  int BIOSSERVICE

  pop SI
  pop DX
  pop CX
  pop BX
  pop AX

  ret

;*******************************************************************************
; Llegim una tecla utilitzant el servei 08h de les crides al DOS. 
; Segons la tecla llegida cridarem al procediment corresponent.
;  [‘i’,’j’,’k’ o ’l’] cridar al procediment MoveCursor
;  [‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’,‘8’,‘9’ o ‘’] cridar al procediment ChangeNum
;  ‘q’ posa Estat=0.
; (per la lectura de teclat utilitzeu només crides als serceis del DOS).
; Paràmetres d&amp;#39;entrada: Cap
; Paràmetres de sortida: Cap
;*******************************************************************************
ReadKey:

  mov ah, 07h		; demanem un digit
  int DOSSERVICE	

  ;SORTIDA DEL PROGRAMA
  cmp al,&amp;#39;q&amp;#39;
  je SalidaReadKey
  cmp al,&amp;#39;Q&amp;#39;
  je SalidaReadKey

  ;MOVIMIENT DEL CURSOR
  cmp al,&amp;#39;i&amp;#39;
  je MoveCursor
  cmp al, &amp;#39;I&amp;#39;
  je MoveCursor
  cmp al,&amp;#39;j&amp;#39;
  je MoveCursor
  cmp al, &amp;#39;J&amp;#39;
  je MoveCursor
  cmp al,&amp;#39;k&amp;#39;
  je MoveCursor
  cmp al, &amp;#39;K&amp;#39;
  je MoveCursor
  cmp al,&amp;#39;l&amp;#39;
  je MoveCursor
  cmp al, &amp;#39;L&amp;#39;
  je MoveCursor

  ;PETICIO DE CANVI DE NUMERO
  cmp al, &amp;#39; &amp;#39;
  je ChangeNum
  cmp al, 49    ;si el codigo ASCI de la tecla es menor a 49 (&amp;#39;1&amp;#39;) finalitzar
  jb finReadKey
  cmp al, 57    ;si el codigo ASCI de la tecla es mayor a 49 (&amp;#39;9&amp;#39;) finalitzar
  jg finReadKey
  jmp ChangeNum ; si arriba aqui es que correspon a 1-9


  ;si no es cap tecla d´aquestes finalitzar en finReadKey
  jmp finReadKey

SalidaReadKey:
  mov State , 0   ;actualitzar State perque el bucle del main finalitzi execució

finReadKey:

  ret

;*******************************************************************************
; Segons la direcció indicada per AL i actualitza RowCur i ColCur 
; segons la direcció que s’hagi seleccionat. No s&amp;#39;ha de posicionar el cursor a 
; pantalla, hi un altre subrutina per fer-ho.
; Paràmetres d&amp;#39;entrada: AL conté la direcció del moviment (&amp;#39;i&amp;#39;, &amp;#39;j&amp;#39;, &amp;#39;k&amp;#39; o &amp;#39;l&amp;#39;)
; Paràmetres de sortida: Cap
;*******************************************************************************
MoveCursor:

  ;seleccionar el moviment que ha demanat el user.
  cmp al,&amp;#39;i&amp;#39;
  je moveCursorUp
  cmp al,&amp;#39;I&amp;#39;
  je moveCursorUp
  cmp al,&amp;#39;k&amp;#39;
  je moveCursorDown
  cmp al,&amp;#39;K&amp;#39;
  je moveCursorDown
  cmp al,&amp;#39;j&amp;#39;
  je moveCursorLeft
  cmp al,&amp;#39;J&amp;#39;
  je moveCursorLeft
  cmp al,&amp;#39;l&amp;#39;
  je moveCursorRight
  cmp al,&amp;#39;L&amp;#39;
  je moveCursorRight

moveCursorUp:        ; moviment cap amunt
  cmp RowCur,0
  je finMoveCursor
  dec RowCur
  jmp finMoveCursor
moveCursorDown:      ; moviment cap abaix
  cmp RowCur,8
  je finMoveCursor
  inc RowCur
  jmp finMoveCursor
moveCursorLeft:      ; moviment cap esquerre
  cmp ColCur,0
  je finMoveCursor
  dec ColCur
  jmp finMoveCursor
moveCursorRight:     ; moviment cap dreta
  cmp ColCur,8
  je finMoveCursor
  inc ColCur

finMoveCursor:
  call PosCurScreen

  ret

;*******************************************************************************
; Escriu / Esborra Número
; Posar el caràcter a la matriu Play. No s&amp;#39;ha de mostrar res.
; Només s&amp;#39;ha de posar el caràcter si no és un número de la matriu Sodoku.
; (la matriu actualitzada es mostrarà en un altre subrutina)
; Paràmetres d&amp;#39;entrada: AL conté el símbol que volem escriure a la matriu.
; Paràmetres de sortida: Cap
;*******************************************************************************
ChangeNum:

  push dx
  push ax

  ;POSICIO CURSOR AL ARRAY : Multipliquem per 9 el RowCur + el valor del ColCur
  mov ax,9
  mul RowCur
  mov dx,0
  mov dl,ColCur
  add ax, dx
  mov si, ax  ;si indica la posicio del digit al array

  cmp Sudoku[si],&amp;#39; &amp;#39;  ;verifiquem que a aquesta posicio el user pot escriure
  jne noPotChangeNum

  pop ax
  mov Play[si], al   ;guardem el valor a la array PLAY
  push ax

noPotChangeNum:
  pop ax
  pop dx

  ret

;*******************************************************************************
; Verifica si hem omplert totes les caselles (no hi ha cap posició de la matriu 
; Play que sigui un espai en blanc) i que els valors escrits siguin correctes 
; si és així canvia State a 2 (Guanyador).
; Paràmetres d&amp;#39;entrada: Cap
; Paràmetres de sortida: Cap
;*******************************************************************************
CheckEnd:
push ax
push cx
   ;initzialitzem valors
   mov si,0
   mov cx,0
   mov bx,0
bucleCheckEnd:              ; recorrem totes les posicions

   cmp SUDOKU[si],&amp;#39; &amp;#39; ;mirem si es una posicio que el user pot escriure, sino no la validem
   jne noCheckPos
   
   mov ax, si         ;guardem si en ax perque s´utilitza dintre de CheckEndPos

   call CheckEndPos

   cmp bx,1                ;verifiquem el retorn de CheckEndPos ( bx )
   jne noCheckPos
   mov cx,bx                ;si dona alguna possicio incorrecte la guardem

noCheckPos:
   inc si                  ;incrementem index
   cmp si,81
   jne bucleCheckEnd

   cmp cx,0                ; si val 0 es tot correcte
   jne errorcheckend
   mov State,2             ;Actualitzem State a 2 perque el bucle del main finalitzi execucio

errorcheckend:

pop cx
pop ax
  ret

;*******************************************************************************
; Verifica si el valor indicat per parametre (Posicio) es correcte o no
; Paràmetres d&amp;#39;entrada: ax indica la posicio del digit al array
; Paràmetres de sortida: bx 1 si no validem la posicio com a correcte
;*******************************************************************************
CheckEndPos:
  push cx

  mov si, ax         ; si indica la posicio del digit al array

  Call CheckPos      ; si es el parametre d´entrada que indica la posicio en l´array
                     ; Paràmetres de sortida: AX: Registre on el bit &amp;#39;i&amp;#39; indica que en aquella
                     ; posició NO podem posar-hi el nombre &amp;#39;i&amp;#39;. AX (bit 15 - bit 0) només utilitzarem
                     ; del (bit 9 - bit 1). EX: 0000 0000 0001 0110 vol dir que a la posició indicada
                     ; per SI de la matriu Play no podem posar els nombres 1,2 i 4


  ;verifiquem si ha d&amp;#39;escriure el 1
  mov dx, ax
  and dx, 0000000000000010b
  cmp dx, 0000000000000010b
  je CheckEndCheck2
  cmp Play[si],&amp;#39;1&amp;#39;
  je CheckEndCheck2
  mov bx, 1          ;si no es correcte actualitzem a 1 bx

CheckEndCheck2:
  ;verifiquem si pot escriure el 2
  mov dx, ax
  and dx, 0000000000000100b
  cmp dx, 0000000000000100b
  je CheckEndCheck3
  cmp Play[si],&amp;#39;2&amp;#39;
  je CheckEndCheck3
  mov bx, 1          ;si no es correcte actualitzem a 1 bx

CheckEndCheck3:
  ;verifiquem si pot escriure el 3
  mov dx, ax
  and dx, 0000000000001000b
  cmp dx, 0000000000001000b
  je CheckEndCheck4
  cmp Play[si],&amp;#39;3&amp;#39;
  je CheckEndCheck4
  mov bx, 1          ;si no es correcte actualitzem a 1 bx

CheckEndCheck4:
  ;verifiquem si pot escriure el 4
  mov dx, ax
  and dx, 0000000000010000b
  cmp dx, 0000000000010000b
  je CheckEndCheck5
  cmp Play[si],&amp;#39;4&amp;#39;
  je CheckEndCheck5
  mov bx, 1          ;si no es correcte actualitzem a 1 bx

CheckEndCheck5:
  ;verifiquem si pot escriure el 5
  mov dx, ax
  and dx, 0000000000100000b
  cmp dx, 0000000000100000b
  je CheckEndCheck6
  cmp Play[si],&amp;#39;5&amp;#39;
  je CheckEndCheck6
  mov bx, 1          ;si no es correcte actualitzem a 1 bx

CheckEndCheck6:
  ;verifiquem si pot escriure el 6
  mov dx, ax
  and dx, 0000000001000000b
  cmp dx, 0000000001000000b
  je CheckEndCheck7
  cmp Play[si],&amp;#39;6&amp;#39;
  je CheckEndCheck7
  mov bx, 1          ;si no es correcte actualitzem a 1 bx

CheckEndCheck7:
  ;verifiquem si pot escriure el 7
  mov dx, ax
  and dx, 0000000010000000b
  cmp dx, 0000000010000000b
  je CheckEndCheck8
  cmp Play[si],&amp;#39;7&amp;#39;
  je CheckEndCheck8
  mov bx, 1          ;si no es correcte actualitzem a 1 bx

CheckEndCheck8:
  ;verifiquem si pot escriure el 8
  mov dx, ax
  and dx, 0000000100000000b
  cmp dx, 0000000100000000b
  je CheckEndCheck9
  cmp Play[si],&amp;#39;8&amp;#39;
  je CheckEndCheck9
  mov bx, 1          ;si no es correcte actualitzem a 1 bx

CheckEndCheck9:
  ;verifiquem si pot escriure el 9
  mov dx, ax
  and dx, 0000001000000000b
  cmp dx, 0000001000000000b
  je finalCheckEnd
  cmp Play[si],&amp;#39;9&amp;#39;
  je finalCheckEnd
  mov bx, 1          ;si no es correcte actualitzem a 1 bx

finalCheckEnd:
  pop cx
  ret

;*******************************************************************************
; Mostra un missatge a la posició indicada de la pantalla.
; L&amp;#39;adreça del missatge i la posició es passen per la pila. 
; Paràmetres d&amp;#39;entrada: Adreça del missatge [bp+4] i posició (fila,columna) [bp+6]
; Paràmetres de sortida: Cap
;*******************************************************************************
PrintMessage:
     push bp
     mov bp,sp
     push ax           ;salvem a la pila els registres que utilitzem
     push bx
     push dx
     push si

     mov ah,02h        ;servei per posicionar el cursor
     mov bh,00h        ;p…gina
     mov dx,[bp+6]     ;Posem a dh la fila i a dl la columna per escriure
     int BIOSSERVICE

     mov dx,[bp+4]	    ;posem l&amp;#39;adre‡a del missatge al registre DX.
     mov ah,09h
     int DOSSERVICE

     pop si            ;restaurem els registre amb els valor inicials.
     pop dx
     pop bx
     pop ax
     pop bp
  ret

;*******************************************************************************
; Posiciona cursor a la pantalla en base a les variables RowCur i ColCur.
; Paràmetres d&amp;#39;entrada: Cap
; Paràmetres de sortida: cap 
;*******************************************************************************
PosCurScreen:
  push ax
  push dx
  push bx

  ;RowCur  [0-8] Val 0:Fila 1,    val 8:Fila 9    (posició inicial:4 = Fila 5)
  ;control de la fila
  mov al,2          ;multipliquem per 2 per saltarnos les ratlles del tauler.
  mul RowCur        ;el resultat a al
  add al, 3         ;augmentem 3 a al que es el valor incial per aribar a la primera fila del tauler.
  mov dh,al

   ;ColCur  [0-8] Val 0:Columna 1, val 8:Column 9  (posició inicial:4 = Columna 5)
   ;control de la columna
  mov al,2          ;multipliquem per 2 per saltarnos les ratlles del tauler.
  mul ColCur        ;el resultat a al
  add al, 26        ;augmentem 26 a al que es el valor incial per aribar a la primera columna del tauler.
  mov dl,al

  mov bh,00h        ;pàgina
  mov ah,02h        ;servei per posicionar el cursor
  int BIOSSERVICE

errorPosCurScreen:

  pop ax
  pop dx
  pop bx

  ret


;*******************************************************************************
; Programa Principal
;*******************************************************************************
Main:
  STARTUPCODE

  Call ClearScreen   ; netegem la pantalla

  Call PrintBoard    ; mostra el tauler de jov buit ( mostra les línies del tauler)

  push BX
  lea BX , Sudoku   ; cargem les dades de inici del sudoku de l&amp;#39;array Sudoku2
  Call UpdateBoard   ; mostra es numeros que es donen inicialment ( matriu Sudoku )
  pop BX

  Call IniPlay       ; initialitzem la matriu Play amb els valors inicials de la matriu Sudoku


bucle:

  Call PrintHelp      ;Mostrar l&amp;#39;ajuda

  call PosCurScreen   ;Posicionar el cursor al tauler

  call ReadKey        ;llegir una tecla i fer els canvis corresponents a la matriu de dades

  push BX
  lea BX , Play
  Call UpdateBoard   ;Actualitzar el Tauler mostra es numeros  matriu play
  pop BX
    
  call CheckEnd;Verificar si el tauler ja s´ha complert completament

;CONDICIO SORTIDA DEL BUCLE ( STATE != 1 )
cmp State, 1
je bucle

  ;mirem el motiu de la sortida del bucle i mostrem missatge.
  mov dh,24             ;fila
  mov dl,23             ;columna
  push DX

  cmp State, 0
  je stateMessage               
  lea dx,MsgWinner     ; 2: Guanyador, hem omplert la matriu Play correctament.
  jmp fin

stateMessage:
  lea dx,MsgExit       ; 0: Sortir, hem pitjat la tecla &amp;#39;q&amp;#39; per sortir o s&amp;#39;ha acabat el temps.

fin:
  push DX
  call PrintMessage    ;pintem per pantalla el missatge de finalització d&amp;#39;execució
  add sp,4
  EXITCODE 0           ;finalitzem l&amp;#39;execució

end Main
&lt;/pre&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=63942" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/cfouz/archive/tags/Off-topic/default.aspx">Off-topic</category></item><item><title>AJAXInterceptor 0.5 Beta</title><link>http://geeks.ms/blogs/cfouz/archive/2008/01/14/ajaxinterceptor-0-5-beta.aspx</link><pubDate>Mon, 14 Jan 2008 18:42:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:63679</guid><dc:creator>Carlos Fouz</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/cfouz/rsscomments.aspx?PostID=63679</wfw:commentRss><comments>http://geeks.ms/blogs/cfouz/archive/2008/01/14/ajaxinterceptor-0-5-beta.aspx#comments</comments><description>&lt;p&gt;Interesante herramienta de José Manuel Alarcón Aguín (MVP) para&amp;nbsp;convertir tus aplicaciones Web a AJAX sin escribir una sola línea de código... yo porque ya no me dedico que sino seguro merece la pena mirarla un poquillo.&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;&lt;font color="#000000" size="3"&gt;&amp;nbsp;&lt;img src="http://geeks.ms/photos/cfouz/images/63678/original.aspx" border="0" alt="" /&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;&lt;font color="#000000" size="3"&gt;Resumen de características&lt;/font&gt;&lt;/strong&gt;:&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT:0px;"&gt;
&lt;p align="justify"&gt;• AJAXificación de aplicaciones Web sin escribir código&lt;br /&gt;• Soporte de cualquier tecnología Web incluyendo ASP.NET, JSP, PHP, ASP 3.0...&lt;br /&gt;• En ASP.NET soporte cualquier tipo de postback: directos y por código.&lt;br /&gt;• Funciona en cualquier navegador moderno que soporte AJAX.&lt;br /&gt;• Soporte el envío cruzado de formularios, es decir, puedes enviar la información a otras páginas diferentes dentro del mismo dominio. Si todas las páginas de tu sitio tienen AJAXInterceptor incluido (por ejemplo porque lo metes en una Master Page o en una plantilla) puedes tener todo el sitio AJAXificado.&lt;br /&gt;• Respeta tus manejadores de evento de &lt;em&gt;onsubmit&lt;/em&gt;.&lt;br /&gt;• Soporta la historia del navegador de forma que tus usuarios pueden pulsar el botón &amp;quot;Atras&amp;quot; en el navegador y volver a la página anterior aunque la actual haya sido cargada con AJAX.&lt;br /&gt;• He incluido dos versiones del módulo:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;- AJAXInterceptor.js: comentado por completo. Útil para depurar apliaciones.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;- AJAXINterceptor_r.js: versión reducida de tamaño. Se descarga más rápido ya que sólo ocupa 2.6 kB. Es mejor usar esto en aplicaciones en producción.&lt;br /&gt;• Muestra y oculta automáticamente indicadores de progreso personalizados.&lt;br /&gt;• Soporta la cancelación de las peticiones.&lt;br /&gt;• Soporta la visualización personalizada de mensajes de error.&lt;br /&gt;• Soporta cualquier formulario que haya en una página (si hay varios).&lt;/p&gt;&lt;/blockquote&gt;
&lt;p dir="ltr" align="justify"&gt;Obviamente no es un sustituto de una API potente como ASP.NET AJAX de Microsoft, PHPLiveX o AJAX.NET, pero te permitirá añadir soporte AJAX a tus aplicaciones en unos segundos y sin escribir código. ¡Dale una oportunidad y pruébalo!&lt;/p&gt;
&lt;p dir="ltr" align="justify"&gt;Descargar: &lt;a href="http://www.jasoft.org/blog/ct.ashx?id=93ec5c64-7212-4f6e-b6db-b03a70ad9275&amp;amp;url=http%3a%2f%2fwww.jasoft.org%2fdescargas%2ffreeware%2fAJAXInterceptor.zip"&gt;&lt;font color="#000080"&gt;&lt;strong&gt;AJAXInterceptor 0.5 Beta&lt;/strong&gt;&lt;/font&gt;&lt;/a&gt;&amp;nbsp;(834 KB) ¡Freeware!&lt;/p&gt;
&lt;p dir="ltr" align="justify"&gt;Más información :&lt;/p&gt;
&lt;p dir="ltr" align="justify"&gt;&lt;a class="" href="http://geeks.ms/blogs/jalarcon/archive/2008/01/12/ajaxinterceptor-convierte-tus-aplicaciones-web-a-ajax-sin-escribir-una-sola-l-237-nea-de-c-243-digo.aspx"&gt;Blog Alarcon en geeks&lt;/a&gt;&lt;/p&gt;
&lt;p dir="ltr" align="justify"&gt;&lt;a class="" href="http://www.jasoft.org/blog/PermaLink,guid,93ec5c64-7212-4f6e-b6db-b03a70ad9275.aspx"&gt;Blog Alarcon en jasoft&lt;/a&gt; &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=63679" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/cfouz/archive/tags/asp.net/default.aspx">asp.net</category></item><item><title>ojo con el kit de phishing</title><link>http://geeks.ms/blogs/cfouz/archive/2008/01/10/ojo-con-el-kit-de-phishing.aspx</link><pubDate>Thu, 10 Jan 2008 08:48:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:62704</guid><dc:creator>Carlos Fouz</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/cfouz/rsscomments.aspx?PostID=62704</wfw:commentRss><comments>http://geeks.ms/blogs/cfouz/archive/2008/01/10/ojo-con-el-kit-de-phishing.aspx#comments</comments><description>&lt;p&gt;&lt;img src="http://geeks.ms/photos/cfouz/images/41904/original.aspx" border="0" alt="" /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;El phishing es un tipo de ataque ampliamente utilizado hoy día en Internet, y básicamente consiste en el envío de mensajes electrónicos engañosos que llevan a servidores fraudulentos, los que generalmente simulan pertenecer a conocidas instituciones financieras y bancarias.&lt;/p&gt;
&lt;p&gt;El objetivo en este caso, es intentar obtener datos de los usuarios, tales como número de tarjeta de crédito o sus claves de acceso PIN.&lt;/p&gt;
&lt;p&gt;Existen en Internet kits completos para que un novato monte su propio sitio falso y de ese modo obtenga réditos a costa de las víctimas que dejen allí sus datos. &lt;/p&gt;
&lt;p&gt;A simple vista, el kit resulta atractivo para cualquier estafador. Es fácil de implantar en cualquier servidor web que soporte PHP, y un único archivo de configuración, simplifica al delincuente novato, especificar una cuenta de correo electrónico para recibir los detalles de la información capturada.&lt;br /&gt;&lt;br /&gt;En adición a la solicitud de números de tarjetas de crédito y detalles de cuentas bancarias, un segundo formulario en el sitio phishing, solicita a las víctimas un desafío de preguntas y respuestas que puede ayudar al defraudador a tener acceso a los servicios financieros de la víctima.&lt;br /&gt;&lt;br /&gt;Sin embargo, mientras que el kit de phishing es fácil de utilizar, un componente de cifrado dentro de la carpeta, es utilizado para enviar una copia de los datos capturados a una dirección adicional de GMail, la cuál pertenece al autor del &amp;quot;paquete&amp;quot;.&lt;br /&gt;&lt;br /&gt;Esto no será evidente para la mayoría de los defraudadores que utilicen el kit, ya que el código en cuestión está hábilmente ofuscado, y no resulta sencillo de descodificar.&lt;br /&gt;&lt;br /&gt;Este tipo de engaño, es una táctica útil para cualquier defraudador que desee maximizar el número de ataques exitosos, dejando que otros sean los que hagan el trabajo de crear nuevos sitios de phishing, y de enviar los correos electrónicos falsos para capturar nuevas víctimas.&lt;br /&gt;&lt;br /&gt;Esto alivia al autor la carga de tener que dedicarle más tiempo a todos los aspectos de este tipo de ataques, o sea, encontrar sitios para alojar las páginas falsas, y el envío de cientos de miles de mensajes.&lt;br /&gt;&lt;br /&gt;Los novatos defraudadores, son quienes hacen el trabajo duro, beneficiando sin saberlo, al autor del kit.&lt;br /&gt;&lt;br /&gt;Así que si te crees muy listo, a parte que te van a engañar, recuerda que estas cometiendo un delito tipificado en el codigo penal, tanto si haces tu la estafa como si haces de mulero o scam que serán considerados coautores del delito.&lt;br /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=62704" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/cfouz/archive/tags/noticias+TIC/default.aspx">noticias TIC</category></item><item><title>Posters Tecnológicos Microsoft</title><link>http://geeks.ms/blogs/cfouz/archive/2008/01/10/posters-tecnol-243-gicos-microsoft.aspx</link><pubDate>Thu, 10 Jan 2008 08:36:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:62689</guid><dc:creator>Carlos Fouz</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/cfouz/rsscomments.aspx?PostID=62689</wfw:commentRss><comments>http://geeks.ms/blogs/cfouz/archive/2008/01/10/posters-tecnol-243-gicos-microsoft.aspx#comments</comments><description>&lt;p&gt;Venga que sabemos que son útiles y además son chulos :D&lt;/p&gt;
&lt;h4&gt;Developer&lt;/h4&gt;
&lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=255b8cf1-f6bd-4b55-bb42-dd1a69315833&amp;amp;displaylang=en" target="_blank"&gt;Microsoft® Visual Basic® 2008 Default Keybindings&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=E5F902A8-5BB5-4CC6-907E-472809749973&amp;amp;displaylang=en" target="_blank"&gt;Visual C# 2008 Default Keybindings&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=4411BBFC-0E3C-42B3-BD05-AF1D292C986F&amp;amp;displaylang=en" target="_blank"&gt;Visual C++ 2008 Default Keybindings&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://download.microsoft.com/download/e/7/9/e79cce22-b196-4b9f-9ea7-b1a21f5342e9/VCSharp_2005_color.pdf" target="_blank"&gt;Microsoft® Visual C#® 2005 Default Keybindings&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://download.microsoft.com/download/d/6/5/d65efda0-cf25-4720-8013-b3080586c5bb/VB_2005_color.pdf" target="_blank"&gt;Microsoft® Visual Basic® 2005 Default Keybindings&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://download.microsoft.com/download/4/d/f/4df9bbc1-0744-49ca-a4ad-456a395552ff/VC++_2005_color.pdf" target="_blank"&gt;Microsoft® Visual C++® 2005 Default Keybindings&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://download.microsoft.com/download/4/a/3/4a3c7c55-84ab-4588-84a4-f96424a7d82d/NET35_Namespaces_Poster_LORES.pdf" target="_blank"&gt;Microsoft .NET Framework 3.5 Commonly Used Types and Namespaces&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://download.microsoft.com/download/f/2/e/f2ecc2ad-c498-4538-8a2c-15eb157c00a7/SL_Map_FinalNET.png" target="_blank"&gt;Microsoft® Silverlight™ 1.1 Developer Reference Poster&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://download.microsoft.com/download/9/0/5/9051f53c-6ee2-4da0-84ce-185fe8920344/finalposterside-2.pdf" target="_blank"&gt;Smart Client Poster&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://download.microsoft.com/download/0/9/c/09cda3f2-6d3d-4082-aec5-9a62b7679ecf/2007OfficeDeveloperMap.pdf" target="_blank"&gt;Developer Map for the 2007 Microsoft® Office system&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://download.microsoft.com/download/0/9/c/09cda3f2-6d3d-4082-aec5-9a62b7679ecf/InfoPathObjectModelMap.pdf" target="_blank"&gt;Microsoft® Office InfoPath® 2007 Managed Object Model&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://download.microsoft.com/download/0/9/c/09cda3f2-6d3d-4082-aec5-9a62b7679ecf/WSS%20Platform.pdf" target="_blank"&gt;Developer Map for SharePoint® Products and Technologies&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;Platform&lt;/h4&gt;
&lt;p&gt;&lt;a href="http://download.microsoft.com/download/2/e/8/2e88c004-3b10-446f-9d5a-58af27deafc4/Windows%20Server%202008%20Active%20Directory%20Components.pdf" target="_blank"&gt;Windows Server 2008 Active Directory Feature Components&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://download.microsoft.com/download/2/e/8/2e88c004-3b10-446f-9d5a-58af27deafc4/Windows%20Server%202008%20Feature%20Components.pdf" target="_blank"&gt;Windows Server 2008 Feature Components&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://download.microsoft.com/download/6/c/d/6cdaf626-16f4-4773-8ae4-03cc4a010a82/TN_Poster_0304_06.pdf" target="_blank"&gt;Microsoft Windows Server 2003 Active Directory Component Jigsaw&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;BizApps&lt;/h4&gt;
&lt;p&gt;&lt;a href="http://download.microsoft.com/download/b/2/0/b20ed7c4-4c29-4e8c-8bce-02f3a7bc0071/ExchangePoster.pdf" target="_blank"&gt;Exchange Server 2007 Component Architecture&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://download.microsoft.com/download/f/f/b/ffb96cba-fc3e-476a-a27a-50d63d36d720/Exchange2007_EdgeTransportRoleArchitecture.pdf" target="_blank"&gt;Exchange Server 2007 Edge Transport Server Role Architecture&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://download.microsoft.com/download/f/f/b/ffb96cba-fc3e-476a-a27a-50d63d36d720/Exchange2007_HubTransportRoleArchitectureRTM.pdf" target="_blank"&gt;Exchange Server 2007 Hub Transport Server Role Architecture (RTM)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://download.microsoft.com/download/f/f/b/ffb96cba-fc3e-476a-a27a-50d63d36d720/Exchange2007_HubTransportRoleArchitectureSP1.pdf" target="_blank"&gt;Exchange Server 2007 Hub Transport Server Role Architecture (SP1)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://download.microsoft.com/download/d/d/4/dd486ea0-cbdf-4229-9748-de2b2db846e5/BizTalk_Server_2006_R2_Capabilities_Poster.pdf" target="_blank"&gt;BizTalk Server 2006 R2 Capabilities&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://download.microsoft.com/download/c/a/1/ca139e47-b991-4bf5-8506-015d45fd41fe/BizTalk_2006_R2_Runtime_Architecture_Poster.pdf" target="_blank"&gt;BizTalk Server 2006 R2 Runtime Architecture&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://download.microsoft.com/download/f/1/f/f1f63c14-7939-4446-a7df-8e0c46635bb1/BizTalkScaleOutConfigurations.pdf" target="_blank"&gt;BizTalk Server 2006 R2 Scale-Out Configurations&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://office.microsoft.com/search/redir.aspx?assetid=am101639721033&amp;amp;ctt=5&amp;amp;origin=ha101639841033" target="_blank"&gt;Upgrade Project Server with Windows SharePoint Services&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://office.microsoft.com/search/redir.aspx?assetid=am101639711033&amp;amp;ctt=5&amp;amp;origin=ha101639841033" target="_blank"&gt;Upgrade Project Server without Windows SharePoint Services&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://office.microsoft.com/search/redir.aspx?assetid=am102421321033" target="_blank"&gt;Upgrade large SharePoint Portal Server 2003 intranet portals to SharePoint Server 2007&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://office.microsoft.com/search/redir.aspx?assetid=am101639131033&amp;amp;ctt=5&amp;amp;origin=ha101639821033" target="_blank"&gt;Upgrade SharePoint Portal Server 2003 to SharePoint Server 2007&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;Others&lt;/h4&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://download.microsoft.com/download/8/2/b/82bc962d-b18d-4fb4-9476-225c9efddebd/2007OfficeArchitecture.xps" target="_blank"&gt;2007 Microsoft Office System Logical Architecture&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=30ac2c6c-b58c-437a-af63-03908890d6d0&amp;amp;DisplayLang=en" target="_blank"&gt;Project Server 2003 Setup Flow&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=DA8D5048-615E-43C0-AB31-8FB5DA70216B&amp;amp;displaylang=en" target="_blank"&gt;Microsoft CRM 3.0 Logical Database Diagrams&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=23637c9b-5779-43d4-a84c-2649f8a3e741&amp;amp;displaylang=en" target="_blank"&gt;Microsoft CRM 1.2 Logical Database Diagram&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://download.microsoft.com/download/1/a/6/1a624ccd-4bf5-4919-93c2-55106156a0e1/finalposterside-1.pdf" target="_blank"&gt;PnP Overview Poster&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://download.microsoft.com/download/8/4/d/84d3847d-48dc-4520-8930-4d3771480c62/soi%20reference%20architecture-alchemy%20runtime.zip" target="_blank"&gt;MSIT SOI System Poster&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://download.microsoft.com/download/8/4/d/84d3847d-48dc-4520-8930-4d3771480c62/soi%20reference%20architecture-alchemy%20runtime.zip"&gt;MSIT SOI Runtime Poster&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Microsoft .NET Framework 3.5 - Tipos y Namespaces más usados&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class="" href="http://download.microsoft.com/download/4/a/3/4a3c7c55-84ab-4588-84a4-f96424a7d82d/dotnet_poster_xps_large.xps"&gt;&lt;font color="#770000"&gt;Microsoft .NET Framework 3.5 - Tipos y Namespaces más usados (1.5 Mb) formato XPS&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class="" href="http://download.microsoft.com/download/4/a/3/4a3c7c55-84ab-4588-84a4-f96424a7d82d/dotnet_poster_xps_split.xps"&gt;&lt;font color="#770000"&gt;Microsoft .NET Framework 3.5 - Tipos y Namespaces más usados [cortado en trozos de tamaño A4] (1.8 Mb) formato XPS&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class="" href="http://download.microsoft.com/download/4/a/3/4a3c7c55-84ab-4588-84a4-f96424a7d82d/NET_35_Namespaces_Poster_JAN08.pdf"&gt;&lt;font color="#770000"&gt;Microsoft .NET Framework 3.5 - Tipos y Namespaces más usados - Enero 2008 (849 Kb) formato PDF&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class="" href="http://download.microsoft.com/download/4/a/3/4a3c7c55-84ab-4588-84a4-f96424a7d82d/NET35_Namespaces_Poster_Tiled_JAN08.pdf"&gt;&lt;font color="#770000"&gt;Microsoft .NET Framework 3.5 - Tipos&amp;nbsp;y Namespaces más usados [cortado en trozos de tamaño A4] (25.7 Mb) formato PDF&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class="" href="http://blogs.msdn.com/carloc/archive/2007/11/24/posters-posters-and-again-posters.aspx"&gt;Fuente&lt;/a&gt;&amp;nbsp;, &lt;a class="" href="http://geeks.ms/blogs/jorge/archive/2008/01/13/p-243-ster-de-microsoft-net-framework-3-5-tipos-y-namespaces-m-225-s-usados.aspx"&gt;fuente 3.5&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=62689" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/cfouz/archive/tags/.net+general/default.aspx">.net general</category><category domain="http://geeks.ms/blogs/cfouz/archive/tags/asp.net/default.aspx">asp.net</category><category domain="http://geeks.ms/blogs/cfouz/archive/tags/mundo+Microsoft/default.aspx">mundo Microsoft</category></item><item><title>'Robin', tu 'médico robot' en el Messenger </title><link>http://geeks.ms/blogs/cfouz/archive/2008/01/09/robin-tu-m-233-dico-robot-en-el-messenger.aspx</link><pubDate>Wed, 09 Jan 2008 13:11:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:62409</guid><dc:creator>Carlos Fouz</dc:creator><slash:comments>37</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/cfouz/rsscomments.aspx?PostID=62409</wfw:commentRss><comments>http://geeks.ms/blogs/cfouz/archive/2008/01/09/robin-tu-m-233-dico-robot-en-el-messenger.aspx#comments</comments><description>&lt;p&gt;Bueno la verdad que cuando he leido la noticia lo he visto un poco friki el tema pero bueno....&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/photos/cfouz/picture62410.aspx" target="_blank"&gt;&lt;/a&gt;&lt;img src="http://geeks.ms/photos/cfouz/images/62410/original.aspx" border="0" alt="" /&gt;&amp;nbsp;&amp;nbsp; &lt;img src="http://geeks.ms/photos/cfouz/images/62411/original.aspx" border="0" alt="" /&gt; 
&lt;p&gt;El &lt;strong&gt;Ministerio de Sanidad&lt;/strong&gt; y la empresa &lt;strong&gt;Microsoft&lt;/strong&gt; han creado a &lt;strong&gt;&amp;#39;Robin&amp;#39;&lt;/strong&gt;, un &lt;strong&gt;&amp;#39;médico robot&amp;#39;&lt;/strong&gt; al que los &lt;strong&gt;adolescentes&lt;/strong&gt; españoles podrán a partir de hoy agregar &amp;quot;como un contacto más&amp;quot; al Messenger y mantener con él una conversación &amp;quot;confidencial, privada y sin vergüenzas&amp;quot; sobre las dudas que puedan tener sobre enfermedades de trasmisión sexual o métodos anticonceptivos y sobre los riesgos de drogas como el tabaco o el alcohol &amp;quot;a través de un mensaje claro y natural hecha a su medida&amp;quot;. 
&lt;p&gt;Así presentaron hoy la nueva &amp;quot;herramienta sanitaria&amp;quot; por Internet el ministro del sector, Bernat Soria, la presidenta de Microsoft Ibérica, Rosa García, y el director del Instituto de Educación Secundaria (IES) Joaquín Rodrigo de Vicálvaro (Madrid), donde se celebró el acto con la presencia de un grupo de adolescentes. 
&lt;p&gt;El &amp;#39;médico robot&amp;#39;, cuyo público objetivo son los adolescentes entre 12 y 17 años de edad, contiene un total de 300 respuestas directas para las preguntas más habituales en materia sexual y sobre drogas como el alcohol o el tabaco. Este &amp;#39;doctor virtual&amp;#39; que podemos invitar al &lt;strong&gt;Messenger&lt;/strong&gt; en &lt;strong&gt;&amp;#39;robin@msc.es&amp;#39;&lt;/strong&gt; utiliza &amp;quot;un lenguaje natural&amp;quot; hecho &amp;quot;a medida de los jóvenes&amp;quot; pero no entiende el lenguaje abreviado que los adolescentes usan en la red o por el móvil. &lt;/p&gt;
&lt;p&gt;&lt;a class="" href="http://co.invertia.com/noticias/noticia.aspx?idNoticia=200801091257_EUP_20080109135622&amp;amp;idtel="&gt;Más información&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=62409" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/cfouz/archive/tags/mundo+Microsoft/default.aspx">mundo Microsoft</category><category domain="http://geeks.ms/blogs/cfouz/archive/tags/noticias+TIC/default.aspx">noticias TIC</category></item><item><title>Xbox el centro del hogar</title><link>http://geeks.ms/blogs/cfouz/archive/2008/01/09/xbox-el-centro-del-hogar.aspx</link><pubDate>Wed, 09 Jan 2008 13:03:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:62408</guid><dc:creator>Carlos Fouz</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/cfouz/rsscomments.aspx?PostID=62408</wfw:commentRss><comments>http://geeks.ms/blogs/cfouz/archive/2008/01/09/xbox-el-centro-del-hogar.aspx#comments</comments><description>&lt;p&gt;&lt;img src="http://geeks.ms/photos/jorge/images/272/original.aspx" border="0" alt="" /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;En un futuro se acabará esto de tener 200 mandos a distáncia, se unificarán funcionalidades en al xbox ( no estaria mal que pudiera encender otros dispositivos como tv, radio, etc en un futuro )&lt;/p&gt;
&lt;p&gt;Pero mirando más a la actualidad, Microsoft y BT hicieron pública ayer una alianza para convertir la consola de videojuegos Xbox 360 del gigante del software en un descodificador para la televisión digital. Los primeros equipos con estas prestaciones llegarán al mercado a mediados de este año. La operadora británica explicó que, con una única máquina, se podrán acceder a diferentes servicios desde distintos lugares de una misma casa.&lt;/p&gt;
&lt;p&gt;Además, Microsoft anunció ayer la firma de alianzas con Walt Disney, NBC Universal y Metro Goldwyn Mayer para la comercialización de sus contenidos a través de la tienda de contenidos de entretenimiento Xbox Live. En su discurso en la Feria de Electrónica de Consumo (CES) de Las Vegas, Bill Gates, fundador del gigante informático señaló que los usuarios de la Xbox 360 podrán comprar capítulos de series de televisión producidas por la ABC, canal televisivo de la empresa de Mickey Mouse, como Mujeres desesperadas, Anatomía de Grey o Perdidos, o tener acceso a títulos cinematográficos como El silencio de los corderos, Terminator o Rocky. Con el aumento de la oferta de contenidos, Microsoft busca aumentar la presión de Xbox Live sobre iTunes, la tienda online controlada por Apple.&lt;/p&gt;
&lt;p&gt;Gates anunció también una alianza con NBC por la que el canal de General Electric use en su web la tecnología Silverlight de Microsoft (rival del Flash de Adobe Systems) para poder ofrecer todos los contenidos de los juegos olímpicos de Pekín.&lt;/p&gt;
&lt;p&gt;El directivo, que este ejercicio se despedirá de la gestión de Microsoft, también tuvo palabras para el mundo del software y dijo que habrá aplicaciones que funcionarán no sólo en el ordenador, sino también vía internet, en el móvil, el coche, la televisión. Gates indicó que el mundo se dirige hacia la segunda &amp;#39;década digital&amp;#39; y anunció que Microsoft ha vendido 100 millones de copias de Windows Vista desde el lanzamiento en enero de 2007.&lt;/p&gt;
&lt;p&gt;Supongo que no tardará la competencia más directa ( PS3 ) en sacar algo similar.&lt;/p&gt;
&lt;p&gt;&lt;a class="" href="http://www.cincodias.com/articulo/empresas/Microsoft/BT/convierten/Xbox/descodificador/televisivo/cdssec/20080108cdscdiemp_22/Tes/"&gt;Más información&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=62408" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/cfouz/archive/tags/mundo+Microsoft/default.aspx">mundo Microsoft</category><category domain="http://geeks.ms/blogs/cfouz/archive/tags/noticias+TIC/default.aspx">noticias TIC</category><category domain="http://geeks.ms/blogs/cfouz/archive/tags/gadget/default.aspx">gadget</category></item><item><title>El último discurso de Bill Gates</title><link>http://geeks.ms/blogs/cfouz/archive/2008/01/09/el-250-ltimo-discurso-de-bill-gates.aspx</link><pubDate>Wed, 09 Jan 2008 12:51:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:62407</guid><dc:creator>Carlos Fouz</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/cfouz/rsscomments.aspx?PostID=62407</wfw:commentRss><comments>http://geeks.ms/blogs/cfouz/archive/2008/01/09/el-250-ltimo-discurso-de-bill-gates.aspx#comments</comments><description>La cola para asistir al último discurso de Bill Gates ha durado tres horas. 
&lt;p&gt;Gates se ha subido al escenario del CES en 11 ocasiones. Aquí anunció la Xbox, el Windows Vista, el TabletPC, los ordenadores ultraportátiles UMPC o los equipos Media Center,el TabletPC languidece, a los UMPC ni se los ve y el Media Center lo ha tenido que meter a la fuerza en el Windows Vista- pero aún así su visión, o la de Microsoft, tiene el poder de transformar a toda la industria de la informática.&lt;/p&gt;
&lt;p&gt;Siendo éste su último discurso (Gates dejará su puesto en Microsoft en julio para centrarse casi exclusivamente en su fundación) esperaba un anuncio sonado, algún producto o idea interesante. Gates, sin embargo, se ha limitado a constatar una obviedad: &amp;quot;en el futuro los dispositivos podrán acceder de forma continua, inalámbrica y transparente para el usuario a los datos de la red&amp;quot; y se ha pasado la hora y media de su intervención mostrando productos y servicios que ya se habían anunciado -como Surface o Windows Live-&lt;/p&gt;
&lt;p&gt;Lo mejor, como suele pasar todos los años, es el vídeo cómico que protagoniza el propio Bill Gates. Este año está montado como un documental del último día de Gates en Microsoft y la lista de cameos pondría los dientes largos a cualquier Late Night Show americano: Hillary Clinton, Barak Obama, Bono, Spielberg, George Clooney... Está en inglés pero merece la pena. Vean, vean:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;object height="355" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/HEWMC4usElM&amp;amp;rel=1"&gt;&lt;param name="wmode" value="transparent"&gt;
&lt;embed src="http://www.youtube.com/v/HEWMC4usElM&amp;amp;rel=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;p&gt;Gates se ha centrado en la buena marcha de Windows Vista -100 millones de usuarios-, Windows Live -420 millones de usuarios-, Xbox 360 -17,7 millones de consolas vendidas- y Xbox Live -10 millones de usuarios. El sistema Sync para vehículos que permite controlar el teléfono y el MP3 en el coche con la voz (bueno yo tengo un ford focus con este sistema i tiene algun fallo que otro porque si intentas grabar un nombre asociado a un telefono, por ejemplo &amp;quot;mama&amp;quot; , entiende que estas diciendo &amp;quot;cancelar&amp;quot; y cancela la ejecución... pero para reconocimientos de numeros si funciona perfectamente, esta bien el sistema pero por lo menos el mio aun tiene que mejorar.. una pena k no publiquen una api , alguna forma de conectarme y &amp;quot;jugetear&amp;quot;).Y por último un prototipo de una tecnología de reconocimiento de lugares y personas mediante la cámara del móvil.&lt;/p&gt;
&lt;p&gt;Buena suerte en la &lt;a class="" href="http://www.gatesfoundation.org/AboutUs/OurValues/GatesLetter/Localized/GatesLetter-Spanish.htm"&gt;fundacion gates&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class="" href="http://navegante2.elmundo.es/navegante/2008/01/07/gadgetoblog/1199696633.html"&gt;Más información&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=62407" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/cfouz/archive/tags/mundo+Microsoft/default.aspx">mundo Microsoft</category></item><item><title>Camisetas frikis</title><link>http://geeks.ms/blogs/cfouz/archive/2007/12/05/camisetas-frikis.aspx</link><pubDate>Wed, 05 Dec 2007 07:31:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:54909</guid><dc:creator>Carlos Fouz</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/cfouz/rsscomments.aspx?PostID=54909</wfw:commentRss><comments>http://geeks.ms/blogs/cfouz/archive/2007/12/05/camisetas-frikis.aspx#comments</comments><description>&lt;p&gt;&lt;img src="http://geeks.ms/photos/cfouz/images/54906/original.aspx" border="0" alt="" /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;En esta “wificamiseta” el logo se ilumina cuando encuentra redes Wi-Fi en los alrededores.Y lo mejor es que el “display” se puede despegar y colocar en cualquier otro soporte, como por ejemplo la bolsa donde lleves el portátil.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://geeks.ms/photos/cfouz/images/54907/original.aspx" border="0" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;La ecualiseta, en lugar de un estampado tradicional, lleva un auténtico ecualizador vúmetro del sonido ambiente, que se ilumina según el ritmo y la intensidad de la música. Lleva un pequeño micrófono en la parte inferior y, en contra de lo que pueda parecer, el panel luminoso es sumamente liviano, no tiene más de 1mm. de grosor. Y sólo cuesta 30 euros, poco más que una vulgar camiseta normal y corriente.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;object height="355" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/sVYJEg-THnA&amp;amp;rel=1"&gt;&lt;param name="wmode" value="transparent"&gt;
&lt;embed src="http://www.youtube.com/v/sVYJEg-THnA&amp;amp;rel=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=54909" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/cfouz/archive/tags/gadget/default.aspx">gadget</category></item><item><title>backdoor en "Boletin de seguridad de Microsoft MS07-055 - Crítico"</title><link>http://geeks.ms/blogs/cfouz/archive/2007/11/19/backdoor-en-quot-boletin-de-seguridad-de-microsoft-ms07-055-cr-237-tico-quot.aspx</link><pubDate>Mon, 19 Nov 2007 09:03:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:51008</guid><dc:creator>Carlos Fouz</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/cfouz/rsscomments.aspx?PostID=51008</wfw:commentRss><comments>http://geeks.ms/blogs/cfouz/archive/2007/11/19/backdoor-en-quot-boletin-de-seguridad-de-microsoft-ms07-055-cr-237-tico-quot.aspx#comments</comments><description>&lt;font color="#505050"&gt;
&lt;p style="MARGIN-BOTTOM:0cm;"&gt;PandaLabs ha detectado el envió de mensajes de correo electrónico que, afirmando provenir de la compañía Microsoft, tratan de instalar en el ordenador al backdoor Bandok.BO. El asunto de estos correos es: &amp;quot;Boletin de seguridad de Microsoft MS07-055 - Crítico&amp;quot;. El texto del mail, por su parte, reproduce información sobre uno de los parches publicados por dicha compañía, concretamente el que resuelve una vulnerabilidad en el visor de imágenes Kodak.&lt;/p&gt;
&lt;p style="MARGIN-BOTTOM:0cm;"&gt;El mensaje ofrece a los usuarios la posibilidad de descargar la actualización a la que hace referencia pinchando en varios links. En caso de hacerlo, será redirigido a una página con el mismo aspecto que la original de actualizaciones Microsoft. Sin embargo, cuando proceda a realizar la descarga, lo que realmente estará introduciendo en su PC es una copia del troyano Bandok.BO. Para aparentar mayor fiabilidad, el archivo tiene el mismo nombre que el de la descarga legal de Microsoft.&lt;/p&gt;
&lt;p style="MARGIN-BOTTOM:0cm;"&gt;&lt;a class="" href="http://www.laflecha.net/canales/seguridad/noticias/un-falso-correo-de-microsoft-distribuye-backdoor"&gt;Más información&lt;/a&gt;&lt;/p&gt;&lt;/font&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=51008" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/cfouz/archive/tags/mundo+Microsoft/default.aspx">mundo Microsoft</category><category domain="http://geeks.ms/blogs/cfouz/archive/tags/noticias+TIC/default.aspx">noticias TIC</category></item><item><title>Skype Phishing</title><link>http://geeks.ms/blogs/cfouz/archive/2007/10/15/skype-phishing.aspx</link><pubDate>Mon, 15 Oct 2007 08:24:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:41902</guid><dc:creator>Carlos Fouz</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/cfouz/rsscomments.aspx?PostID=41902</wfw:commentRss><comments>http://geeks.ms/blogs/cfouz/archive/2007/10/15/skype-phishing.aspx#comments</comments><description>&lt;p&gt;&lt;img src="http://geeks.ms/photos/cfouz/images/41904/original.aspx" border="0" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;La idea es robar las credenciales de acceso a Skype, de la misma manera que el phishing tradicional intenta robar los datos de acceso a instituciones financieras.&lt;br /&gt;&lt;br /&gt;Phishing es la técnica utilizada para obtener información confidencial mediante la suplantación de una persona o institución legítima (generalmente por medio de un &amp;quot;scam&amp;quot;, mensaje electrónico fraudulento, o falsificación de página web).&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;En el reporte se describen ataques que se remontan a mayo de 2007, donde la mayoría adoptan un enfoque obvio con mensajes como el siguiente: &amp;quot;Es necesario que actualice sus credenciales, pulse aquí para acceder a [...]&amp;quot;, y se muestra un enlace a un sitio falso que simula ser el de Skype.&lt;/p&gt;
&lt;p&gt;O sea, si recibe un mensaje de Skype que por cualquier razón le solicitan que haga clic en un enlace para luego ingresar o confirmar sus datos de acceso, no lo haga.&lt;/p&gt;
&lt;p&gt;&lt;a class="" href="http://www.laflecha.net/canales/seguridad/noticias/nuevas-tecnicas-de-robo-de-identidad-llega-el-skype-phishing/"&gt;más información&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=41902" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/cfouz/archive/tags/noticias+TIC/default.aspx">noticias TIC</category></item><item><title>SIMO acogerá I Congreso Nacional de Policías Tecnológicas</title><link>http://geeks.ms/blogs/cfouz/archive/2007/10/15/simo-acoger-225-i-congreso-nacional-de-polic-237-as-tecnol-243-gicas.aspx</link><pubDate>Mon, 15 Oct 2007 08:07:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:41901</guid><dc:creator>Carlos Fouz</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/cfouz/rsscomments.aspx?PostID=41901</wfw:commentRss><comments>http://geeks.ms/blogs/cfouz/archive/2007/10/15/simo-acoger-225-i-congreso-nacional-de-polic-237-as-tecnol-243-gicas.aspx#comments</comments><description>&lt;p&gt;&lt;font face="Verdana"&gt;El próximo 7 de noviembre, coincidiendo con la celebración de SIMO, la feria tecnológica más importante de España se va a celebrar el I Congreso Nacional de Policías Tecnológicas. ¿El objetivo? Reunir a un grupo de profesionales de las Fuerzas y Cuerpos de Seguridad, tanto estatal, como autonómico o local, para compartir experiencias e ideas que ayuden en la lucha contra la piratería informática, cerca de 100 policías pertenecientes a todos los Cuerpos y Fuerzas de Seguridad compartan ideas y casos de éxitos en la persecución del delito informático y contra la propiedad intelectual, así como ponencias que correrán a cargo de representantes de los tres Ministerios(Industria, Comercio y Turismo).&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana" size="1"&gt;&lt;/font&gt;Más información &lt;a class="" href="http://www.noticias.info/Asp/aspComunicados.asp?nid=314490"&gt;noticias.info&lt;/a&gt; &lt;a class="" href="http://www.acam.es/noticias_detalle.php?id=2315"&gt;acam.es&lt;/a&gt;&amp;nbsp; &lt;a class="" href="http://www.ifema.es/ferias/simo/default.html"&gt;simo&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=41901" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/cfouz/archive/tags/noticias+TIC/default.aspx">noticias TIC</category></item></channel></rss>