<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comentarios en: Pygame X: Fuentes tipográficas</title>
	<atom:link href="http://razonartificial.com/2010/02/pygame-10-fuentes-tipograficas/feed/" rel="self" type="application/rss+xml" />
	<link>http://razonartificial.com/2010/02/pygame-10-fuentes-tipograficas/</link>
	<description>La ciencia y el arte de crear videojuegos</description>
	<lastBuildDate>Fri, 18 May 2012 22:25:24 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
	<item>
		<title>Por: Introducción a la programación de juegos con Python y Pygame &#171; Licencia para hackear by sh4r3m4n</title>
		<link>http://razonartificial.com/2010/02/pygame-10-fuentes-tipograficas/comment-page-1/#comment-5375</link>
		<dc:creator>Introducción a la programación de juegos con Python y Pygame &#171; Licencia para hackear by sh4r3m4n</dc:creator>
		<pubDate>Fri, 18 May 2012 22:24:31 +0000</pubDate>
		<guid isPermaLink="false">http://razonartificial.com/?p=190#comment-5375</guid>
		<description>[...] Pygame X: Fuentes tipográficas [...]</description>
		<content:encoded><![CDATA[<p>[...] Pygame X: Fuentes tipográficas [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: javifree</title>
		<link>http://razonartificial.com/2010/02/pygame-10-fuentes-tipograficas/comment-page-1/#comment-4593</link>
		<dc:creator>javifree</dc:creator>
		<pubDate>Sun, 26 Feb 2012 15:48:03 +0000</pubDate>
		<guid isPermaLink="false">http://razonartificial.com/?p=190#comment-4593</guid>
		<description>QUE NADIE RESPONDA EL ANTERIOR ESTE ES MI NUEVO OBJETIVO GRACIAS A TODOS
File &quot;pong.py&quot;, line 124
p_cpu, p_cpu_rect = texto(str(puntos
    ^
[1],WIDTH -WIDTH/4,40)</description>
		<content:encoded><![CDATA[<p>QUE NADIE RESPONDA EL ANTERIOR ESTE ES MI NUEVO OBJETIVO GRACIAS A TODOS<br />
File &#8220;pong.py&#8221;, line 124<br />
p_cpu, p_cpu_rect = texto(str(puntos<br />
    ^<br />
[1],WIDTH -WIDTH/4,40)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: javifree</title>
		<link>http://razonartificial.com/2010/02/pygame-10-fuentes-tipograficas/comment-page-1/#comment-4591</link>
		<dc:creator>javifree</dc:creator>
		<pubDate>Sun, 26 Feb 2012 14:14:40 +0000</pubDate>
		<guid isPermaLink="false">http://razonartificial.com/?p=190#comment-4591</guid>
		<description>GRACIAS ADRIAN POR TODO TU TRABAJO
es el mejor tutorial que he visto
no soy porgramador, ni experto, en el tutorial fuentes tipográficas tengo este error, cargue DroidSans.ttf
File &quot;pong10.py&quot;, line 90
	fuente = pygame.font.Font(&quot;images/DroidSans.ttf&quot;, 25)
 ^
SyntaxError: invalid syntax</description>
		<content:encoded><![CDATA[<p>GRACIAS ADRIAN POR TODO TU TRABAJO<br />
es el mejor tutorial que he visto<br />
no soy porgramador, ni experto, en el tutorial fuentes tipográficas tengo este error, cargue DroidSans.ttf<br />
File &#8220;pong10.py&#8221;, line 90<br />
	fuente = pygame.font.Font(&quot;images/DroidSans.ttf&quot;, 25)<br />
 ^<br />
SyntaxError: invalid syntax</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Tutorial de Pygame (5) - Uso de Fuentes Tipográficas &#124; UnboundDarkness Open Source Software</title>
		<link>http://razonartificial.com/2010/02/pygame-10-fuentes-tipograficas/comment-page-1/#comment-4524</link>
		<dc:creator>Tutorial de Pygame (5) - Uso de Fuentes Tipográficas &#124; UnboundDarkness Open Source Software</dc:creator>
		<pubDate>Mon, 20 Feb 2012 18:39:50 +0000</pubDate>
		<guid isPermaLink="false">http://razonartificial.com/?p=190#comment-4524</guid>
		<description>[...] tipográficas. Actualizada: Febrero 15, 2010. Fecha de consulta: Enero 26, 2012. Disponible en: http://razonartificial.com/2010/02/pygame-10-fuentes-tipograficas/   Se Social, ¡Comparte!           Entradas [...]</description>
		<content:encoded><![CDATA[<p>[...] tipográficas. Actualizada: Febrero 15, 2010. Fecha de consulta: Enero 26, 2012. Disponible en: <a href="http://razonartificial.com/2010/02/pygame-10-fuentes-tipograficas/" rel="nofollow">http://razonartificial.com/2010/02/pygame-10-fuentes-tipograficas/</a>   Se Social, ¡Comparte!           Entradas [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Diego</title>
		<link>http://razonartificial.com/2010/02/pygame-10-fuentes-tipograficas/comment-page-1/#comment-1946</link>
		<dc:creator>Diego</dc:creator>
		<pubDate>Sat, 16 Apr 2011 00:27:10 +0000</pubDate>
		<guid isPermaLink="false">http://razonartificial.com/?p=190#comment-1946</guid>
		<description>Agrego: Hace 4 o 5 meses que estoy con Python y me sorprende cada día que pasa. Se puede decir que es hasta divertido programar en Python. Hace mucho tiempo no sentía tanto placer con un lenguaje.</description>
		<content:encoded><![CDATA[<p>Agrego: Hace 4 o 5 meses que estoy con Python y me sorprende cada día que pasa. Se puede decir que es hasta divertido programar en Python. Hace mucho tiempo no sentía tanto placer con un lenguaje.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Diego</title>
		<link>http://razonartificial.com/2010/02/pygame-10-fuentes-tipograficas/comment-page-1/#comment-1945</link>
		<dc:creator>Diego</dc:creator>
		<pubDate>Sat, 16 Apr 2011 00:25:16 +0000</pubDate>
		<guid isPermaLink="false">http://razonartificial.com/?p=190#comment-1945</guid>
		<description>Excelente tutorial. Por curiosidad estuve viendo un poco sobre pygame. Me sorprende gratamente lo sencillo y entendible que es.
El tutorial (los 10 tutoriales) están muy buenos.
Felicitaciones por el trabajo!!</description>
		<content:encoded><![CDATA[<p>Excelente tutorial. Por curiosidad estuve viendo un poco sobre pygame. Me sorprende gratamente lo sencillo y entendible que es.<br />
El tutorial (los 10 tutoriales) están muy buenos.<br />
Felicitaciones por el trabajo!!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Raziel</title>
		<link>http://razonartificial.com/2010/02/pygame-10-fuentes-tipograficas/comment-page-1/#comment-1222</link>
		<dc:creator>Raziel</dc:creator>
		<pubDate>Wed, 23 Mar 2011 14:17:07 +0000</pubDate>
		<guid isPermaLink="false">http://razonartificial.com/?p=190#comment-1222</guid>
		<description>Comentario sobre lo anterior:
En lenguajes de programación como C++, no sucede esto implícitamente aunque se trate con cadenas de caracteres, ya que se debe indicar al compilador que el parámetro se está pasando por referencia, ya sea creando una función que reciba punteros o indicandole la variable con un &quot;&amp;&quot; (ampersand) antes de la variable. Bueno, eso será tema para otro blog, pero la idea principal es esa, y por tal motivo me confundí al principio ya que no sabía que python pasaba ese tipo de variables por referencia (Listas, tuplas y diccionarios), probaré con las otras.</description>
		<content:encoded><![CDATA[<p>Comentario sobre lo anterior:<br />
En lenguajes de programación como C++, no sucede esto implícitamente aunque se trate con cadenas de caracteres, ya que se debe indicar al compilador que el parámetro se está pasando por referencia, ya sea creando una función que reciba punteros o indicandole la variable con un &#8220;&amp;&#8221; (ampersand) antes de la variable. Bueno, eso será tema para otro blog, pero la idea principal es esa, y por tal motivo me confundí al principio ya que no sabía que python pasaba ese tipo de variables por referencia (Listas, tuplas y diccionarios), probaré con las otras.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Raziel</title>
		<link>http://razonartificial.com/2010/02/pygame-10-fuentes-tipograficas/comment-page-1/#comment-1221</link>
		<dc:creator>Raziel</dc:creator>
		<pubDate>Wed, 23 Mar 2011 14:11:09 +0000</pubDate>
		<guid isPermaLink="false">http://razonartificial.com/?p=190#comment-1221</guid>
		<description>Buenas camaradas, les tengo algo nuevo sobre la variable puntos, aunque creo que AdriGM ya lo sabe. 
En python, los diccionarios, listas y/o tuplas, son pasadas por referencia, es decir, que hacer:

[python]
puntos = bola.actualizar(time, pala_jug, pala_cpu, puntos)
[/python]

Es lo mismo que hacer:

[python]
bola.actualizar(time, pala_jug, pala_cpu, puntos)
[/python]

Para los que ya implementaron la función de texto, se darán cuenta que es así, y me dí cuenta mientras trataba de comparar los puntos actuales con respecto a los devueltos por la función actualizar de la clase bola. Luego trataré de decirles para qué. Espero sea pronto. Saludos.</description>
		<content:encoded><![CDATA[<p>Buenas camaradas, les tengo algo nuevo sobre la variable puntos, aunque creo que AdriGM ya lo sabe.<br />
En python, los diccionarios, listas y/o tuplas, son pasadas por referencia, es decir, que hacer:</p>
<pre class="brush: python; title: ; notranslate">
puntos = bola.actualizar(time, pala_jug, pala_cpu, puntos)
</pre>
<p>Es lo mismo que hacer:</p>
<pre class="brush: python; title: ; notranslate">
bola.actualizar(time, pala_jug, pala_cpu, puntos)
</pre>
<p>Para los que ya implementaron la función de texto, se darán cuenta que es así, y me dí cuenta mientras trataba de comparar los puntos actuales con respecto a los devueltos por la función actualizar de la clase bola. Luego trataré de decirles para qué. Espero sea pronto. Saludos.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Kurai</title>
		<link>http://razonartificial.com/2010/02/pygame-10-fuentes-tipograficas/comment-page-1/#comment-494</link>
		<dc:creator>Kurai</dc:creator>
		<pubDate>Fri, 07 Jan 2011 04:23:56 +0000</pubDate>
		<guid isPermaLink="false">http://razonartificial.com/?p=190#comment-494</guid>
		<description>Solucion sencilla al problema de la pared:

[python]
def update(self, t, pala_jug, pala_cpu, points):
        grup = pygame.sprite.Group(pala_jug, pala_cpu)
        point_jug = self.rect.right &gt;= WIDTH
        point_cpu = self.rect.left &lt;= 0
        
        if point_jug or point_cpu:   
            self.wait = time.time()
            self.speed = [0, 0]
            self.rect.centerx = WIDTH / 2
            self.rect.centery = HEIGHT / 2
            
            if point_jug:
                points[0] += 1
            else:
                points[1] += 1
        
        if self.wait != 0 and time.time() - self.wait  &gt;= 1:
            self.speed = [0.5, -0.5]
            self.wait = 0
        
        if self.rect.left &lt;= 0 or self.rect.right &gt;= WIDTH:
            self.speed[0] = -self.speed[0]
            
        if self.rect.top &lt;= 0 or self.rect.bottom &gt;= HEIGHT:
            self.speed[1] = -self.speed[1]

        if pygame.sprite.spritecollide(self, grup, False):
            self.speed[0] = -self.speed[0]
            
        self.rect.centerx += self.speed[0] * t
        self.rect.centery += self.speed[1] * t
            
        return points
[/python]

en la linea 7 se obtiene la hora actual en segundos y se almacena en el atributo wait (introducido por mi), en la linea 8 la velocidad tanto vertical como horizontal de la bola se fijan a 0, y se posiciona la misma en el centro en las lineas 9 y 10. En la linea 17 se verifica que wait sea distinto de 0 (quiere decir que la bola esta quieta) y que al menos a pasado un segundo desde que fue anotado un punto y fue centrada la bola, en la linea 18 se fijan la velocidades originales de la bola y en la linea 19 wait se fija a 0</description>
		<content:encoded><![CDATA[<p>Solucion sencilla al problema de la pared:</p>
<pre class="brush: python; title: ; notranslate">
def update(self, t, pala_jug, pala_cpu, points):
        grup = pygame.sprite.Group(pala_jug, pala_cpu)
        point_jug = self.rect.right &gt;= WIDTH
        point_cpu = self.rect.left &lt;= 0

        if point_jug or point_cpu:
            self.wait = time.time()
            self.speed = [0, 0]
            self.rect.centerx = WIDTH / 2
            self.rect.centery = HEIGHT / 2

            if point_jug:
                points[0] += 1
            else:
                points[1] += 1

        if self.wait != 0 and time.time() - self.wait  &gt;= 1:
            self.speed = [0.5, -0.5]
            self.wait = 0

        if self.rect.left &lt;= 0 or self.rect.right &gt;= WIDTH:
            self.speed[0] = -self.speed[0]

        if self.rect.top &lt;= 0 or self.rect.bottom &gt;= HEIGHT:
            self.speed[1] = -self.speed[1]

        if pygame.sprite.spritecollide(self, grup, False):
            self.speed[0] = -self.speed[0]

        self.rect.centerx += self.speed[0] * t
        self.rect.centery += self.speed[1] * t

        return points
</pre>
<p>en la linea 7 se obtiene la hora actual en segundos y se almacena en el atributo wait (introducido por mi), en la linea 8 la velocidad tanto vertical como horizontal de la bola se fijan a 0, y se posiciona la misma en el centro en las lineas 9 y 10. En la linea 17 se verifica que wait sea distinto de 0 (quiere decir que la bola esta quieta) y que al menos a pasado un segundo desde que fue anotado un punto y fue centrada la bola, en la linea 18 se fijan la velocidades originales de la bola y en la linea 19 wait se fija a 0</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: L2Radamanthys</title>
		<link>http://razonartificial.com/2010/02/pygame-10-fuentes-tipograficas/comment-page-1/#comment-402</link>
		<dc:creator>L2Radamanthys</dc:creator>
		<pubDate>Sun, 12 Dec 2010 04:24:02 +0000</pubDate>
		<guid isPermaLink="false">http://razonartificial.com/?p=190#comment-402</guid>
		<description>Hola mirando el codigo del me di cuenta de que el problema q tenes es q no esta definida la funcion load_imagen(), esa funcion no pertenece a la libreria de pygame (pygame carga imagenes con pygame.image.load()), solo es una funcion para mejorar la carga de imagenes, creo que es para cargar formato png y convertirlos (esa es la opcion del segundo parametro) para asi renderizarla mas rapido.. creo el codigo de dicha funcion se encuentra mas atras..

saludos</description>
		<content:encoded><![CDATA[<p>Hola mirando el codigo del me di cuenta de que el problema q tenes es q no esta definida la funcion load_imagen(), esa funcion no pertenece a la libreria de pygame (pygame carga imagenes con pygame.image.load()), solo es una funcion para mejorar la carga de imagenes, creo que es para cargar formato png y convertirlos (esa es la opcion del segundo parametro) para asi renderizarla mas rapido.. creo el codigo de dicha funcion se encuentra mas atras..</p>
<p>saludos</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Carlos</title>
		<link>http://razonartificial.com/2010/02/pygame-10-fuentes-tipograficas/comment-page-1/#comment-135</link>
		<dc:creator>Carlos</dc:creator>
		<pubDate>Fri, 22 Oct 2010 07:19:13 +0000</pubDate>
		<guid isPermaLink="false">http://razonartificial.com/?p=190#comment-135</guid>
		<description>Hola muchas gracias por el gran aporte que haces, bueno yo recién estoy empezando con pygame y estuve copiando el anterior código de puntuación y excelente, pero ahora me sale un error con lo de texto de esta linea:

 018 self.image = load_image(&quot;images/ball.png&quot;, True)

y me dice:
self.image = load_image(&quot;images/ball.png&quot;, True)
                        ^
SyntaxError: invalid syntax&gt;&gt;&gt; Exit Code: 1

Agradezco tu anticipada respuesta.</description>
		<content:encoded><![CDATA[<p>Hola muchas gracias por el gran aporte que haces, bueno yo recién estoy empezando con pygame y estuve copiando el anterior código de puntuación y excelente, pero ahora me sale un error con lo de texto de esta linea:</p>
<p> 018 self.image = load_image(&quot;images/ball.png&quot;, True)</p>
<p>y me dice:<br />
self.image = load_image(&quot;images/ball.png&quot;, True)<br />
                        ^<br />
SyntaxError: invalid syntax&gt;&gt;&gt; Exit Code: 1</p>
<p>Agradezco tu anticipada respuesta.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: adrigm</title>
		<link>http://razonartificial.com/2010/02/pygame-10-fuentes-tipograficas/comment-page-1/#comment-134</link>
		<dc:creator>adrigm</dc:creator>
		<pubDate>Thu, 14 Oct 2010 11:02:36 +0000</pubDate>
		<guid isPermaLink="false">http://razonartificial.com/?p=190#comment-134</guid>
		<description>federico, debes dibujarlos después del fondo para que en cada paso del bucle el fondo se pinte encima.</description>
		<content:encoded><![CDATA[<p>federico, debes dibujarlos después del fondo para que en cada paso del bucle el fondo se pinte encima.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: federico</title>
		<link>http://razonartificial.com/2010/02/pygame-10-fuentes-tipograficas/comment-page-1/#comment-133</link>
		<dc:creator>federico</dc:creator>
		<pubDate>Thu, 14 Oct 2010 04:15:15 +0000</pubDate>
		<guid isPermaLink="false">http://razonartificial.com/?p=190#comment-133</guid>
		<description>me gustaria saber porq a mi el texto se me sobrepone y no se actualiza, me quedan los numeros arriba del otro</description>
		<content:encoded><![CDATA[<p>me gustaria saber porq a mi el texto se me sobrepone y no se actualiza, me quedan los numeros arriba del otro</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Andrés</title>
		<link>http://razonartificial.com/2010/02/pygame-10-fuentes-tipograficas/comment-page-1/#comment-132</link>
		<dc:creator>Andrés</dc:creator>
		<pubDate>Sun, 22 Aug 2010 20:16:45 +0000</pubDate>
		<guid isPermaLink="false">http://razonartificial.com/?p=190#comment-132</guid>
		<description>Tengo una solución al problema de la pared con menos líneas de código:

[python]class Bola(pygame.sprite.Sprite):
	def __init__(self):
		pygame.sprite.Sprite.__init__(self)
		self.image = load_image(&quot;images/ball.png&quot;, True)
		self.rect = self.image.get_rect()
		self.rect.centerx = WIDTH / 2
		self.rect.centery = HEIGHT / 2
		self.speed = [0.2, -0.2]
	def actualizar(self, time, colisiones, puntos, jugador):
		self.rect.centerx += self.speed[0] * time
		self.rect.centery += self.speed[1] * time

		#chocar con la pala
		for elemento in colisiones:
			if pygame.sprite.collide_rect(self, elemento):
				self.speed[0] = -self.speed[0]
				self.rect.centerx += self.speed[0] * time
				jugador = colisiones.index(elemento)

		#Sumar Punto
		if self.rect.left &lt;= 0 and jugador == 1:
			puntos[1] += 1
		if self.rect.right &gt;= WIDTH and jugador == 0:
			puntos[0] += 1

		#chocar con la pared
		if self.rect.left &lt;= 0 or self.rect.right &gt;= WIDTH:
			self.speed[0] = -self.speed[0]
			self.rect.centerx += self.speed[0] * time
		if self.rect.top &lt;= 0 or self.rect.bottom &gt;= HEIGHT:
			self.speed[1] = -self.speed[1]
			self.rect.centery += self.speed[1] * time


		return puntos, jugador[/python]

lo único que hay que comprobar quien fue el último que le pegó a la pelota y si fue el contrario sumamos el punto, si no, nones.

Dejo el script completo por pastebin:
http://pastebin.com/4acUCu2F

Felicidades al autor por el tutorial</description>
		<content:encoded><![CDATA[<p>Tengo una solución al problema de la pared con menos líneas de código:</p>
<pre class="brush: python; title: ; notranslate">class Bola(pygame.sprite.Sprite):
	def __init__(self):
		pygame.sprite.Sprite.__init__(self)
		self.image = load_image(&quot;images/ball.png&quot;, True)
		self.rect = self.image.get_rect()
		self.rect.centerx = WIDTH / 2
		self.rect.centery = HEIGHT / 2
		self.speed = [0.2, -0.2]
	def actualizar(self, time, colisiones, puntos, jugador):
		self.rect.centerx += self.speed[0] * time
		self.rect.centery += self.speed[1] * time

		#chocar con la pala
		for elemento in colisiones:
			if pygame.sprite.collide_rect(self, elemento):
				self.speed[0] = -self.speed[0]
				self.rect.centerx += self.speed[0] * time
				jugador = colisiones.index(elemento)

		#Sumar Punto
		if self.rect.left &lt;= 0 and jugador == 1:
			puntos[1] += 1
		if self.rect.right &gt;= WIDTH and jugador == 0:
			puntos[0] += 1

		#chocar con la pared
		if self.rect.left &lt;= 0 or self.rect.right &gt;= WIDTH:
			self.speed[0] = -self.speed[0]
			self.rect.centerx += self.speed[0] * time
		if self.rect.top &lt;= 0 or self.rect.bottom &gt;= HEIGHT:
			self.speed[1] = -self.speed[1]
			self.rect.centery += self.speed[1] * time

		return puntos, jugador</pre>
<p>lo único que hay que comprobar quien fue el último que le pegó a la pelota y si fue el contrario sumamos el punto, si no, nones.</p>
<p>Dejo el script completo por pastebin:<br />
<a href="http://pastebin.com/4acUCu2F" rel="nofollow">http://pastebin.com/4acUCu2F</a></p>
<p>Felicidades al autor por el tutorial</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: animelafuerza</title>
		<link>http://razonartificial.com/2010/02/pygame-10-fuentes-tipograficas/comment-page-1/#comment-131</link>
		<dc:creator>animelafuerza</dc:creator>
		<pubDate>Thu, 22 Jul 2010 20:52:55 +0000</pubDate>
		<guid isPermaLink="false">http://razonartificial.com/?p=190#comment-131</guid>
		<description>Muchisimas gracias por el tutorial, ahora creoq ue puedo (empesar) con el engine del juego, y, si no, con lo que he visto creoq ue podre entender mas el codigo de algunos ejemplos de pygame.

Saludos (PD, cuando tenga algo lo publico en mi Web, saludos)</description>
		<content:encoded><![CDATA[<p>Muchisimas gracias por el tutorial, ahora creoq ue puedo (empesar) con el engine del juego, y, si no, con lo que he visto creoq ue podre entender mas el codigo de algunos ejemplos de pygame.</p>
<p>Saludos (PD, cuando tenga algo lo publico en mi Web, saludos)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Dokan</title>
		<link>http://razonartificial.com/2010/02/pygame-10-fuentes-tipograficas/comment-page-1/#comment-130</link>
		<dc:creator>Dokan</dc:creator>
		<pubDate>Mon, 19 Jul 2010 17:51:39 +0000</pubDate>
		<guid isPermaLink="false">http://razonartificial.com/?p=190#comment-130</guid>
		<description>Enhorabuena por el tutorial. Me gusta con qué sencillez explicas las cosas, aunque deberías prestar atención a las faltas de ortografía y otros detalles. Eso no desmerece el trabajo que has hecho.</description>
		<content:encoded><![CDATA[<p>Enhorabuena por el tutorial. Me gusta con qué sencillez explicas las cosas, aunque deberías prestar atención a las faltas de ortografía y otros detalles. Eso no desmerece el trabajo que has hecho.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Jaboto</title>
		<link>http://razonartificial.com/2010/02/pygame-10-fuentes-tipograficas/comment-page-1/#comment-129</link>
		<dc:creator>Jaboto</dc:creator>
		<pubDate>Wed, 24 Mar 2010 15:27:48 +0000</pubDate>
		<guid isPermaLink="false">http://razonartificial.com/?p=190#comment-129</guid>
		<description>Hola,

solo quería felicitarte por el tutorial, he llegado a él a través de la página de pygame.org y me ha parecido estupendo.

¡Gracias!</description>
		<content:encoded><![CDATA[<p>Hola,</p>
<p>solo quería felicitarte por el tutorial, he llegado a él a través de la página de pygame.org y me ha parecido estupendo.</p>
<p>¡Gracias!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Máximo</title>
		<link>http://razonartificial.com/2010/02/pygame-10-fuentes-tipograficas/comment-page-1/#comment-128</link>
		<dc:creator>Máximo</dc:creator>
		<pubDate>Sun, 21 Mar 2010 22:41:19 +0000</pubDate>
		<guid isPermaLink="false">http://razonartificial.com/?p=190#comment-128</guid>
		<description>Para solucionar el problema de la pared edité la clase Bola de esta manera:




class Bola(pygame.sprite.Sprite):
	def __init__(self):
		pygame.sprite.Sprite.__init__(self)
		self.image = load_image(&quot;images/ball.png&quot;, True)
		self.rect = self.image.get_rect()
		self.rect.centerx = WIDTH / 2
		self.rect.centery = HEIGHT / 2
		self.direccion = self.aleatorio(1, 1, 4)
		if self.direccion == 1:
                        self.speed = [0.3, -0.1]
                elif self.direccion == 2:
                        self.speed = [-0.3, 0.1]
                elif self.direccion == 3:
                        self.speed = [-0.3, -0.1]
                elif self.direccion == 4:
                        self.speed = [0.3, 0.1]

	def aleatorio(self, rango, a, b):
                for i in range(rango):
                        return random.randint(a, b)


	def actualizar(self, tiempo, pala_jug, pala_cpu, puntos):
		self.rect.centerx += self.speed[0] * tiempo
		self.rect.centery += self.speed[1] * tiempo

		if self.rect.left = WIDTH:
			puntos[0] += 1
			self.__init__()

		if self.rect.left = WIDTH:
			self.speed[0] = -self.speed[0]
			self.rect.centerx += self.speed[0] * tiempo
		if self.rect.top = HEIGHT:
			self.speed[1] = -self.speed[1]
			self.rect.centery += self.speed[1] * tiempo

		if pygame.sprite.collide_rect(self, pala_jug):
			self.speed[0] = -self.speed[0]
			self.rect.centerx += self.speed[0] * tiempo

		if pygame.sprite.collide_rect(self, pala_cpu):
			self.speed[0] = -self.speed[0]
			self.rect.centerx += self.speed[0] * tiempo

		return puntos</description>
		<content:encoded><![CDATA[<p>Para solucionar el problema de la pared edité la clase Bola de esta manera:</p>
<p>class Bola(pygame.sprite.Sprite):<br />
	def __init__(self):<br />
		pygame.sprite.Sprite.__init__(self)<br />
		self.image = load_image(&#8220;images/ball.png&#8221;, True)<br />
		self.rect = self.image.get_rect()<br />
		self.rect.centerx = WIDTH / 2<br />
		self.rect.centery = HEIGHT / 2<br />
		self.direccion = self.aleatorio(1, 1, 4)<br />
		if self.direccion == 1:<br />
                        self.speed = [0.3, -0.1]<br />
                elif self.direccion == 2:<br />
                        self.speed = [-0.3, 0.1]<br />
                elif self.direccion == 3:<br />
                        self.speed = [-0.3, -0.1]<br />
                elif self.direccion == 4:<br />
                        self.speed = [0.3, 0.1]</p>
<p>	def aleatorio(self, rango, a, b):<br />
                for i in range(rango):<br />
                        return random.randint(a, b)</p>
<p>	def actualizar(self, tiempo, pala_jug, pala_cpu, puntos):<br />
		self.rect.centerx += self.speed[0] * tiempo<br />
		self.rect.centery += self.speed[1] * tiempo</p>
<p>		if self.rect.left = WIDTH:<br />
			puntos[0] += 1<br />
			self.__init__()</p>
<p>		if self.rect.left = WIDTH:<br />
			self.speed[0] = -self.speed[0]<br />
			self.rect.centerx += self.speed[0] * tiempo<br />
		if self.rect.top = HEIGHT:<br />
			self.speed[1] = -self.speed[1]<br />
			self.rect.centery += self.speed[1] * tiempo</p>
<p>		if pygame.sprite.collide_rect(self, pala_jug):<br />
			self.speed[0] = -self.speed[0]<br />
			self.rect.centerx += self.speed[0] * tiempo</p>
<p>		if pygame.sprite.collide_rect(self, pala_cpu):<br />
			self.speed[0] = -self.speed[0]<br />
			self.rect.centerx += self.speed[0] * tiempo</p>
<p>		return puntos</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: admin</title>
		<link>http://razonartificial.com/2010/02/pygame-10-fuentes-tipograficas/comment-page-1/#comment-127</link>
		<dc:creator>admin</dc:creator>
		<pubDate>Wed, 03 Mar 2010 22:41:04 +0000</pubDate>
		<guid isPermaLink="false">http://razonartificial.com/?p=190#comment-127</guid>
		<description>varetti, no creo que usar esa línea sea lo mejor. Lo que eso hace es llamar al método constructor de clase y &quot;reiniciar&quot; la pelota.

Es mejor que cuando detecte la pared añadas esto:

self.rect = (WIDH/2, HEIGHT/2)

esto hace que el rect de la bola tenga las coordenadas del centro de la ventana.

Hago la comprobación dos veces porque ahorra código porque la línea 33 cambia la dirección de la pelota independientemente de que sea la pared izquierda o derecha, sin embargo, para los puntos necesitamos controlar en que pared da para asignárselos a uno u otro.</description>
		<content:encoded><![CDATA[<p>varetti, no creo que usar esa línea sea lo mejor. Lo que eso hace es llamar al método constructor de clase y &#8220;reiniciar&#8221; la pelota.</p>
<p>Es mejor que cuando detecte la pared añadas esto:</p>
<p>self.rect = (WIDH/2, HEIGHT/2)</p>
<p>esto hace que el rect de la bola tenga las coordenadas del centro de la ventana.</p>
<p>Hago la comprobación dos veces porque ahorra código porque la línea 33 cambia la dirección de la pelota independientemente de que sea la pared izquierda o derecha, sin embargo, para los puntos necesitamos controlar en que pared da para asignárselos a uno u otro.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: varetti</title>
		<link>http://razonartificial.com/2010/02/pygame-10-fuentes-tipograficas/comment-page-1/#comment-126</link>
		<dc:creator>varetti</dc:creator>
		<pubDate>Wed, 03 Mar 2010 17:59:10 +0000</pubDate>
		<guid isPermaLink="false">http://razonartificial.com/?p=190#comment-126</guid>
		<description>me respondo a mi mismo: py2app

es algo lioso pero cuando le pillas el truco va bastante bien

:)</description>
		<content:encoded><![CDATA[<p>me respondo a mi mismo: py2app</p>
<p>es algo lioso pero cuando le pillas el truco va bastante bien</p>
<p>:)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: varetti</title>
		<link>http://razonartificial.com/2010/02/pygame-10-fuentes-tipograficas/comment-page-1/#comment-125</link>
		<dc:creator>varetti</dc:creator>
		<pubDate>Wed, 03 Mar 2010 16:05:48 +0000</pubDate>
		<guid isPermaLink="false">http://razonartificial.com/?p=190#comment-125</guid>
		<description>Muy bueno el tutorial. Yo tb logré hacer que la pelota vuelva al centro. Basta con llamar a self.__init__() al comprobar que toca una de las paredes.

A modo de comentario, decir que sobran las líneas 33, 34 y 35 ya que la comprobación se hace en las líneas anteriores, donde se aumenta la puntuación.

también me gustaría hacer una pregunta... ¿alguien sabe como crear un ejecutable del juego en mac?</description>
		<content:encoded><![CDATA[<p>Muy bueno el tutorial. Yo tb logré hacer que la pelota vuelva al centro. Basta con llamar a self.__init__() al comprobar que toca una de las paredes.</p>
<p>A modo de comentario, decir que sobran las líneas 33, 34 y 35 ya que la comprobación se hace en las líneas anteriores, donde se aumenta la puntuación.</p>
<p>también me gustaría hacer una pregunta&#8230; ¿alguien sabe como crear un ejecutable del juego en mac?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Morton</title>
		<link>http://razonartificial.com/2010/02/pygame-10-fuentes-tipograficas/comment-page-1/#comment-124</link>
		<dc:creator>Morton</dc:creator>
		<pubDate>Mon, 22 Feb 2010 17:43:46 +0000</pubDate>
		<guid isPermaLink="false">http://razonartificial.com/?p=190#comment-124</guid>
		<description>Que grande, espero ese post con ansias!

Mientras tanto hice unas pruebitas y logré que la pelota vuelva al centro y salga para el lado del que sumó el punto, pero igual es muy repentino, lo tengo que revisar...

Gracias por todo! ;)</description>
		<content:encoded><![CDATA[<p>Que grande, espero ese post con ansias!</p>
<p>Mientras tanto hice unas pruebitas y logré que la pelota vuelva al centro y salga para el lado del que sumó el punto, pero igual es muy repentino, lo tengo que revisar&#8230;</p>
<p>Gracias por todo! ;)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: admin</title>
		<link>http://razonartificial.com/2010/02/pygame-10-fuentes-tipograficas/comment-page-1/#comment-123</link>
		<dc:creator>admin</dc:creator>
		<pubDate>Mon, 22 Feb 2010 14:54:20 +0000</pubDate>
		<guid isPermaLink="false">http://razonartificial.com/?p=190#comment-123</guid>
		<description>Morton, si eso ya lo había detectado, el motivo de no corregirlo es que se supone que cuando se anota un punto la pelota vuelve al centro y se &quot;saca&quot;.

La idea era que al anotar un punto la pelota vuelve automáticamente al centro y no hay posibilidad de que rebote otra vez, pero todavía no esta implementado en el juego, en próximos tutoriales lo haré.</description>
		<content:encoded><![CDATA[<p>Morton, si eso ya lo había detectado, el motivo de no corregirlo es que se supone que cuando se anota un punto la pelota vuelve al centro y se &#8220;saca&#8221;.</p>
<p>La idea era que al anotar un punto la pelota vuelve automáticamente al centro y no hay posibilidad de que rebote otra vez, pero todavía no esta implementado en el juego, en próximos tutoriales lo haré.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Morton</title>
		<link>http://razonartificial.com/2010/02/pygame-10-fuentes-tipograficas/comment-page-1/#comment-122</link>
		<dc:creator>Morton</dc:creator>
		<pubDate>Mon, 22 Feb 2010 04:31:35 +0000</pubDate>
		<guid isPermaLink="false">http://razonartificial.com/?p=190#comment-122</guid>
		<description>Genial, gracias, funcionó!

Otro problema es que cuando la pelotita queda atrapada entre la pared y la pala, rebota y le suma muchos puntos de golpe al adversario, supongo que podría solucionarse con ponerle un tiempo mínimo de espera al sumado de puntos y que no sea inmediato...</description>
		<content:encoded><![CDATA[<p>Genial, gracias, funcionó!</p>
<p>Otro problema es que cuando la pelotita queda atrapada entre la pared y la pala, rebota y le suma muchos puntos de golpe al adversario, supongo que podría solucionarse con ponerle un tiempo mínimo de espera al sumado de puntos y que no sea inmediato&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: admin</title>
		<link>http://razonartificial.com/2010/02/pygame-10-fuentes-tipograficas/comment-page-1/#comment-121</link>
		<dc:creator>admin</dc:creator>
		<pubDate>Sat, 20 Feb 2010 20:26:17 +0000</pubDate>
		<guid isPermaLink="false">http://razonartificial.com/?p=190#comment-121</guid>
		<description>Morton,si la IA es casi invencible, pero puedes arreglarlo haciendo que la palas vayan mas lentas que la pelota, así no siempre llegará. Prueba a bajar el self.speed = 0.5 a 0.4 y verás.</description>
		<content:encoded><![CDATA[<p>Morton,si la IA es casi invencible, pero puedes arreglarlo haciendo que la palas vayan mas lentas que la pelota, así no siempre llegará. Prueba a bajar el self.speed = 0.5 a 0.4 y verás.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Morton</title>
		<link>http://razonartificial.com/2010/02/pygame-10-fuentes-tipograficas/comment-page-1/#comment-120</link>
		<dc:creator>Morton</dc:creator>
		<pubDate>Sat, 20 Feb 2010 20:20:10 +0000</pubDate>
		<guid isPermaLink="false">http://razonartificial.com/?p=190#comment-120</guid>
		<description>Excelente tutorial! Lo vengo siguiendo, ya tengo mi pong! Me parece, si no hice nada mal, que la IA quedó, en efecto, invencible. Espero la nueva entrega!</description>
		<content:encoded><![CDATA[<p>Excelente tutorial! Lo vengo siguiendo, ya tengo mi pong! Me parece, si no hice nada mal, que la IA quedó, en efecto, invencible. Espero la nueva entrega!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: ECAMA</title>
		<link>http://razonartificial.com/2010/02/pygame-10-fuentes-tipograficas/comment-page-1/#comment-119</link>
		<dc:creator>ECAMA</dc:creator>
		<pubDate>Thu, 18 Feb 2010 03:25:11 +0000</pubDate>
		<guid isPermaLink="false">http://razonartificial.com/?p=190#comment-119</guid>
		<description>Muy buen tutorial, soy programador pero nunca he tenido la oportunidad de trabajar con PYTHON, la verdad que este tutorial me anima a incursionar en este mundo aunque sea por pasatiempo ya que mi trabajo demanda otros lenguajes de programación. Gracias por el aporte.</description>
		<content:encoded><![CDATA[<p>Muy buen tutorial, soy programador pero nunca he tenido la oportunidad de trabajar con PYTHON, la verdad que este tutorial me anima a incursionar en este mundo aunque sea por pasatiempo ya que mi trabajo demanda otros lenguajes de programación. Gracias por el aporte.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

