<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Aprendiendo a Programar en Python con PyGame para hacer Video Juegos</title>
	<atom:link href="http://miprogramacionenjuegos.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://miprogramacionenjuegos.wordpress.com</link>
	<description>Notas personales de lo que aprendo en Programación de Video juegos en Python con PyGame</description>
	<lastBuildDate>Wed, 14 Dec 2011 16:09:52 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='miprogramacionenjuegos.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Aprendiendo a Programar en Python con PyGame para hacer Video Juegos</title>
		<link>http://miprogramacionenjuegos.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://miprogramacionenjuegos.wordpress.com/osd.xml" title="Aprendiendo a Programar en Python con PyGame para hacer Video Juegos" />
	<atom:link rel='hub' href='http://miprogramacionenjuegos.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Creando un fondo con scroll</title>
		<link>http://miprogramacionenjuegos.wordpress.com/2007/05/16/creando-un-fondo-con-scroll/</link>
		<comments>http://miprogramacionenjuegos.wordpress.com/2007/05/16/creando-un-fondo-con-scroll/#comments</comments>
		<pubDate>Wed, 16 May 2007 02:59:57 +0000</pubDate>
		<dc:creator>palermi</dc:creator>
				<category><![CDATA[PyGame]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://miprogramacionenjuegos.wordpress.com/2007/05/16/creando-un-fondo-con-scroll/</guid>
		<description><![CDATA[Es una característica típica de los viejos juegos de naves, hay un tutorial en ingles muy bueno aquí, pero para este post hice algo diferente y mucho mas fácil de entender. El codigo del ejemplo lo pueden descargar de aquí (se llama scroll.zip) Hago una pequeña explicación, primero creamos la clase Fondo pero con 2 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=miprogramacionenjuegos.wordpress.com&amp;blog=569950&amp;post=83&amp;subd=miprogramacionenjuegos&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Es una característica típica de los viejos juegos de naves, hay un tutorial en ingles muy bueno <a href="http://www.scriptedfun.com/pygame-scrolling-background/">aquí</a>, pero para este post hice algo diferente y mucho mas fácil de entender.</p>
<p>El codigo del ejemplo lo pueden descargar de <a href="http://palermi.freehostia.com/pygame/">aquí</a> (se llama scroll.zip)</p>
<p>Hago una pequeña explicación, primero creamos la clase Fondo pero con 2 images, solo sirve para que puedan ver el efecto scroll con un fondo diferente<br />
<blockquote><b>class</b> Fondo(pygame.sprite.Sprite):&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; def __init__(self):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pygame.sprite.Sprite.__init__(self)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.image, self.rect=load_image(&#8216;fondo.jpg&#8217;,0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.image2, self.rect2 = load_image(&#8216;fondo2.jpg&#8217;,0)</p></blockquote>
<p>En la función<b> main() </b>vemos el código clásico de cualquier juego en pygame, definimos la pantalla, creamos un fondo y un objeto de tipo clock que nos servirá para fijar los cuadros por segundos, en este caso lo fijaremos a 30 escribiendo <b>clock.tick(30)</b> dentro del while. <br />
<blockquote>desplazamiento = 0<br />imagen_de_fondo=imagen.imagen2<br />while 1:<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for event in pygame.event.get():<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if event.type == QUIT:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; raise SystemExit<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if&nbsp; event.type == MOUSEBUTTONDOWN:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; imagen_de_fondo=fondo.image<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; elif event.type is MOUSEBUTTONUP:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; imagen_de_fondo=fondo.image2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; desplazamiento +=2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if desplazamiento==64: desplazamiento=0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; screen.blit(imagen_de_fondo,(0,0), (desplazamiento,0,HEIGHT,WIDTH))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pygame.display.flip()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; clock.tick(30)</p></blockquote>
<p>Hay un par de cosas para remarcar:
<ul>
<li>Al clickear el mouse intercambiamos el fondo</li>
<li>Hay una variable desplazamiento que va desde 0 a 64 (de 2 en 2) eso hace que en cada cuadro desplacemos el fondo 2 pixels.</li>
</ul>
<p>La función blit de este ejemplo copia la imagen de fondo en la superficie screen, pero en este caso le pasamos 2 parametros nuevos, uno sirve para posicionarlo en (0,0) es decir (no estoy seguro) en la esquina superior izquierda y con el 2do parámetro le enviamos un rectángulo de la imagen fondo, pero desplazado.<br />Las imagenes de fondo tienen 124 pixeles mas de ancho que la pantalla, si no hiciéramos eso no podríamos lograr el efecto de desplazamiento.</p>
<p>
<p class="poweredbyperformancing">Powered by <a href="http://scribefire.com/">ScribeFire</a>.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/miprogramacionenjuegos.wordpress.com/83/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/miprogramacionenjuegos.wordpress.com/83/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/miprogramacionenjuegos.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/miprogramacionenjuegos.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/miprogramacionenjuegos.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/miprogramacionenjuegos.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/miprogramacionenjuegos.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/miprogramacionenjuegos.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/miprogramacionenjuegos.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/miprogramacionenjuegos.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/miprogramacionenjuegos.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/miprogramacionenjuegos.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/miprogramacionenjuegos.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/miprogramacionenjuegos.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/miprogramacionenjuegos.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/miprogramacionenjuegos.wordpress.com/83/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=miprogramacionenjuegos.wordpress.com&amp;blog=569950&amp;post=83&amp;subd=miprogramacionenjuegos&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://miprogramacionenjuegos.wordpress.com/2007/05/16/creando-un-fondo-con-scroll/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/460fa7d0cef78d6b1054b756cc339bfb?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">palermi</media:title>
		</media:content>
	</item>
		<item>
		<title>La clase sprite</title>
		<link>http://miprogramacionenjuegos.wordpress.com/2007/05/15/la-clase-sprite/</link>
		<comments>http://miprogramacionenjuegos.wordpress.com/2007/05/15/la-clase-sprite/#comments</comments>
		<pubDate>Tue, 15 May 2007 04:27:48 +0000</pubDate>
		<dc:creator>palermi</dc:creator>
				<category><![CDATA[PyGame]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://miprogramacionenjuegos.wordpress.com/2007/05/15/la-clase-sprite/</guid>
		<description><![CDATA[Leyendo esta excelente guia de ejemplos de pygame, quiero hablar un poco de la clase sprite. La clase sprite puede ser usada como una clase base para diferentes objetos, y contiene algunas funciones muy útiles para trabajar con grupos de sprites. Por ejemplo podemos tener el grupo de las naves y el grupo de los [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=miprogramacionenjuegos.wordpress.com&amp;blog=569950&amp;post=82&amp;subd=miprogramacionenjuegos&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Leyendo esta <a href="http://www.losersjuegos.com.ar/referencia/apuntes/descargas/guia_de_ejemplos_sobre_pygame.pdf">excelente guia</a> de ejemplos de pygame, quiero hablar un poco de la clase sprite.</p>
<p>La <a href="http://www.pygame.org/docs/ref/sprite.html">clase sprite</a> puede ser usada como una clase base para diferentes objetos, y contiene algunas funciones muy útiles para trabajar con grupos de sprites. Por ejemplo podemos tener el grupo de las naves y el grupo de los asteroides y con funciones como groupcollide, controlar cuales naves chocaron con los asteroides. A continuación un ejemplo sencillo de creación de grupos de sprites:<br />
<blockquote>naves=pygame.sprite.Group()<br />xwing = Xwing()<br />naves.add(xwing())</p>
<p>asteroides=pygame.sprite.Group()<br />asteroides.add(Clase_asteroides(200,300))</p></blockquote>
<p>En el código anterior, creamos un primer grupo de sprites llamado naves, y usando la funcion add vamos agregandole sprites. La linea que dice xwing=Xwing() sirve para crear un objeto de tipo Xwing (que es un sprite).<br />Luego de esto creamos otro grupo asteroides y agregamos en el grupo de sprites un objeto, pero en este caso lo instanciamos dentro de la función.</p>
<p>Hay 3 grandes tipos de grupos:
<ul>
<li><b>GroupSingle</b>: solo permite un sprite, si agregamos otro, el que estaba se borraria</li>
<li><b>Group</b>: un grupo de sprites común y corriente</li>
<li><b>RenderUpdates</b>: un grupo que tiene la funcion draw modificada, ya que produce una salida.</li>
</ul>
<p>Es decir que los grupos tipo <b>Group y RenderUpdates</b> cuando se hace <b>draw()</b> es como si hicieramos un <b>blit()</b> de todos las imagenes que hay en cada sprite, solo que en RenderUpdates la función draw() tiene una respuesta, veamos un ejemplo (modificado de la guia que dejé al principio)<br />
<blockquote>all_sprites=pygame.sprite.Group() &nbsp;&nbsp;  &nbsp;&nbsp;  #noten que en el ejemplo se usa RenderPlain, pero esta en desuso<br />all_sprites.add(player)&nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  #agregamos el objeto player al grupo all_sprites<br />all_sprites.add(alien)&nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp; #agregamos el objeto alien</p>
<p>while 1:<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  all_sprites.update()&nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp; #actualizamos todos los sprites<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  screen.fill((200,200,200))&nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  #pintamos la superfie screen con el color gris<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  all_sprites.draw(screen)&nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp; #hacemos un blit en la superficie screen de TODOS los sprites del grupo all_sprites<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  pygame.display.flip()&nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp; #mostramos todo lo que hay en el &#8220;reverso&#8221; de la página</p>
<p>all_sprites.empty()&nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp; #cuando salimos del while borramos todos los sprites del grupo</p></blockquote>
<p>Como se puede observar, en cada ciclo del programa se actualizan los sprites, se pinta el fondo de la pantalla (screen) y se dibujan (con la función draw) TODOS los sprites, ya sea que hayan cambiado o no. Esta técnica tiene la desventaja de tener que dibujar TODO siempre, en la actualidad las máquinas son muy rápidas y no tendrían problemas, pero puede ser que el juego tenga una cierta complejidad que no convenga dibujar todo sino una región y en este caso conviene usar otra cosa.</p>
<p>Hay una alternativa que mejoraría el juego y es utilizando el grupo de sprites <b>RenderUpdates</b>, veamos un ejemplo:<br />
<blockquote>all_sprites = pygame.sprite.RenderUpdates()&nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  #creamos un grupo all_sprites<br />all_sprites.add(player)&nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  #agregamos player al grupo</p>
<p>while 1:<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  all_sprites.update()&nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp; #actualizamos el grupo<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  all_sprites.clear(screen, background)&nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp; #en la superficie screen, pintamos con el background solo en las posiciones de los sprites del grupo.<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; pygame.display.update(all_sprite.draw(screen)) <br />all_sprites.empty()</p>
</blockquote>
<p>Hay un par de cosas que debemos aclarar de este código. La primer parte es igual solo que creamos un grupo de tipo RenderUpdates. Dentro del <b>while</b> actualizamos los sprites, luego en vez de borrar toda la pantalla (como hacíamos antes pintando de gris todo el fondo), aquí usando la función <b>clear()</b> del grupo, y con esto &#8220;pintaremos&#8221; solo en aquellas partes donde haya un sprite del grupo all_sprites, la sintaxis es la siguiente:<br />
<blockquote>Group.clear(superficie_destino, superficie_origen) #pintaremos con la superficie_origen solo en los sprites de la superficie_destino.</p></blockquote>
<p>A continuación de esto hacemos un <b>display.update</b> y un <b>all_sprite.draw</b>, por que? En realidad es muy simple: como había dicho antes la función draw de la clase RenderUpdates esta modificada y devuelve un listado de rectángulos que fueron modificados, es decir devuelve las posiciones de pantalla que cambiaron de un cuadro a otro, esta respuesta le pasamos como parámetro a display.update() que se diferencia de display.flip() por el hecho de que solo actualiza algunas porciones de pantalla.</p>
<p>Al final haremos que nuestro juego de &#8220;navecitas&#8221; tenga una mejor velocidad de cuadros por segundos, ya que en cada ciclo no se actualizará toda la pantalla sino solo las partes que se necesiten. Hay veces que esta segunda técnica puede ser contraproducente y es cuando hay tantas pero tantas cosas en la pantalla, que directamente conviene dibujarla entera que estar calculando y dibujando porciones.</p>
<p>Quedaría ver otro tipo de grupo, que es OrderedUpdates, este grupo es una modificacion de RenderUpdates por el hecho de que dibuja los sprites que contiene de acuerdo al orden en que fueron siendo agregados y por eso, borrar y agregar sprites es un poco mas lento.</p>
<p>Para mas información visitar la documentación oficial de <a href="http://www.pygame.org/docs/ref/sprite.html">esta clase</a>.</p>
<p class="poweredbyperformancing">Powered by <a href="http://scribefire.com/">ScribeFire</a>.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/miprogramacionenjuegos.wordpress.com/82/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/miprogramacionenjuegos.wordpress.com/82/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/miprogramacionenjuegos.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/miprogramacionenjuegos.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/miprogramacionenjuegos.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/miprogramacionenjuegos.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/miprogramacionenjuegos.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/miprogramacionenjuegos.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/miprogramacionenjuegos.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/miprogramacionenjuegos.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/miprogramacionenjuegos.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/miprogramacionenjuegos.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/miprogramacionenjuegos.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/miprogramacionenjuegos.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/miprogramacionenjuegos.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/miprogramacionenjuegos.wordpress.com/82/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=miprogramacionenjuegos.wordpress.com&amp;blog=569950&amp;post=82&amp;subd=miprogramacionenjuegos&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://miprogramacionenjuegos.wordpress.com/2007/05/15/la-clase-sprite/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/460fa7d0cef78d6b1054b756cc339bfb?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">palermi</media:title>
		</media:content>
	</item>
		<item>
		<title>Visor de Fotos</title>
		<link>http://miprogramacionenjuegos.wordpress.com/2007/05/14/visor-de-fotos/</link>
		<comments>http://miprogramacionenjuegos.wordpress.com/2007/05/14/visor-de-fotos/#comments</comments>
		<pubDate>Mon, 14 May 2007 04:36:57 +0000</pubDate>
		<dc:creator>palermi</dc:creator>
				<category><![CDATA[PyGame]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://miprogramacionenjuegos.wordpress.com/2007/05/14/visor-de-fotos/</guid>
		<description><![CDATA[Estuve probando funciones para transformar fotos, lectura de eventos, arrays, clases, etc y realice un sencillo visor de fotos basándome en 2 códigos que encontré por ahí (un ejemplo de arrastrar y soltar de loserjuegos y otro de un lector de imagenes dentro de un zip.) Es muy simple, se puede aumentar de tamaño a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=miprogramacionenjuegos.wordpress.com&amp;blog=569950&amp;post=81&amp;subd=miprogramacionenjuegos&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Estuve probando funciones para transformar fotos, lectura de eventos, arrays, clases, etc y realice un sencillo visor de fotos basándome en 2 códigos que encontré por ahí (un ejemplo de arrastrar y soltar de <a href="http://www.losersjuegos.com.ar/">loserjuegos</a> y otro de un lector de imagenes dentro de un zip.)</p>
<p>Es muy simple, se puede aumentar de tamaño a las fotos, rotarlas y moverlas, con solo manejar el mouse. Pueden descargarlo desde <a href="http://palermi.freehostia.com/pygame/">aqui</a>, recuerden que deben tener Numpy ya que utiliza arrays (para instalar Numpy pueden leer el <a href="http://miprogramacionenjuegos.wordpress.com/2007/05/13/arrays-en-pygame/">post anterior</a>)</p>
<p>Cualquier parecido con <a href="http://www.youtube.com/v/GkrM4ymkiDo">esto</a> es pura coincidencia :p</p>
<p class="poweredbyperformancing">Powered by <a href="http://scribefire.com/">ScribeFire</a>.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/miprogramacionenjuegos.wordpress.com/81/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/miprogramacionenjuegos.wordpress.com/81/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/miprogramacionenjuegos.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/miprogramacionenjuegos.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/miprogramacionenjuegos.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/miprogramacionenjuegos.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/miprogramacionenjuegos.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/miprogramacionenjuegos.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/miprogramacionenjuegos.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/miprogramacionenjuegos.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/miprogramacionenjuegos.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/miprogramacionenjuegos.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/miprogramacionenjuegos.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/miprogramacionenjuegos.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/miprogramacionenjuegos.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/miprogramacionenjuegos.wordpress.com/81/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=miprogramacionenjuegos.wordpress.com&amp;blog=569950&amp;post=81&amp;subd=miprogramacionenjuegos&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://miprogramacionenjuegos.wordpress.com/2007/05/14/visor-de-fotos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/460fa7d0cef78d6b1054b756cc339bfb?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">palermi</media:title>
		</media:content>
	</item>
		<item>
		<title>Arrays en Pygame</title>
		<link>http://miprogramacionenjuegos.wordpress.com/2007/05/13/arrays-en-pygame/</link>
		<comments>http://miprogramacionenjuegos.wordpress.com/2007/05/13/arrays-en-pygame/#comments</comments>
		<pubDate>Sun, 13 May 2007 22:34:34 +0000</pubDate>
		<dc:creator>palermi</dc:creator>
				<category><![CDATA[Array]]></category>
		<category><![CDATA[PyGame]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://miprogramacionenjuegos.wordpress.com/2007/05/13/arrays-en-pygame/</guid>
		<description><![CDATA[Para trabajar con arrays hay que tener el paquete Numpy (antes conocido como Numeric) de python, ya que&#160; pygame no lo trae incluido así que hay que instalarlo. Lo bajan de aqui y pueden elegir el .exe o el codigo fuente, para eso hay que escribir lo siguiente: python setup.py install La libreria Numpy tienen [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=miprogramacionenjuegos.wordpress.com&amp;blog=569950&amp;post=80&amp;subd=miprogramacionenjuegos&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Para trabajar con arrays hay que tener el paquete Numpy (antes conocido como Numeric) de python, ya que&nbsp; pygame no lo trae incluido así que hay que instalarlo. <br />Lo bajan de <a href="http://sourceforge.net/project/showfiles.php?group_id=1369&amp;package_id=175103">aqui</a> y pueden elegir el .exe o el codigo fuente, para eso hay que escribir lo siguiente: <b>python setup.py install</b></p>
<p>La libreria Numpy tienen millones de funciones utiles para realizar calculos matematicos, tiene desde arccos() hasta funciones para ordenar por quicksort, son muchisimas, en <a href="http://www.scipy.org/Numpy_Example_List_With_Doc">esta pagina</a> hay un listado con ejemplos.</p>
<p>Para utilizar esta libreria, al comienzo de nuestro codigo fuente hay que agregar esto:<b> from numpy import * </b>entonces nuestra cabecera quedaria asi:</p>
<blockquote><p><b>import</b> pygame<br /><b>from</b> pygame.locals <b>import *<br />from </b>numpy <b>import *<br /></b></p></blockquote>
<p>Para el caso puntual de la creación de un vector:<br />
<blockquote>a =&nbsp; array ([1,2,3,4])<br />b= array([5,6,7,8])<br />print a + b</p></blockquote>
<p>Resultado: [6,8,10,12]</p>
<p>Hay muchos ejemplos de trabajos con arrays, lo mejor seria que chequeen los ejemplos que trae en la documentación, en el link que les pasé antes.</p>
<p><b>Algunas funciones importantes:<br /></b><br />Por ejemplo para crear un vector vacio (lleno de ceros) usamos la funcion zero, de esta forma:</p>
<blockquote><p>zeros(5)&nbsp;&nbsp; #devuelve un vector con 5 ceros (en flotante)</p>
<p>zeros ((2,2), int)&nbsp; #devuelve:<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  [0,0]<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  [0,0]</p></blockquote>
<p><b>Atencion:</b> si no se especifica int, la funcion zeros devuelve un array con coma flotante.</p>
<p>Otra función bastante útil es crear un array con numeros aleatorios, para eso usamos la función <b>random_integers()</b>, pero para esto debemos agregar el paquete random de numpy y nuestro código quedaría así:<br />
<blockquote><b>from </b>numpy <b>import *<br />from </b>numpy.random&nbsp; <b>import *</p>
<p></b></p></blockquote>
<p>Entonces para crear un array con números aleatorios escribimos lo siguiente <b>random_integers(minimo,maximo,tamaño)</b> donde <b>mínimo</b> es el menor numero aleatorio posible y <b>máximo</b> el mayor, en <b>tamaño</b> debemos establecer la dimensión del array, por ejemplo puede ser (2,2) o&nbsp; (3,5), etc.</p>
<p>Si quisiéramos obtener un numero aleatorio y no un array usamos la función <b>randint()</b></p>
<p><b>Una aplicación práctica</b></p>
<p>Hoy necesitaba guardar los botones que se están presionando en el mouse, entonces utilicé la funcion <b>get_pressed</b> pero esta función solo me devolvía los 3 botones presionados (y mi mouse tiene 5 contando la ruedita) ejemplo de uso:<br />
<blockquote>botones=pygame.mouse.get_pressed()&nbsp; #esto me devuele un array de 3 elementos</p></blockquote>
<p>Si yo tengo apretado el boton izquierdo me devuelve este array (1,0,0) y si tengo apretado el derecho (0,0,1). La desventaja de esta función, es que no lee la &#8220;ruedita del mouse&#8221;, entonces utilice lo siguiente:<br />
<blockquote>botones=zeros(5,int)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #creamos un vector (0,0,0,0,0) para guardar los estados de los botones</p>
<p>while 1:<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  for event in pygame.event.get():&nbsp;&nbsp;  &nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  if event.type == MOUSEBUTTONDOWN:<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  botones[event.button-1]=1<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp; if event.type == MOUSEBUTTONUP:<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  botones[event.button-1]=1</p>
</blockquote>
<p>Con este codigo estamos leyendo siempre si se aprietan o se sueltan los botones del mouse. Si giramos la ruedita del mouse puede ser para arriba (boton 4) o para abajo (boton 5), y en la posicion 3 y 4 respectivamente guardamos 1. Todo esto lo solucionamos de una manera bastante sencilla usando arrays.</p>
<p>Nota: En este ejemplo, cuando giramos la ruedita, se graba 1 en el vector pero como luego la soltamos se vuelve a poner en cero, y parece que no esta apretado, para solucionar eso podemos usar una variable bandera.</p>
<p class="poweredbyperformancing">Powered by <a href="http://scribefire.com/">ScribeFire</a>.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/miprogramacionenjuegos.wordpress.com/80/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/miprogramacionenjuegos.wordpress.com/80/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/miprogramacionenjuegos.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/miprogramacionenjuegos.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/miprogramacionenjuegos.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/miprogramacionenjuegos.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/miprogramacionenjuegos.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/miprogramacionenjuegos.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/miprogramacionenjuegos.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/miprogramacionenjuegos.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/miprogramacionenjuegos.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/miprogramacionenjuegos.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/miprogramacionenjuegos.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/miprogramacionenjuegos.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/miprogramacionenjuegos.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/miprogramacionenjuegos.wordpress.com/80/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=miprogramacionenjuegos.wordpress.com&amp;blog=569950&amp;post=80&amp;subd=miprogramacionenjuegos&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://miprogramacionenjuegos.wordpress.com/2007/05/13/arrays-en-pygame/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/460fa7d0cef78d6b1054b756cc339bfb?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">palermi</media:title>
		</media:content>
	</item>
		<item>
		<title>Nociones fundamentales de pygame</title>
		<link>http://miprogramacionenjuegos.wordpress.com/2007/05/12/nociones-fundamentales-de-pygame/</link>
		<comments>http://miprogramacionenjuegos.wordpress.com/2007/05/12/nociones-fundamentales-de-pygame/#comments</comments>
		<pubDate>Sat, 12 May 2007 09:04:19 +0000</pubDate>
		<dc:creator>palermi</dc:creator>
				<category><![CDATA[PyGame]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://miprogramacionenjuegos.wordpress.com/2007/05/12/nociones-fundamentales/</guid>
		<description><![CDATA[Cuando empecé con pygame lo que me mas me costó era entender sobre que era un superficie (surface) un sprite, como mostrar las imagenes, cual era la mejor forma, que es el doblebuffer de la pantalla, etc. Por eso me propongo con este post aclarar estos términos que me costaron entender. No pretendo que sea [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=miprogramacionenjuegos.wordpress.com&amp;blog=569950&amp;post=79&amp;subd=miprogramacionenjuegos&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Cuando empecé con pygame lo que me mas me costó era entender sobre que era un superficie (surface) un sprite, como mostrar las imagenes, cual era la mejor forma, que es el doblebuffer de la pantalla, etc. Por eso me propongo con este post aclarar estos términos que me costaron entender. No pretendo que sea una guia para comenzar con la programación de video-juegos, solo aclarar algunas ideas un tanto complicadas.</p>
<p><b>Superficie y explicación de la función blit</b></p>
<p>En pygame toda imagen se representa mediante una superficie y esto permite combinarlas. <br />Por ejemplo tenemos 2 superficies una llamada screen_sup y otra llamada fondo_sup, la superficie screen_sup abarca toda la ventana (por ahora esta vacia, no tiene imagen dentro), y la superficie fondo_sup es una imagen jpg.<br />
<blockquote>screen_sup = pygame.display.get_surface()&nbsp; <br />fondo_sup = pygame.image.load(&#8220;archivo.jpg&#8221;)</p></blockquote>
<p>Usando la funcion blit copiamos y pegamos la superficie fondo_sup en la posicion x,y de la superficie screen_sup<br />
<blockquote>screen_sup.blit(fondo_sup, (x,y)) # funcionamiento superficie_destino.blit(superficie_origen,(coordenadas))</p></blockquote>
<p>Las superficies tienen diferentes funciones, algunas muy utiles, por ejemplo fill que pinta la superficie de un color, o get_width y get_height que devuelven el ancho y el alto respectivamente de la superficie. Uso:<br />
<blockquote>alto=fondo_sup.get_height()<br />ancho=fondo_sup.get_width()<br />rectangulo=fondo_sup.get_rect() #devuelve las coordenadas de un rectángulo que cubre la superficie</p></blockquote>
<p>Para ver un listado de todos los posibles metodos que tienen las superficies pueden visitar este <a href="http://www.pygame.org/docs/ref/surface.html">enlace</a>.</p>
<p><b>Doblebuffer y explicación de la función flip</b></p>
<p>Cuando mostramos una imagen y la queremos mover de lugar, tenemos que borrarla, moverla un poco, mostrarla, moverla un poco mas, borrarla, etc hasta llegar al destino, pero a veces este proceso es muy rápido y el monitor no llega a dibujar por completo cada imagen del desplazamiento y parece como si la imagen estuviese entrecortada, para evitar tener que estar dibujando, borrando dibujando usaremos el doblebuffer.</p>
<p>El doblebuffer son 2 areas de memoria ram, donde se guardan las imagenes, una de las areas siempre estará activa, es decir sera visible para el usuario y la otra estará oculta. Veamos un ejemplo:<br />
<blockquote>Imagen de la pelota en la posicion 1<br />while posicion_pelota&lt;=10<br />&nbsp;&nbsp;&nbsp; mover_pelota_una_posicion()<br />&nbsp;&nbsp;&nbsp; pygame.display.flip()</p></blockquote>
<p>Cuando movemos nuestra pelota no la veremos hasta que no hayamos ejecutado pygame.display.flip(), en el primer paso del programa la imagen que se ve es la de la posicion 1 y la imagen que esta oculta es la de la posicion 2, pero al escribir pygame.display.flip() intercambiamos las pantallas y mostraremos la posicion 2 y ocultaremos la 1. <b>Cada cambio de posicion se hace de forma oculta y hasta que no hacemos flip no veremos el efecto de movimiento</b>.</p>
<p>Por se explica que en el ejemplo de screen_sup y fondo_sup si no escribimos pygame.display.flip() al final, no veremos el fondo.</p>
<p>El usar display.flip() hace que se cambie toda pantalla completa y esto puede ser una desventaja, pero hay técnicas que permiten intercambiar solo las regiones que hayan sido modificadas esta ultima técnica a veces da mejores resultados en cuanto a velocidad en los movimientos.</p>
<p><b>Sprite</b></p>
<p>habíamos dicho que una superficie es cualquier imagen que usamos en pygame, ya que para cargar cualquier imagen usamos <b>pygame.load.image(archivo)</b> y esta función solo devuelve una superficie.<br />En el caso de los sprites es mas general, la clase de los sprites se usa para diferentes tipos de objetos, por ejemplo un objeto sprite puede contener a una superficie y métodos o funciones.</p>
<p>A continuación creamos una clase sprite llamada Auto, esta clase tiene una imagen (superficie) correspondiente y tiene 3 métodos: encender, frenar y update.</p>
<blockquote><p>class Auto(pygame.sprite.Sprite)<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; def __init__(self,foto):<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; pygame.sprite.Sprite.__init_(self)<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  self.velocidad=0<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  self.imagen = pygame.load.image(foto)<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; def frenar(self):<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  self.velocidad=0</p>
<p>&nbsp;&nbsp;&nbsp; def encender(self, angulo):<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; self.velocidad=2<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; def update(self):<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  self.rect.move_ip(self.velocidad,0)</p>
</blockquote>
<p>Para instanciar las clases hacemos:<br />
<blockquote>fiat= Auto(&#8220;fiat.jpg&#8221;)<br />ferrari = Auto (&#8220;f1.jpg&#8221;)</p>
</blockquote>
<p>Lo que hicimos con esto es crear 2 objetos auto, cada uno con diferentes imagenes. No voy a ampliar esto por que merece que un parrafo aparte. Quiero comentar lo que son los grupos.</p>
<p>Una gran utilidad cuando tenemos muchos autos, naves, enemigos, etc es crear grupos, por ejemplo el grupo_de_enemigos<br />
<blockquote>grupo_enemigos = pygame.sprite.Group()&nbsp;&nbsp; #creamos el grupo de los enemigos<br />grupo_enemigos.add(Enemigo(imagen_enemigo1)) #agregamos un enemigo<br />grupo_enemigos.add(Enemigo(imagen_enemigo2)) #agregamos otro enemigo</p></blockquote>
<p>Con esto creamos un grupo y le agregamos 2 enemigos, la ventaja principal de los grupos es poder &#8220;enviarle ordenes&#8221; a todos los miembros, las ordenes mas importantes son update y draw, con update, actualizamos todos sprites (en el caso de que se hayan movido, cambiado de tamaño, etc) y con draw estamos haciendo un blit de la superficie que esta incluida en cada sprite (al comienzo habiamos dicho que los sprite pueden contener superficies y antes habiamos hablado de que la funcion blit sirve para pegar una superficie en otra), entonces si escribimos<br />
<blockquote>grupo_enemigos.draw(screen_sup)</p>
</blockquote>
<p>Es como si hicieramos un blit por cada superficie que esta incluida en el grupo de sprites<br />
<blockquote>screen_sup.blit(imagen_enemigo1)<br />screen_sup.blit(imagen_enemigo2)<br />&#8230;.</p>
</blockquote>
<p>Hay que recordar que al final de todo debemos escribir pygame.display.flip() como ya habíamos explicado.</p>
<p>Espero que haya aclarado algunas dudas, por lo menos ahora no estoy tan perdido. Seria recomendable que lean <a href="http://www.losersjuegos.com.ar/referencia/articulos/conceptos_basicos/conceptos_basicos.php">&#8220;Conceptos Básicos para el desarrollo de videojuegos&#8221;</a>&nbsp; y esta &#8220;<a href="http://www.losersjuegos.com.ar/referencia/articulos/pygame_intro/pygame_intro.php">Introduccion a Pygame</a>&#8220;</p>
<p>Muchos de los conceptos de este post fueron tomados de allí.</p>
<p class="poweredbyperformancing">Powered by <a href="http://scribefire.com/">ScribeFire</a>.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/miprogramacionenjuegos.wordpress.com/79/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/miprogramacionenjuegos.wordpress.com/79/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/miprogramacionenjuegos.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/miprogramacionenjuegos.wordpress.com/79/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/miprogramacionenjuegos.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/miprogramacionenjuegos.wordpress.com/79/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/miprogramacionenjuegos.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/miprogramacionenjuegos.wordpress.com/79/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/miprogramacionenjuegos.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/miprogramacionenjuegos.wordpress.com/79/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/miprogramacionenjuegos.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/miprogramacionenjuegos.wordpress.com/79/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/miprogramacionenjuegos.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/miprogramacionenjuegos.wordpress.com/79/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/miprogramacionenjuegos.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/miprogramacionenjuegos.wordpress.com/79/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=miprogramacionenjuegos.wordpress.com&amp;blog=569950&amp;post=79&amp;subd=miprogramacionenjuegos&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://miprogramacionenjuegos.wordpress.com/2007/05/12/nociones-fundamentales-de-pygame/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/460fa7d0cef78d6b1054b756cc339bfb?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">palermi</media:title>
		</media:content>
	</item>
		<item>
		<title>Nuevo colaborador del &#8211; Blog Palermi</title>
		<link>http://miprogramacionenjuegos.wordpress.com/2007/05/09/nuevo-colaborador-del-blog-palermi/</link>
		<comments>http://miprogramacionenjuegos.wordpress.com/2007/05/09/nuevo-colaborador-del-blog-palermi/#comments</comments>
		<pubDate>Wed, 09 May 2007 01:42:11 +0000</pubDate>
		<dc:creator>estados</dc:creator>
				<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://miprogramacionenjuegos.wordpress.com/2007/05/09/nuevo-colaborador-del-blog-palermi/</guid>
		<description><![CDATA[En un fichaje ultra rápido, he agregado a Palermi de http://palermi.wordpress.com como autor en este blog, para que también haga las anotaciones de lo que aprende en Pygame y no se le olvide una funcion, una clase un truco etc. Se le ve que sabe de Pygame, Aca les dejo su escritorio para que les [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=miprogramacionenjuegos.wordpress.com&amp;blog=569950&amp;post=78&amp;subd=miprogramacionenjuegos&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>En un fichaje ultra rápido, he agregado a Palermi de http://palermi.wordpress.com como autor en este blog, para que también haga las anotaciones de lo que aprende en Pygame y no se le olvide una funcion, una clase un truco etc.</p>
<p>Se le ve que sabe de Pygame, <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><a href="http://palermi.wordpress.com/2007/05/01/mi-escritorio/">Aca les dejo su escritorio para que les de envidia de sus monitores </a></p>
<p>Muy pronto vamos a tener a Palermi con su primer post jeje. </p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/miprogramacionenjuegos.wordpress.com/78/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/miprogramacionenjuegos.wordpress.com/78/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/miprogramacionenjuegos.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/miprogramacionenjuegos.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/miprogramacionenjuegos.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/miprogramacionenjuegos.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/miprogramacionenjuegos.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/miprogramacionenjuegos.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/miprogramacionenjuegos.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/miprogramacionenjuegos.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/miprogramacionenjuegos.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/miprogramacionenjuegos.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/miprogramacionenjuegos.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/miprogramacionenjuegos.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/miprogramacionenjuegos.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/miprogramacionenjuegos.wordpress.com/78/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=miprogramacionenjuegos.wordpress.com&amp;blog=569950&amp;post=78&amp;subd=miprogramacionenjuegos&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://miprogramacionenjuegos.wordpress.com/2007/05/09/nuevo-colaborador-del-blog-palermi/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5ea077ca55f79afc32386f655240d441?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">estados</media:title>
		</media:content>
	</item>
		<item>
		<title>Crear un Metodo en Python</title>
		<link>http://miprogramacionenjuegos.wordpress.com/2007/05/08/crear-un-metodo-en-python/</link>
		<comments>http://miprogramacionenjuegos.wordpress.com/2007/05/08/crear-un-metodo-en-python/#comments</comments>
		<pubDate>Tue, 08 May 2007 20:43:09 +0000</pubDate>
		<dc:creator>estados</dc:creator>
				<category><![CDATA[Clases]]></category>
		<category><![CDATA[Metodos]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://miprogramacionenjuegos.wordpress.com/2007/05/08/crear-un-metodo-en-python/</guid>
		<description><![CDATA[En un archivo colocamos class Clase1:&#160;&#160;&#160; def hola(self):&#160;&#160;&#160;&#160;&#160;&#160;&#160; print &#8220;hola mundo&#8221; en otro que este en la misma carpeta colocamos from Classe1 import Clase1caja = Clase1()caja.hola() y ya tenemos nuestro metodo<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=miprogramacionenjuegos.wordpress.com&amp;blog=569950&amp;post=77&amp;subd=miprogramacionenjuegos&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>En un archivo colocamos<br />
<blockquote>class Clase1:<br />&nbsp;&nbsp;&nbsp; def hola(self):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print &#8220;hola mundo&#8221;</p></blockquote>
<p>en otro que este en la misma carpeta colocamos <br />
<blockquote>from Classe1 import Clase1<br />caja = Clase1()<br />caja.hola()</p></blockquote>
<p>y ya tenemos nuestro metodo</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/miprogramacionenjuegos.wordpress.com/77/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/miprogramacionenjuegos.wordpress.com/77/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/miprogramacionenjuegos.wordpress.com/77/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/miprogramacionenjuegos.wordpress.com/77/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/miprogramacionenjuegos.wordpress.com/77/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/miprogramacionenjuegos.wordpress.com/77/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/miprogramacionenjuegos.wordpress.com/77/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/miprogramacionenjuegos.wordpress.com/77/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/miprogramacionenjuegos.wordpress.com/77/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/miprogramacionenjuegos.wordpress.com/77/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/miprogramacionenjuegos.wordpress.com/77/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/miprogramacionenjuegos.wordpress.com/77/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/miprogramacionenjuegos.wordpress.com/77/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/miprogramacionenjuegos.wordpress.com/77/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/miprogramacionenjuegos.wordpress.com/77/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/miprogramacionenjuegos.wordpress.com/77/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=miprogramacionenjuegos.wordpress.com&amp;blog=569950&amp;post=77&amp;subd=miprogramacionenjuegos&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://miprogramacionenjuegos.wordpress.com/2007/05/08/crear-un-metodo-en-python/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5ea077ca55f79afc32386f655240d441?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">estados</media:title>
		</media:content>
	</item>
		<item>
		<title>Función constructora de una clase</title>
		<link>http://miprogramacionenjuegos.wordpress.com/2007/05/08/funcion-constructora-de-una-clase/</link>
		<comments>http://miprogramacionenjuegos.wordpress.com/2007/05/08/funcion-constructora-de-una-clase/#comments</comments>
		<pubDate>Tue, 08 May 2007 20:35:00 +0000</pubDate>
		<dc:creator>estados</dc:creator>
				<category><![CDATA[Clases]]></category>
		<category><![CDATA[Metodos]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://miprogramacionenjuegos.wordpress.com/2007/05/08/funcion-constructora-de-una-clase/</guid>
		<description><![CDATA[Si queremos que cuando uno cree una instancia de una clase, se ejecute una función, tendremos que utilizar __init__. Si esta funcion no tiene parametros, debemos colocarle como parametro self. Ejemplo class Clase1:&#160;&#160;&#160; def __init__(self):&#160;&#160;&#160;&#160;&#160;&#160;&#160; print &#8220;hola mundo&#8221; Cuando creamos una instancia de Clase1 por ejemplo from Classe1 import Clase1caja = Clase1() Dará como resultado [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=miprogramacionenjuegos.wordpress.com&amp;blog=569950&amp;post=76&amp;subd=miprogramacionenjuegos&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Si queremos que cuando uno cree una instancia de una clase, se ejecute una función, tendremos que utilizar __init__. Si esta funcion no tiene parametros, debemos colocarle como parametro self. Ejemplo<br />
<blockquote>class Clase1:<br />&nbsp;&nbsp;&nbsp; def __init__(self):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print &#8220;hola mundo&#8221;</p></blockquote>
<p>Cuando creamos una instancia de Clase1 por ejemplo<br />
<blockquote>from Classe1 import Clase1<br />caja = Clase1()</p></blockquote>
<p>Dará como resultado &#8220;hola mundo&#8221;</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/miprogramacionenjuegos.wordpress.com/76/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/miprogramacionenjuegos.wordpress.com/76/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/miprogramacionenjuegos.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/miprogramacionenjuegos.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/miprogramacionenjuegos.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/miprogramacionenjuegos.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/miprogramacionenjuegos.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/miprogramacionenjuegos.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/miprogramacionenjuegos.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/miprogramacionenjuegos.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/miprogramacionenjuegos.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/miprogramacionenjuegos.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/miprogramacionenjuegos.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/miprogramacionenjuegos.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/miprogramacionenjuegos.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/miprogramacionenjuegos.wordpress.com/76/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=miprogramacionenjuegos.wordpress.com&amp;blog=569950&amp;post=76&amp;subd=miprogramacionenjuegos&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://miprogramacionenjuegos.wordpress.com/2007/05/08/funcion-constructora-de-una-clase/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5ea077ca55f79afc32386f655240d441?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">estados</media:title>
		</media:content>
	</item>
		<item>
		<title>Creando una Clase en Python 1</title>
		<link>http://miprogramacionenjuegos.wordpress.com/2007/05/08/creando-una-clase-en-python-1/</link>
		<comments>http://miprogramacionenjuegos.wordpress.com/2007/05/08/creando-una-clase-en-python-1/#comments</comments>
		<pubDate>Tue, 08 May 2007 18:58:05 +0000</pubDate>
		<dc:creator>estados</dc:creator>
				<category><![CDATA[Clases]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://miprogramacionenjuegos.wordpress.com/2007/05/08/creando-una-clase-en-python-1/</guid>
		<description><![CDATA[Estaba mirando como hacer una clase en Python, y me dio mucho gusto aprender como. Aca va. class Clase1:Ancho = 20Alto = 40&#160;&#160; Aca estamos creando una clase llamada Clase1 y le damos como atributos Ancho y Alto. Este código de por si no hace absolutamente nada. Solo crea un tipo de objeto llamado Clase1, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=miprogramacionenjuegos.wordpress.com&amp;blog=569950&amp;post=75&amp;subd=miprogramacionenjuegos&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Estaba mirando como hacer una clase en Python, y me dio mucho gusto aprender como. Aca va.<br />
<blockquote>class Clase1:<br />Ancho = 20<br />Alto = 40&nbsp;&nbsp; </p></blockquote>
<p>Aca estamos creando una clase llamada Clase1 y le damos como atributos Ancho y Alto. Este código de por si no hace absolutamente nada. Solo crea un tipo de objeto llamado Clase1, pero hasta que no se cree una instancia de este objeto no pasa nada. </p>
<p>Para crearla una instancia de Clase1, lo tenemos que hacer por medio de una variable. Ejemplo<br />
<blockquote>caja = Clase1()</p></blockquote>
<p>Aca ya tenemos nuestra primera instancia. Ahora vamos a comprobar si funciona bien.<br />
<blockquote>print caja.Alto</p></blockquote>
<p>El resultado es 40. Genial. Todo esto se ha hecho en el mismo archivo. Pero que pasa si queremos separar las clases como en Flash?. Creamos un nuevo archivo, que este en la misma carpeta que en el que estábamos trabajando, que lo vamos a llamar Classe1.<br />
<blockquote>from Classe1 import Clase1<br />caja = Clase1()<br />print caja.Alto</p></blockquote>
<p>Lo anterior nos va dar el mismo resultado que antes. 40 Exelente.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/miprogramacionenjuegos.wordpress.com/75/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/miprogramacionenjuegos.wordpress.com/75/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/miprogramacionenjuegos.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/miprogramacionenjuegos.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/miprogramacionenjuegos.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/miprogramacionenjuegos.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/miprogramacionenjuegos.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/miprogramacionenjuegos.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/miprogramacionenjuegos.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/miprogramacionenjuegos.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/miprogramacionenjuegos.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/miprogramacionenjuegos.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/miprogramacionenjuegos.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/miprogramacionenjuegos.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/miprogramacionenjuegos.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/miprogramacionenjuegos.wordpress.com/75/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=miprogramacionenjuegos.wordpress.com&amp;blog=569950&amp;post=75&amp;subd=miprogramacionenjuegos&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://miprogramacionenjuegos.wordpress.com/2007/05/08/creando-una-clase-en-python-1/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5ea077ca55f79afc32386f655240d441?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">estados</media:title>
		</media:content>
	</item>
		<item>
		<title>Colocar una Imagen en una ventana con Pygame</title>
		<link>http://miprogramacionenjuegos.wordpress.com/2007/05/08/colocar-una-imagen-en-una-ventana-con-pygame/</link>
		<comments>http://miprogramacionenjuegos.wordpress.com/2007/05/08/colocar-una-imagen-en-una-ventana-con-pygame/#comments</comments>
		<pubDate>Tue, 08 May 2007 01:02:45 +0000</pubDate>
		<dc:creator>estados</dc:creator>
				<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://miprogramacionenjuegos.wordpress.com/2007/05/08/colocar-una-imagen-en-una-ventana-con-pygame/</guid>
		<description><![CDATA[Basándonos en el post de como crear una ventana. nombre_imagen = os.path.join(&#8220;carpeta&#8221;,&#8221;imagen.bmp&#8221;)superficie_imagen = pygame.image.load(nombre_imagen)ventana.blit(superficie_imagen, (50,50)) pygame.display.flip() nombre_imagen = os.path.join(&#8220;carpeta&#8221;,&#8221;imagen.bmp&#8221;)Lo que hace esta linea es solucionar el problema de las rutas de los directorios en los diferentes sistemas operativos. os.path.join, hace eso. superficie_imagen = pygame.image.load(nombre_imagen)Esta linea carga la imagen, con la ruta ya masticada por la [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=miprogramacionenjuegos.wordpress.com&amp;blog=569950&amp;post=74&amp;subd=miprogramacionenjuegos&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Basándonos en el post de <a href="http://miprogramacionenjuegos.wordpress.com/2007/05/07/mostrar-ventana-con-pygame/">como crear una ventana</a>. <br />
<blockquote>nombre_imagen = os.path.join(&#8220;carpeta&#8221;,&#8221;imagen.bmp&#8221;)<br />superficie_imagen = pygame.image.load(nombre_imagen)<br />ventana.blit(superficie_imagen, (50,50)) <br />pygame.display.flip() </p></blockquote>
<p><b>nombre_imagen = os.path.join(&#8220;carpeta&#8221;,&#8221;imagen.bmp&#8221;)</b><br />Lo que hace esta linea es solucionar el problema de las rutas de los directorios en los diferentes sistemas operativos. os.path.join, hace eso.</p>
<p><b>superficie_imagen = pygame.image.load(nombre_imagen)</b><br />Esta linea carga la imagen, con la ruta ya masticada por la primera linea, y asigna esta carga a la variable superficie_imagen</p>
<p><b>ventana.blit(superficie_imagen, (50,50)) </b><br />lo que hace esta linea es dibujar la imagen, en la ventana, y le da las coordenadas X y Y</p>
<p>El código quedaría así</p>
<blockquote><p>import pygame, sys,os<br />from pygame.locals import * <br />pygame.init() </p>
<p>pantalla = pygame.display.set_mode((600, 400))<br />pygame.display.set_caption(&#8216;Titulo del Juego&#8217;)<br />ventana = pygame.display.get_surface()</p>
<p>nombre_imagen = os.path.join(&#8220;carpeta&#8221;,&#8221;imagen.bmp&#8221;)<br />superficie_imagen = pygame.image.load(nombre_imagen)<br />ventana.blit(superficie_imagen, (50,50))<br />pygame.display.flip() </p>
<p>def detectarEventos(eventos): <br />&nbsp;&nbsp; for evento in eventos: <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if evento.type == QUIT: <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sys.exit(0) <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />while True: <br />&nbsp;&nbsp; detectarEventos(pygame.event.get()) </p></blockquote>
<p><b>Palermi Mejora el Codigo</b></p>
<p>DATOS = “directorio_con_las_imagenes”<br />def load_image(name, colorkey = False):<br />fullname = os.path.join(DATOS, name)<br />try: image = pygame.image.load(fullname)<br />except pygame.error, message:<br />print ‘No se puede cargar la imagen: ‘, fullname<br />raise SystemExit, message</p>
<p>image = image.convert()<br />if(colorkey):<br />colorkey = image.get_at((0,0))<br />image.set_colorkey(colorkey, RLEACCEL)<br />return image, image.get_rect()</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/miprogramacionenjuegos.wordpress.com/74/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/miprogramacionenjuegos.wordpress.com/74/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/miprogramacionenjuegos.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/miprogramacionenjuegos.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/miprogramacionenjuegos.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/miprogramacionenjuegos.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/miprogramacionenjuegos.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/miprogramacionenjuegos.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/miprogramacionenjuegos.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/miprogramacionenjuegos.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/miprogramacionenjuegos.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/miprogramacionenjuegos.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/miprogramacionenjuegos.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/miprogramacionenjuegos.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/miprogramacionenjuegos.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/miprogramacionenjuegos.wordpress.com/74/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=miprogramacionenjuegos.wordpress.com&amp;blog=569950&amp;post=74&amp;subd=miprogramacionenjuegos&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://miprogramacionenjuegos.wordpress.com/2007/05/08/colocar-una-imagen-en-una-ventana-con-pygame/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5ea077ca55f79afc32386f655240d441?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">estados</media:title>
		</media:content>
	</item>
	</channel>
</rss>
