<?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/">
	<channel>
		<title><![CDATA[Foros Python - Videojuegos y multimedia]]></title>
		<link>https://foro.recursospython.com/</link>
		<description><![CDATA[Foros Python - https://foro.recursospython.com]]></description>
		<pubDate>Thu, 18 Jun 2026 12:00:34 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[ayuda con código que se cierra al darle enter]]></title>
			<link>https://foro.recursospython.com/showthread.php?tid=1495</link>
			<pubDate>Sun, 22 Sep 2024 19:33:58 -0700</pubDate>
			<dc:creator><![CDATA[<a href="https://foro.recursospython.com/member.php?action=profile&uid=1611">davirreggae</a>]]></dc:creator>
			<guid isPermaLink="false">https://foro.recursospython.com/showthread.php?tid=1495</guid>
			<description><![CDATA[Hola gente soy david de argentina tengo disscapacidad visual y estoy tratando de hacer un juego como el cluedo con la misma temática. La ventana del intérprete si me abre me sale el mensaje que elija con cuantos jugadores quiero jugar y que ingrese el número cuando le pongo el número y le doy enter se cierra automáticamente , revisé el código y no le encuentro donde puede estar el error en realidad quiero  poder arreglar esto para después continuarlo con una presntación y mas opciones para hacerlo más divertido. Acontinuación va el código, espero puedan ayudarme. <br />
<br />
import random<br />
<br />
# Definimos las clases para los elementos del juego<br />
class Sospechoso:<br />
    def __init__(self, nombre):<br />
        self.nombre = nombre<br />
<br />
class Arma:<br />
    def __init__(self, nombre):<br />
        self.nombre = nombre<br />
<br />
class Aposento:<br />
    def __init__(self, nombre):<br />
        self.nombre = nombre<br />
<br />
class JuegoClue:<br />
    def __init__(self):<br />
        self.sospechosos = [<br />
            Sospechoso("Dueño de Casa"),<br />
            Sospechoso("Dueña de Casa"),<br />
            Sospechoso("Sirvienta"),<br />
            Sospechoso("Cocinera"),<br />
            Sospechoso("Jardinero"),<br />
            Sospechoso("Mayordomo")<br />
        ]<br />
        <br />
        self.armas = [<br />
            Arma("Veneno"),<br />
            Arma("Revólver"),<br />
            Arma("Cuerda"),<br />
            Arma("Hacha"),<br />
            Arma("Palanca"),<br />
            Arma("Cuchillo")<br />
        ]<br />
        <br />
        self.aposentos = [<br />
            Aposento("Dormitorio"),<br />
            Aposento("Baño"),<br />
            Aposento("Sótano"),<br />
            Aposento("Cocina"),<br />
            Aposento("Salón"),<br />
            Aposento("Biblioteca"),<br />
            Aposento("Oficina"),<br />
            Aposento("Comedor"),<br />
            Aposento("Jardín")<br />
        ]<br />
<br />
        self.sospechosos_en_juego = []<br />
        self.archivo_confidencial = []<br />
        self.libretas = {}<br />
        self.turno_actual = 0<br />
<br />
    def configurar_juego(self, num_jugadores):<br />
        self.sospechosos_en_juego = random.sample(self.sospechosos, num_jugadores)<br />
        self.archivo_confidencial = (<br />
            random.choice(self.sospechosos_en_juego),<br />
            random.choice(self.armas),<br />
            random.choice(self.aposentos)<br />
        )<br />
        for sospechoso in self.sospechosos_en_juego:<br />
            self.libretas[sospechoso.nombre] = []<br />
<br />
    def mostrar_informacion(self):<br />
        print("Sospechosos en juego:")<br />
        for sospechoso in self.sospechosos_en_juego:<br />
            print(f"- {sospechoso.nombre}")<br />
<br />
    def tirar_dado(self):<br />
        return random.randint(1, 6)<br />
<br />
    def hacer_sugerencia(self, jugador, sospechoso, arma, aposento):<br />
        print(f"{jugador.nombre} sugiere que el crimen fue cometido por {sospechoso.nombre}, "<br />
              f"con {arma.nombre}, en el {aposento.nombre}.")<br />
        for i in range(1, len(self.sospechosos_en_juego) + 1):<br />
            jugador_o = self.sospechosos_en_juego[(self.turno_actual + i) % len(self.sospechosos_en_juego)]<br />
            if jugador_o != jugador:<br />
                # Simulación de que el jugador revisa sus cartas<br />
                if any(c.nombre == sospechoso.nombre or c.nombre == arma.nombre or c.nombre == aposento.nombre for c in jugador_o.cartas):<br />
                    carta_mostrada = random.choice([c for c in jugador_o.cartas if c.nombre == sospechoso.nombre or c.nombre == arma.nombre or c.nombre == aposento.nombre])<br />
                    print(f"{jugador_o.nombre} ha mostrado una carta.")<br />
                    self.libretas[jugador.nombre].append(carta_mostrada)<br />
                    return<br />
        print(f"{jugador.nombre} no recibió ninguna carta.")<br />
<br />
    def hacer_acusacion(self, jugador, sospechoso, arma, aposento):<br />
        print(f"{jugador.nombre} acusa que el crimen fue cometido por {sospechoso.nombre}, "<br />
              f"con {arma.nombre}, en el {aposento.nombre}.")<br />
        # Aquí se comprobaría la acusación, pero se omitirá para mantener el misterio.<br />
<br />
def main():<br />
    juego = JuegoClue()<br />
<br />
    while True:<br />
        try:<br />
            num_jugadores = int(input("Ingrese el número de jugadores (2 a 6): "))<br />
            if num_jugadores &lt; 2 or num_jugadores &gt; 6:<br />
                print("Número de jugadores no válido.")<br />
                continue<br />
<br />
            juego.configurar_juego(num_jugadores)<br />
            juego.mostrar_informacion()<br />
<br />
            while True:<br />
                jugador = juego.sospechosos_en_juego[juego.turno_actual]<br />
                dado = juego.tirar_dado()<br />
                print(f"{jugador.nombre} tira el dado y obtiene un {dado}.")<br />
<br />
                # Aquí iría la lógica de movimiento<br />
                # Supongamos que el jugador hace una sugerencia<br />
                sospechoso = random.choice(juego.sospechosos_en_juego)<br />
                arma = random.choice(juego.armas)<br />
                aposento = random.choice(juego.aposentos)<br />
                juego.hacer_sugerencia(jugador, sospechoso, arma, aposento)<br />
<br />
                # Supongamos que el jugador decide hacer una acusación<br />
                juego.hacer_acusacion(jugador, sospechoso, arma, aposento)<br />
<br />
                # Pasar al siguiente jugador<br />
                juego.turno_actual = (juego.turno_actual + 1) % len(juego.sospechosos_en_juego)<br />
<br />
                continuar = input("¿Desea continuar la partida? (s/n): ")<br />
                if continuar.lower() != 's':<br />
                    break<br />
<br />
        except ValueError:<br />
            print("Por favor, ingrese un número válido.")<br />
<br />
        continuar_partida = input("¿Desea iniciar una nueva partida? (s/n): ")<br />
        if continuar_partida.lower() != 's':<br />
            break<br />
<br />
if __name__ == "__main__":<br />
    main()]]></description>
			<content:encoded><![CDATA[Hola gente soy david de argentina tengo disscapacidad visual y estoy tratando de hacer un juego como el cluedo con la misma temática. La ventana del intérprete si me abre me sale el mensaje que elija con cuantos jugadores quiero jugar y que ingrese el número cuando le pongo el número y le doy enter se cierra automáticamente , revisé el código y no le encuentro donde puede estar el error en realidad quiero  poder arreglar esto para después continuarlo con una presntación y mas opciones para hacerlo más divertido. Acontinuación va el código, espero puedan ayudarme. <br />
<br />
import random<br />
<br />
# Definimos las clases para los elementos del juego<br />
class Sospechoso:<br />
    def __init__(self, nombre):<br />
        self.nombre = nombre<br />
<br />
class Arma:<br />
    def __init__(self, nombre):<br />
        self.nombre = nombre<br />
<br />
class Aposento:<br />
    def __init__(self, nombre):<br />
        self.nombre = nombre<br />
<br />
class JuegoClue:<br />
    def __init__(self):<br />
        self.sospechosos = [<br />
            Sospechoso("Dueño de Casa"),<br />
            Sospechoso("Dueña de Casa"),<br />
            Sospechoso("Sirvienta"),<br />
            Sospechoso("Cocinera"),<br />
            Sospechoso("Jardinero"),<br />
            Sospechoso("Mayordomo")<br />
        ]<br />
        <br />
        self.armas = [<br />
            Arma("Veneno"),<br />
            Arma("Revólver"),<br />
            Arma("Cuerda"),<br />
            Arma("Hacha"),<br />
            Arma("Palanca"),<br />
            Arma("Cuchillo")<br />
        ]<br />
        <br />
        self.aposentos = [<br />
            Aposento("Dormitorio"),<br />
            Aposento("Baño"),<br />
            Aposento("Sótano"),<br />
            Aposento("Cocina"),<br />
            Aposento("Salón"),<br />
            Aposento("Biblioteca"),<br />
            Aposento("Oficina"),<br />
            Aposento("Comedor"),<br />
            Aposento("Jardín")<br />
        ]<br />
<br />
        self.sospechosos_en_juego = []<br />
        self.archivo_confidencial = []<br />
        self.libretas = {}<br />
        self.turno_actual = 0<br />
<br />
    def configurar_juego(self, num_jugadores):<br />
        self.sospechosos_en_juego = random.sample(self.sospechosos, num_jugadores)<br />
        self.archivo_confidencial = (<br />
            random.choice(self.sospechosos_en_juego),<br />
            random.choice(self.armas),<br />
            random.choice(self.aposentos)<br />
        )<br />
        for sospechoso in self.sospechosos_en_juego:<br />
            self.libretas[sospechoso.nombre] = []<br />
<br />
    def mostrar_informacion(self):<br />
        print("Sospechosos en juego:")<br />
        for sospechoso in self.sospechosos_en_juego:<br />
            print(f"- {sospechoso.nombre}")<br />
<br />
    def tirar_dado(self):<br />
        return random.randint(1, 6)<br />
<br />
    def hacer_sugerencia(self, jugador, sospechoso, arma, aposento):<br />
        print(f"{jugador.nombre} sugiere que el crimen fue cometido por {sospechoso.nombre}, "<br />
              f"con {arma.nombre}, en el {aposento.nombre}.")<br />
        for i in range(1, len(self.sospechosos_en_juego) + 1):<br />
            jugador_o = self.sospechosos_en_juego[(self.turno_actual + i) % len(self.sospechosos_en_juego)]<br />
            if jugador_o != jugador:<br />
                # Simulación de que el jugador revisa sus cartas<br />
                if any(c.nombre == sospechoso.nombre or c.nombre == arma.nombre or c.nombre == aposento.nombre for c in jugador_o.cartas):<br />
                    carta_mostrada = random.choice([c for c in jugador_o.cartas if c.nombre == sospechoso.nombre or c.nombre == arma.nombre or c.nombre == aposento.nombre])<br />
                    print(f"{jugador_o.nombre} ha mostrado una carta.")<br />
                    self.libretas[jugador.nombre].append(carta_mostrada)<br />
                    return<br />
        print(f"{jugador.nombre} no recibió ninguna carta.")<br />
<br />
    def hacer_acusacion(self, jugador, sospechoso, arma, aposento):<br />
        print(f"{jugador.nombre} acusa que el crimen fue cometido por {sospechoso.nombre}, "<br />
              f"con {arma.nombre}, en el {aposento.nombre}.")<br />
        # Aquí se comprobaría la acusación, pero se omitirá para mantener el misterio.<br />
<br />
def main():<br />
    juego = JuegoClue()<br />
<br />
    while True:<br />
        try:<br />
            num_jugadores = int(input("Ingrese el número de jugadores (2 a 6): "))<br />
            if num_jugadores &lt; 2 or num_jugadores &gt; 6:<br />
                print("Número de jugadores no válido.")<br />
                continue<br />
<br />
            juego.configurar_juego(num_jugadores)<br />
            juego.mostrar_informacion()<br />
<br />
            while True:<br />
                jugador = juego.sospechosos_en_juego[juego.turno_actual]<br />
                dado = juego.tirar_dado()<br />
                print(f"{jugador.nombre} tira el dado y obtiene un {dado}.")<br />
<br />
                # Aquí iría la lógica de movimiento<br />
                # Supongamos que el jugador hace una sugerencia<br />
                sospechoso = random.choice(juego.sospechosos_en_juego)<br />
                arma = random.choice(juego.armas)<br />
                aposento = random.choice(juego.aposentos)<br />
                juego.hacer_sugerencia(jugador, sospechoso, arma, aposento)<br />
<br />
                # Supongamos que el jugador decide hacer una acusación<br />
                juego.hacer_acusacion(jugador, sospechoso, arma, aposento)<br />
<br />
                # Pasar al siguiente jugador<br />
                juego.turno_actual = (juego.turno_actual + 1) % len(juego.sospechosos_en_juego)<br />
<br />
                continuar = input("¿Desea continuar la partida? (s/n): ")<br />
                if continuar.lower() != 's':<br />
                    break<br />
<br />
        except ValueError:<br />
            print("Por favor, ingrese un número válido.")<br />
<br />
        continuar_partida = input("¿Desea iniciar una nueva partida? (s/n): ")<br />
        if continuar_partida.lower() != 's':<br />
            break<br />
<br />
if __name__ == "__main__":<br />
    main()]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[SPACE SHOOTER PYGAME]]></title>
			<link>https://foro.recursospython.com/showthread.php?tid=1409</link>
			<pubDate>Thu, 02 Nov 2023 09:54:29 -0700</pubDate>
			<dc:creator><![CDATA[<a href="https://foro.recursospython.com/member.php?action=profile&uid=1487">andyargg</a>]]></dc:creator>
			<guid isPermaLink="false">https://foro.recursospython.com/showthread.php?tid=1409</guid>
			<description><![CDATA[Hola, estoy trabajando en un juego de disparos espaciales en Pygame. Este es mi primer juego y estoy teniendo problemas para hacer que los enemigos disparen. Parece imposible porque, cuando imprimo las balas de los enemigos, están en coordenadas inesperadas y no puedo verlas.<br />
<br />
Puedes revisar el repositorio aquí: <a href="https://github.com/andyargg/PYGAME_2-master.git" target="_blank" rel="noopener" class="mycode_url">https://github.com/andyargg/PYGAME_2-master.git</a><br />
<br />
He estado intentando solucionarlo durante cuatro días y agradecería algo de ayuda. Gracias.]]></description>
			<content:encoded><![CDATA[Hola, estoy trabajando en un juego de disparos espaciales en Pygame. Este es mi primer juego y estoy teniendo problemas para hacer que los enemigos disparen. Parece imposible porque, cuando imprimo las balas de los enemigos, están en coordenadas inesperadas y no puedo verlas.<br />
<br />
Puedes revisar el repositorio aquí: <a href="https://github.com/andyargg/PYGAME_2-master.git" target="_blank" rel="noopener" class="mycode_url">https://github.com/andyargg/PYGAME_2-master.git</a><br />
<br />
He estado intentando solucionarlo durante cuatro días y agradecería algo de ayuda. Gracias.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[cerrar programa con speech_recognition + pygame]]></title>
			<link>https://foro.recursospython.com/showthread.php?tid=1255</link>
			<pubDate>Wed, 03 Aug 2022 15:40:06 -0700</pubDate>
			<dc:creator><![CDATA[<a href="https://foro.recursospython.com/member.php?action=profile&uid=1312">fedemos</a>]]></dc:creator>
			<guid isPermaLink="false">https://foro.recursospython.com/showthread.php?tid=1255</guid>
			<description><![CDATA[hola, aclaro que soy super novato y lo que hice fue adaptar dos scripts , los cuales por separado funcionan bien.<br />
<br />
la idea es lograr que el programa haga un random y cambie el color de fondo y el contenido de un texto por comandos de voz. Aclaro que esa parte estaría funcionando. <br />
<br />
El problema se surge cuando quiero cerrarlo con esc o quit utilizando pygame.event, aclaro que si empleo el comando de voz el programa se cierra perfectamente.<br />
<br />
<br />
me gustaría que me den una mano para lograr que el programa se pueda cerrar utilizando esc y/o quit<br />
<br />
script cambia color por orden de voz<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>import speech_recognition as sr<br />
import pyttsx3<br />
import pywhatkit<br />
from cambia_color import *<br />
import pygame<br />
import random<br />
import time<br />
import sys<br />
from pygame.locals import *<br />
pygame.init()<br />
width, height = 800, 600<br />
screen = pygame.display.set_mode((width, height))<br />
Ncolores = ['marrón', 'verde', 'azul', 'violeta',<br />
            'amarillo', 'rojo', 'naranja', 'rosado']<br />
            # 01234567<br />
colores = [(255, 0, 0), (0, 255, 0), (0, 0, 255), (159, 0, 255),<br />
           (159, 0, 255), (128, 64, 0), (255, 192, 0), (255, 160, 216)]<br />
<br />
engine = pyttsx3.init()<br />
voices = engine.getProperty('voices')<br />
engine.setProperty('rate', 145)<br />
#linux<br />
engine.setProperty('voice', 'spanish-latin-am+f2')<br />
# win10<br />
#engine.setProperty('voice', voices[0].id)<br />
def talk(text):<br />
    engine.say(text)<br />
    engine.runAndWait()<br />
<br />
def listen():<br />
    listener = sr.Recognizer()<br />
    with sr.Microphone() as source:<br />
        listener.adjust_for_ambient_noise(source, duration=0.5)<br />
        #print("Escuchando...")<br />
        audio = listener.listen(source)<br />
    try:<br />
        #rec = listener.recognize_google(audio, language='es-AR')<br />
        rec = listener.recognize_google(audio, language='es-AR')<br />
        rec = rec.lower()<br />
        return rec <br />
    except sr.UnknownValueError:<br />
        talk("No entendí")<br />
        #pass<br />
    except sr.RequestError as e:<br />
        #talk("No entendí")<br />
        pass<br />
    except:<br />
        talk("No entendí")<br />
        #pass<br />
def cerrar():<br />
    #event = pygame.event.wait()<br />
    '''es = True<br />
    while es:<br />
<br />
        for event in pygame.event.get():<br />
            if event.type == pygame.QUIT:<br />
                es=False<br />
            if event.type == pygame.KEYDOWN:<br />
                if event.key == pygame.K_ESCAPE:<br />
                    es=False<br />
    pygame.quit()<br />
    sys.exit()'''<br />
<br />
    for event in pygame.event.get():<br />
        if event.type == pygame.QUIT:<br />
            pygame.quit()<br />
            sys.exit()<br />
        if event.type == pygame.KEYDOWN:<br />
            if event.key == pygame.K_ESCAPE:<br />
                pygame.quit()<br />
                sys.exit()<br />
    <br />
    <br />
def cambiaColor_():<br />
    <br />
    <br />
    screen.fill(colores[random.randint(0, 7)])<br />
    fuente = pygame.font.SysFont('arial', 80)<br />
    texto = fuente.render(Ncolores[random.randint(0, 7)], True, (252, 252, 252))<br />
    text_rect = texto.get_rect(center=(width/2, height/2))<br />
    screen.blit(texto, text_rect)<br />
    pygame.draw.circle(screen,  (0, 0, 0), (width/2, height/1.6), 8)<br />
    pygame.display.update()<br />
    '''for event in pygame.event.get():<br />
        if event.type == pygame.QUIT:<br />
            pygame.quit()<br />
            sys.exit()<br />
        if event.type == pygame.KEYDOWN:<br />
            if event.key == pygame.K_ESCAPE:<br />
                pygame.quit()<br />
                sys.exit()'''<br />
def run_escuchar():<br />
    cambiaColor_()<br />
    es=True<br />
    while es:<br />
        rec=listen()<br />
        try:<br />
            if "cambiar" in rec:<br />
                cambiaColor_()<br />
            elif "cerrar" in rec:<br />
                es=False <br />
               <br />
        except:<br />
            pass<br />
        cerrar()<br />
if __name__ == "__main__":<br />
    run_escuchar()</code></div></div><br />
script cambia color por tiempo<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>import pygame<br />
import random<br />
import time<br />
import sys<br />
from pygame.locals import *<br />
<br />
<br />
<br />
pygame.init()<br />
width, height = 800, 600<br />
screen = pygame.display.set_mode((width, height))<br />
Ncolores = ['marrón', 'verde', 'azul', 'violeta',<br />
            'amarillo', 'rojo', 'naranja', 'rosado']<br />
            # 01234567<br />
colores = [(255, 0, 0), (0, 255, 0), (0, 0, 255), (159, 0, 255),<br />
           (159, 0, 255), (128, 64, 0), (255, 192, 0), (255, 160, 216)]<br />
<br />
<br />
<br />
def cerrar():<br />
    #event = pygame.event.wait()<br />
    es = True<br />
    while es:<br />
<br />
        for event in pygame.event.get():<br />
            if event.type == pygame.QUIT:<br />
                es=False<br />
            if event.type == pygame.KEYDOWN:<br />
                if event.key == pygame.K_ESCAPE:<br />
                    es=False<br />
    pygame.quit()<br />
    sys.exit()<br />
def cambiaColor_():<br />
    while True:<br />
    <br />
        screen.fill(colores[random.randint(0, 7)])<br />
        fuente = pygame.font.SysFont('arial', 80)<br />
        texto = fuente.render(Ncolores[random.randint(0, 7)], True, (252, 252, 252))<br />
        text_rect = texto.get_rect(center=(width/2, height/2))<br />
        screen.blit(texto, text_rect)<br />
        pygame.draw.circle(screen,  (0, 0, 0), (width/2, height/1.6), 8)<br />
        pygame.display.update()<br />
<br />
<br />
        for event in pygame.event.get():<br />
            if event.type == pygame.QUIT:<br />
                pygame.quit()<br />
                sys.exit()<br />
                    <br />
            if event.type == pygame.KEYDOWN:<br />
                if event.key == pygame.K_ESCAPE:<br />
                    pygame.quit()<br />
                    sys.exit()<br />
        time.sleep(2)<br />
                                      <br />
if __name__ == "__main__":<br />
    cambiaColor_()</code></div></div><br />
les agradecería que me puedan ayudar<br />
saludos...]]></description>
			<content:encoded><![CDATA[hola, aclaro que soy super novato y lo que hice fue adaptar dos scripts , los cuales por separado funcionan bien.<br />
<br />
la idea es lograr que el programa haga un random y cambie el color de fondo y el contenido de un texto por comandos de voz. Aclaro que esa parte estaría funcionando. <br />
<br />
El problema se surge cuando quiero cerrarlo con esc o quit utilizando pygame.event, aclaro que si empleo el comando de voz el programa se cierra perfectamente.<br />
<br />
<br />
me gustaría que me den una mano para lograr que el programa se pueda cerrar utilizando esc y/o quit<br />
<br />
script cambia color por orden de voz<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>import speech_recognition as sr<br />
import pyttsx3<br />
import pywhatkit<br />
from cambia_color import *<br />
import pygame<br />
import random<br />
import time<br />
import sys<br />
from pygame.locals import *<br />
pygame.init()<br />
width, height = 800, 600<br />
screen = pygame.display.set_mode((width, height))<br />
Ncolores = ['marrón', 'verde', 'azul', 'violeta',<br />
            'amarillo', 'rojo', 'naranja', 'rosado']<br />
            # 01234567<br />
colores = [(255, 0, 0), (0, 255, 0), (0, 0, 255), (159, 0, 255),<br />
           (159, 0, 255), (128, 64, 0), (255, 192, 0), (255, 160, 216)]<br />
<br />
engine = pyttsx3.init()<br />
voices = engine.getProperty('voices')<br />
engine.setProperty('rate', 145)<br />
#linux<br />
engine.setProperty('voice', 'spanish-latin-am+f2')<br />
# win10<br />
#engine.setProperty('voice', voices[0].id)<br />
def talk(text):<br />
    engine.say(text)<br />
    engine.runAndWait()<br />
<br />
def listen():<br />
    listener = sr.Recognizer()<br />
    with sr.Microphone() as source:<br />
        listener.adjust_for_ambient_noise(source, duration=0.5)<br />
        #print("Escuchando...")<br />
        audio = listener.listen(source)<br />
    try:<br />
        #rec = listener.recognize_google(audio, language='es-AR')<br />
        rec = listener.recognize_google(audio, language='es-AR')<br />
        rec = rec.lower()<br />
        return rec <br />
    except sr.UnknownValueError:<br />
        talk("No entendí")<br />
        #pass<br />
    except sr.RequestError as e:<br />
        #talk("No entendí")<br />
        pass<br />
    except:<br />
        talk("No entendí")<br />
        #pass<br />
def cerrar():<br />
    #event = pygame.event.wait()<br />
    '''es = True<br />
    while es:<br />
<br />
        for event in pygame.event.get():<br />
            if event.type == pygame.QUIT:<br />
                es=False<br />
            if event.type == pygame.KEYDOWN:<br />
                if event.key == pygame.K_ESCAPE:<br />
                    es=False<br />
    pygame.quit()<br />
    sys.exit()'''<br />
<br />
    for event in pygame.event.get():<br />
        if event.type == pygame.QUIT:<br />
            pygame.quit()<br />
            sys.exit()<br />
        if event.type == pygame.KEYDOWN:<br />
            if event.key == pygame.K_ESCAPE:<br />
                pygame.quit()<br />
                sys.exit()<br />
    <br />
    <br />
def cambiaColor_():<br />
    <br />
    <br />
    screen.fill(colores[random.randint(0, 7)])<br />
    fuente = pygame.font.SysFont('arial', 80)<br />
    texto = fuente.render(Ncolores[random.randint(0, 7)], True, (252, 252, 252))<br />
    text_rect = texto.get_rect(center=(width/2, height/2))<br />
    screen.blit(texto, text_rect)<br />
    pygame.draw.circle(screen,  (0, 0, 0), (width/2, height/1.6), 8)<br />
    pygame.display.update()<br />
    '''for event in pygame.event.get():<br />
        if event.type == pygame.QUIT:<br />
            pygame.quit()<br />
            sys.exit()<br />
        if event.type == pygame.KEYDOWN:<br />
            if event.key == pygame.K_ESCAPE:<br />
                pygame.quit()<br />
                sys.exit()'''<br />
def run_escuchar():<br />
    cambiaColor_()<br />
    es=True<br />
    while es:<br />
        rec=listen()<br />
        try:<br />
            if "cambiar" in rec:<br />
                cambiaColor_()<br />
            elif "cerrar" in rec:<br />
                es=False <br />
               <br />
        except:<br />
            pass<br />
        cerrar()<br />
if __name__ == "__main__":<br />
    run_escuchar()</code></div></div><br />
script cambia color por tiempo<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>import pygame<br />
import random<br />
import time<br />
import sys<br />
from pygame.locals import *<br />
<br />
<br />
<br />
pygame.init()<br />
width, height = 800, 600<br />
screen = pygame.display.set_mode((width, height))<br />
Ncolores = ['marrón', 'verde', 'azul', 'violeta',<br />
            'amarillo', 'rojo', 'naranja', 'rosado']<br />
            # 01234567<br />
colores = [(255, 0, 0), (0, 255, 0), (0, 0, 255), (159, 0, 255),<br />
           (159, 0, 255), (128, 64, 0), (255, 192, 0), (255, 160, 216)]<br />
<br />
<br />
<br />
def cerrar():<br />
    #event = pygame.event.wait()<br />
    es = True<br />
    while es:<br />
<br />
        for event in pygame.event.get():<br />
            if event.type == pygame.QUIT:<br />
                es=False<br />
            if event.type == pygame.KEYDOWN:<br />
                if event.key == pygame.K_ESCAPE:<br />
                    es=False<br />
    pygame.quit()<br />
    sys.exit()<br />
def cambiaColor_():<br />
    while True:<br />
    <br />
        screen.fill(colores[random.randint(0, 7)])<br />
        fuente = pygame.font.SysFont('arial', 80)<br />
        texto = fuente.render(Ncolores[random.randint(0, 7)], True, (252, 252, 252))<br />
        text_rect = texto.get_rect(center=(width/2, height/2))<br />
        screen.blit(texto, text_rect)<br />
        pygame.draw.circle(screen,  (0, 0, 0), (width/2, height/1.6), 8)<br />
        pygame.display.update()<br />
<br />
<br />
        for event in pygame.event.get():<br />
            if event.type == pygame.QUIT:<br />
                pygame.quit()<br />
                sys.exit()<br />
                    <br />
            if event.type == pygame.KEYDOWN:<br />
                if event.key == pygame.K_ESCAPE:<br />
                    pygame.quit()<br />
                    sys.exit()<br />
        time.sleep(2)<br />
                                      <br />
if __name__ == "__main__":<br />
    cambiaColor_()</code></div></div><br />
les agradecería que me puedan ayudar<br />
saludos...]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Problema con algoritmo Minimax tres en raya]]></title>
			<link>https://foro.recursospython.com/showthread.php?tid=1123</link>
			<pubDate>Sat, 22 Jan 2022 07:03:00 -0800</pubDate>
			<dc:creator><![CDATA[<a href="https://foro.recursospython.com/member.php?action=profile&uid=1160">Daniel G</a>]]></dc:creator>
			<guid isPermaLink="false">https://foro.recursospython.com/showthread.php?tid=1123</guid>
			<description><![CDATA[Buenas Tardes,<br />
Para un "trabajo-proyecto" del instituto tengo que hacer un Bot que juegue al tres en raya. Para hacerlo he visto un video en YouTube: <a href="https://www.youtube.com/watch?v=2Tr8LkyU78c" target="_blank" rel="noopener" class="mycode_url">https://www.youtube.com/watch?v=2Tr8LkyU78c</a> para ver como hacerlo. Apliqué el cosas que dice al código del tres en raya que ya había hecho pero no acaba de funcionar bien, ya que no tendría que perder nunca y, sin embargo, pierde. Dado que el bot juega y se puede llevar a cabo una partida, supongo que el error está en el algoritmo. <br />
Toda ayuda será muy agradecida. <br />
Daniel G<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>possible_choices = ["a1", "a2","a3","b1", "b2","b3","c1","c2","c3"]<br />
init = {"a1" : 0, "a2" : 0, "a3":0, <br />
        "b1": 0, "b2": 0, "b3":0,<br />
        "c1" : 0, "c2": 0, "c3": 0}<br />
<br />
def jugadahumano():<br />
    jugada = str(input("inserte aqui su jugada del tipo : a1"))<br />
    if (jugada in init.keys()) and (jugada in possible_choices):<br />
        init[jugada]=1<br />
        possible_choices.remove(jugada)<br />
    else:<br />
        print("su jugada es incorrecta o bien ya hay una ficha sobre esa casilla")<br />
        jugadahumano()<br />
<br />
<br />
def jugadarobi():<br />
    bestScore = -1000<br />
    bestMove = 0<br />
    for key in init.keys():<br />
        if (init[key]==0):<br />
            init[key]=2<br />
            score = minimax(init,False)<br />
            init[key]=0<br />
            if (score &gt; bestScore):<br />
                bestScore = score<br />
                bestMove = key<br />
<br />
    init[bestMove]= 2<br />
<br />
<br />
<br />
def minimax(board, isMaximizing):<br />
    if (whichmarkwon(2)):<br />
        return 1<br />
    elif (whichmarkwon(1)):<br />
        return -1<br />
    elif (checkDraw()):<br />
        return 0<br />
    elif (isMaximizing==True):<br />
        bestScore = -800<br />
        for key in init.keys():<br />
            if (init[key]== 0):<br />
                board[key]=2<br />
                score = minimax(init,False)<br />
                board[key]=0<br />
                if (score&gt;bestScore):<br />
                    bestScore = score<br />
        return bestScore<br />
    elif (isMaximizing==False):<br />
        bestScore = 800<br />
        for key in init.keys():<br />
            if (init[key]== 0):<br />
                init[key]==1<br />
                score = minimax(init,True)<br />
                init[key]==0<br />
                if(score&lt;bestScore):<br />
                    bestScore = score<br />
        return bestScore<br />
<br />
<br />
<br />
def checkDraw():<br />
    for key in init:<br />
        if init[key]==0:<br />
            return False<br />
            <br />
    return True<br />
<br />
<br />
def whowin():<br />
    <br />
    if (init["a1"] == init["a2"] ==init["a3"]== 1) or (init["b1"] == init["b2"] == init["b3"]== 1) or (init["c1"] ==init["c2"] ==init["c3"]== 1) or (init["a1"] == init["b2"] == init["c3"]== 1) or (init["c1"] == init["b2"] == init["a3"]== 1) or (init["a1"] == init["b1"] == init["c1"]== 1) or (init["a2"] == init["b2"] == init["c2"]== 1) or (init["a3"] == init["b3"] == init["c3"]== 1):<br />
        print("el ganador de la partida es el humano")<br />
        return True <br />
    elif (init["a1"] == init["a2"] ==init["a3"]== 2) or (init["b1"] == init["b2"] == init["b3"]== 2) or (init["c1"] ==init["c2"] ==init["c3"]== 2) or (init["a1"] == init["b2"] == init["c3"]== 2) or (init["c1"] == init["b2"] == init["a3"]== 2) or (init["a1"] == init["b1"] == init["c1"]== 2) or (init["a2"] == init["b2"] == init["c2"]== 2) or (init["a3"] == init["b3"] == init["c3"]== 2):<br />
        print("el ganador es el robot")<br />
        return True<br />
    elif checkDraw() == True:<br />
        print("Ha habido empate.")<br />
        return True<br />
    else:<br />
        return False<br />
<br />
def whichmarkwon(mark):<br />
    if (init["a1"] == init["a2"] ==init["a3"]== mark) or (init["b1"] == init["b2"] == init["b3"]== mark) or (init["c1"] ==init["c2"] ==init["c3"]== mark) or (init["a1"] == init["b2"] == init["c3"]== mark) or (init["c1"] == init["b2"] == init["a3"]== mark) or (init["a1"] == init["b1"] == init["c1"]== mark) or (init["a2"] == init["b2"] == init["c2"]== mark) or (init["a3"] == init["b3"] == init["c3"]== mark):<br />
        return True<br />
    else:<br />
        return False<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
print("esto es el juego del tres en ralla, primero juegan los unos unos despues los doses")<br />
<br />
while (whowin()== False)or (checkDraw==False):     <br />
    whowin()<br />
    jugadarobi()<br />
<br />
    print(init.get("a1"), init.get("a2"), init.get("a3"))<br />
    print(init.get("b1"), init.get("b2"), init.get("b3"))<br />
    print(init.get("c1"), init.get("c2"), init.get("c3"))<br />
    whowin()<br />
    jugadahumano()</code></div></div>]]></description>
			<content:encoded><![CDATA[Buenas Tardes,<br />
Para un "trabajo-proyecto" del instituto tengo que hacer un Bot que juegue al tres en raya. Para hacerlo he visto un video en YouTube: <a href="https://www.youtube.com/watch?v=2Tr8LkyU78c" target="_blank" rel="noopener" class="mycode_url">https://www.youtube.com/watch?v=2Tr8LkyU78c</a> para ver como hacerlo. Apliqué el cosas que dice al código del tres en raya que ya había hecho pero no acaba de funcionar bien, ya que no tendría que perder nunca y, sin embargo, pierde. Dado que el bot juega y se puede llevar a cabo una partida, supongo que el error está en el algoritmo. <br />
Toda ayuda será muy agradecida. <br />
Daniel G<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>possible_choices = ["a1", "a2","a3","b1", "b2","b3","c1","c2","c3"]<br />
init = {"a1" : 0, "a2" : 0, "a3":0, <br />
        "b1": 0, "b2": 0, "b3":0,<br />
        "c1" : 0, "c2": 0, "c3": 0}<br />
<br />
def jugadahumano():<br />
    jugada = str(input("inserte aqui su jugada del tipo : a1"))<br />
    if (jugada in init.keys()) and (jugada in possible_choices):<br />
        init[jugada]=1<br />
        possible_choices.remove(jugada)<br />
    else:<br />
        print("su jugada es incorrecta o bien ya hay una ficha sobre esa casilla")<br />
        jugadahumano()<br />
<br />
<br />
def jugadarobi():<br />
    bestScore = -1000<br />
    bestMove = 0<br />
    for key in init.keys():<br />
        if (init[key]==0):<br />
            init[key]=2<br />
            score = minimax(init,False)<br />
            init[key]=0<br />
            if (score &gt; bestScore):<br />
                bestScore = score<br />
                bestMove = key<br />
<br />
    init[bestMove]= 2<br />
<br />
<br />
<br />
def minimax(board, isMaximizing):<br />
    if (whichmarkwon(2)):<br />
        return 1<br />
    elif (whichmarkwon(1)):<br />
        return -1<br />
    elif (checkDraw()):<br />
        return 0<br />
    elif (isMaximizing==True):<br />
        bestScore = -800<br />
        for key in init.keys():<br />
            if (init[key]== 0):<br />
                board[key]=2<br />
                score = minimax(init,False)<br />
                board[key]=0<br />
                if (score&gt;bestScore):<br />
                    bestScore = score<br />
        return bestScore<br />
    elif (isMaximizing==False):<br />
        bestScore = 800<br />
        for key in init.keys():<br />
            if (init[key]== 0):<br />
                init[key]==1<br />
                score = minimax(init,True)<br />
                init[key]==0<br />
                if(score&lt;bestScore):<br />
                    bestScore = score<br />
        return bestScore<br />
<br />
<br />
<br />
def checkDraw():<br />
    for key in init:<br />
        if init[key]==0:<br />
            return False<br />
            <br />
    return True<br />
<br />
<br />
def whowin():<br />
    <br />
    if (init["a1"] == init["a2"] ==init["a3"]== 1) or (init["b1"] == init["b2"] == init["b3"]== 1) or (init["c1"] ==init["c2"] ==init["c3"]== 1) or (init["a1"] == init["b2"] == init["c3"]== 1) or (init["c1"] == init["b2"] == init["a3"]== 1) or (init["a1"] == init["b1"] == init["c1"]== 1) or (init["a2"] == init["b2"] == init["c2"]== 1) or (init["a3"] == init["b3"] == init["c3"]== 1):<br />
        print("el ganador de la partida es el humano")<br />
        return True <br />
    elif (init["a1"] == init["a2"] ==init["a3"]== 2) or (init["b1"] == init["b2"] == init["b3"]== 2) or (init["c1"] ==init["c2"] ==init["c3"]== 2) or (init["a1"] == init["b2"] == init["c3"]== 2) or (init["c1"] == init["b2"] == init["a3"]== 2) or (init["a1"] == init["b1"] == init["c1"]== 2) or (init["a2"] == init["b2"] == init["c2"]== 2) or (init["a3"] == init["b3"] == init["c3"]== 2):<br />
        print("el ganador es el robot")<br />
        return True<br />
    elif checkDraw() == True:<br />
        print("Ha habido empate.")<br />
        return True<br />
    else:<br />
        return False<br />
<br />
def whichmarkwon(mark):<br />
    if (init["a1"] == init["a2"] ==init["a3"]== mark) or (init["b1"] == init["b2"] == init["b3"]== mark) or (init["c1"] ==init["c2"] ==init["c3"]== mark) or (init["a1"] == init["b2"] == init["c3"]== mark) or (init["c1"] == init["b2"] == init["a3"]== mark) or (init["a1"] == init["b1"] == init["c1"]== mark) or (init["a2"] == init["b2"] == init["c2"]== mark) or (init["a3"] == init["b3"] == init["c3"]== mark):<br />
        return True<br />
    else:<br />
        return False<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
print("esto es el juego del tres en ralla, primero juegan los unos unos despues los doses")<br />
<br />
while (whowin()== False)or (checkDraw==False):     <br />
    whowin()<br />
    jugadarobi()<br />
<br />
    print(init.get("a1"), init.get("a2"), init.get("a3"))<br />
    print(init.get("b1"), init.get("b2"), init.get("b3"))<br />
    print(init.get("c1"), init.get("c2"), init.get("c3"))<br />
    whowin()<br />
    jugadahumano()</code></div></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Problema con movimiento en pygame]]></title>
			<link>https://foro.recursospython.com/showthread.php?tid=689</link>
			<pubDate>Wed, 24 Jun 2020 09:21:00 -0700</pubDate>
			<dc:creator><![CDATA[<a href="https://foro.recursospython.com/member.php?action=profile&uid=509">Gantrax</a>]]></dc:creator>
			<guid isPermaLink="false">https://foro.recursospython.com/showthread.php?tid=689</guid>
			<description><![CDATA[Hola, tengo el siguiente problema, yo estoy tratando de simular, con un codigo sencillo usando pygame, el movimiento de una pelota <br />
<br />
Quiero que una pelota se mueva a mi gusto, pero que si la dejo se quede parada (hay amortiguamientos de la velocidad).<br />
<br />
El hecho es que al dejarla reposar (luego de sacarle el reposo inicial) termina iniciando un movimiento lento hacia la ultima pared que haya tocado... Alguien podria ayudarme a identificar porque pasa esto ultimo?<br />
<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>import numpy as np<br />
import pygame,sys<br />
from pygame.locals import *<br />
<br />
<br />
def data():<br />
&nbsp;&nbsp;&nbsp;&nbsp;#print(x)<br />
&nbsp;&nbsp;&nbsp;&nbsp;#print(vx)<br />
&nbsp;&nbsp;&nbsp;&nbsp;#print(deltax)<br />
&nbsp;&nbsp;&nbsp;&nbsp;#print(y)<br />
&nbsp;&nbsp;&nbsp;&nbsp;#print(vy)<br />
&nbsp;&nbsp;&nbsp;&nbsp;#print(ay)<br />
&nbsp;&nbsp;&nbsp;&nbsp;#print(deltay)<br />
&nbsp;&nbsp;&nbsp;&nbsp;print(pygame.key.get_pressed())<br />
<br />
<br />
<br />
alto = 500<br />
ancho = 1000<br />
A=200<br />
h0=0<br />
h0x=0<br />
phi=0<br />
X0=ancho/2<br />
Y0=alto-30<br />
vx=0<br />
vy=0<br />
ay=20<br />
h=0<br />
l=0<br />
x=X0<br />
y=Y0<br />
taupiso=0.75<br />
tau=0.9995<br />
piso=alto-30<br />
usoKEYUP=False<br />
usoKEYDOWN=False<br />
usoKEYRIGHT=False<br />
usoKEYLEFT=False<br />
ck1=0<br />
ck2=0<br />
ck3=0<br />
ck4=0<br />
d=(((piso-y)**2)**(1/2))<br />
intervalo=200<br />
<br />
<br />
<br />
<br />
pygame.init()<br />
screen = pygame.display.set_caption("spaceinvader")<br />
ventana = pygame.display.set_mode((ancho, alto))<br />
imagen = pygame.image.load("spaceinvader.png")<br />
rectanguloimg = imagen.get_rect()<br />
deltax=(((x-rectanguloimg.top)**2)**(1/2))<br />
deltay=(((y-rectanguloimg.top)**2)**(1/2))<br />
<br />
jugando = True<br />
while jugando:<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;h=h+1<br />
&nbsp;&nbsp;&nbsp;&nbsp;if (((vx)**2)**(1/2))&lt;0.01:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vx=0<br />
&nbsp;&nbsp;&nbsp;&nbsp;else:&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vx=vx*tau<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if 0&gt;x:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vx=(-1)*vx<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h0x=h-1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;X0=x<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("pared1")<br />
&nbsp;&nbsp;&nbsp;&nbsp;if x&gt;ancho-30:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vx=(-1)*vx<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h0x=h-1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;X0=x<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("pared2")  &nbsp;&nbsp;&nbsp;&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if y&gt;piso:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Y0=piso<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#if (((vy)**2)**(1/2))&lt;0.25:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;vy=0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#else:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vy=(-1)*(vy*taupiso)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h0=h-1<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("piso")  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;#teclado()<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if vy==0:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if d==0:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Y0=piso<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h0=h-1<br />
&nbsp;&nbsp;&nbsp;&nbsp;y=int(ay*(((h-h0)/100)**2)+vy*((h-h0)/100)+Y0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;x=int(vx*((h-h0x)/100)+X0)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;rectanguloimg.left = x<br />
&nbsp;&nbsp;&nbsp;&nbsp;rectanguloimg.top = y<br />
&nbsp;&nbsp;&nbsp;&nbsp;ventana.fill((0,0,0))<br />
&nbsp;&nbsp;&nbsp;&nbsp;ventana.blit(imagen, rectanguloimg)<br />
&nbsp;&nbsp;&nbsp;&nbsp;pygame.display.flip()<br />
&nbsp;&nbsp;&nbsp;&nbsp;#data()<br />
&nbsp;&nbsp;&nbsp;&nbsp;pygame.time.wait(1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if ck1&gt;0:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ck1=ck1-1<br />
&nbsp;&nbsp;&nbsp;&nbsp;else:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ck1=0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;usoKEYUP=False<br />
&nbsp;&nbsp;&nbsp;&nbsp;if ck2&gt;0:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ck2=ck2-1<br />
&nbsp;&nbsp;&nbsp;&nbsp;else:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ck2=0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;usoKEYRIGHT=False<br />
&nbsp;&nbsp;&nbsp;&nbsp;if ck3&gt;0:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ck3=ck3-1<br />
&nbsp;&nbsp;&nbsp;&nbsp;else:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ck3=0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;usoKEYLEFT=False<br />
&nbsp;&nbsp;&nbsp;&nbsp;if ck4&gt;0:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ck4=ck4-1<br />
&nbsp;&nbsp;&nbsp;&nbsp;else:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ck4=0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;usoKEYDOWN=False<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;for event in pygame.event.get():<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(event)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if event.type == pygame.QUIT:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    pygame.quit()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    exit()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elif event.type == pygame.KEYDOWN:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if event.key==K_UP:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if usoKEYUP==True:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("Debes esperar para empujarte denuevo")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else:&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vy=vy-100<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;usoKEYUP=True<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ck1=intervalo<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h0=h-1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Y0=y<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elif event.key==K_RIGHT:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if usoKEYRIGHT==True:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("Debes esperar para empujarte denuevo")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else:&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vx=vx+100<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;usoKEYRIGHT=True<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ck2=intervalo<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h0x=h-1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;X0=x<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elif event.key == K_LEFT:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if usoKEYLEFT==True:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("Debes esperar para empujarte denuevo")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else:&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vx=vx-100<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;usoKEYLEFT=True<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ck3=intervalo<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h0x=h-1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;X0=x<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elif event.key == K_DOWN:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if y&gt;460:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("no space down")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vy=vy+100<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;usoKEYDOWN=True<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ck4=intervalo<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h0=h-1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Y0=y<br />
<br />
    <br />
pygame.quit()</code></div></div><br />
<br />
(edite un poco por el aspecto actual del problema)<br />
<br />
Gracias.<br />
Saludos!]]></description>
			<content:encoded><![CDATA[Hola, tengo el siguiente problema, yo estoy tratando de simular, con un codigo sencillo usando pygame, el movimiento de una pelota <br />
<br />
Quiero que una pelota se mueva a mi gusto, pero que si la dejo se quede parada (hay amortiguamientos de la velocidad).<br />
<br />
El hecho es que al dejarla reposar (luego de sacarle el reposo inicial) termina iniciando un movimiento lento hacia la ultima pared que haya tocado... Alguien podria ayudarme a identificar porque pasa esto ultimo?<br />
<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>import numpy as np<br />
import pygame,sys<br />
from pygame.locals import *<br />
<br />
<br />
def data():<br />
&nbsp;&nbsp;&nbsp;&nbsp;#print(x)<br />
&nbsp;&nbsp;&nbsp;&nbsp;#print(vx)<br />
&nbsp;&nbsp;&nbsp;&nbsp;#print(deltax)<br />
&nbsp;&nbsp;&nbsp;&nbsp;#print(y)<br />
&nbsp;&nbsp;&nbsp;&nbsp;#print(vy)<br />
&nbsp;&nbsp;&nbsp;&nbsp;#print(ay)<br />
&nbsp;&nbsp;&nbsp;&nbsp;#print(deltay)<br />
&nbsp;&nbsp;&nbsp;&nbsp;print(pygame.key.get_pressed())<br />
<br />
<br />
<br />
alto = 500<br />
ancho = 1000<br />
A=200<br />
h0=0<br />
h0x=0<br />
phi=0<br />
X0=ancho/2<br />
Y0=alto-30<br />
vx=0<br />
vy=0<br />
ay=20<br />
h=0<br />
l=0<br />
x=X0<br />
y=Y0<br />
taupiso=0.75<br />
tau=0.9995<br />
piso=alto-30<br />
usoKEYUP=False<br />
usoKEYDOWN=False<br />
usoKEYRIGHT=False<br />
usoKEYLEFT=False<br />
ck1=0<br />
ck2=0<br />
ck3=0<br />
ck4=0<br />
d=(((piso-y)**2)**(1/2))<br />
intervalo=200<br />
<br />
<br />
<br />
<br />
pygame.init()<br />
screen = pygame.display.set_caption("spaceinvader")<br />
ventana = pygame.display.set_mode((ancho, alto))<br />
imagen = pygame.image.load("spaceinvader.png")<br />
rectanguloimg = imagen.get_rect()<br />
deltax=(((x-rectanguloimg.top)**2)**(1/2))<br />
deltay=(((y-rectanguloimg.top)**2)**(1/2))<br />
<br />
jugando = True<br />
while jugando:<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;h=h+1<br />
&nbsp;&nbsp;&nbsp;&nbsp;if (((vx)**2)**(1/2))&lt;0.01:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vx=0<br />
&nbsp;&nbsp;&nbsp;&nbsp;else:&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vx=vx*tau<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if 0&gt;x:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vx=(-1)*vx<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h0x=h-1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;X0=x<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("pared1")<br />
&nbsp;&nbsp;&nbsp;&nbsp;if x&gt;ancho-30:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vx=(-1)*vx<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h0x=h-1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;X0=x<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("pared2")  &nbsp;&nbsp;&nbsp;&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if y&gt;piso:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Y0=piso<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#if (((vy)**2)**(1/2))&lt;0.25:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;vy=0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#else:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vy=(-1)*(vy*taupiso)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h0=h-1<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("piso")  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;#teclado()<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if vy==0:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if d==0:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Y0=piso<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h0=h-1<br />
&nbsp;&nbsp;&nbsp;&nbsp;y=int(ay*(((h-h0)/100)**2)+vy*((h-h0)/100)+Y0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;x=int(vx*((h-h0x)/100)+X0)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;rectanguloimg.left = x<br />
&nbsp;&nbsp;&nbsp;&nbsp;rectanguloimg.top = y<br />
&nbsp;&nbsp;&nbsp;&nbsp;ventana.fill((0,0,0))<br />
&nbsp;&nbsp;&nbsp;&nbsp;ventana.blit(imagen, rectanguloimg)<br />
&nbsp;&nbsp;&nbsp;&nbsp;pygame.display.flip()<br />
&nbsp;&nbsp;&nbsp;&nbsp;#data()<br />
&nbsp;&nbsp;&nbsp;&nbsp;pygame.time.wait(1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if ck1&gt;0:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ck1=ck1-1<br />
&nbsp;&nbsp;&nbsp;&nbsp;else:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ck1=0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;usoKEYUP=False<br />
&nbsp;&nbsp;&nbsp;&nbsp;if ck2&gt;0:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ck2=ck2-1<br />
&nbsp;&nbsp;&nbsp;&nbsp;else:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ck2=0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;usoKEYRIGHT=False<br />
&nbsp;&nbsp;&nbsp;&nbsp;if ck3&gt;0:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ck3=ck3-1<br />
&nbsp;&nbsp;&nbsp;&nbsp;else:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ck3=0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;usoKEYLEFT=False<br />
&nbsp;&nbsp;&nbsp;&nbsp;if ck4&gt;0:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ck4=ck4-1<br />
&nbsp;&nbsp;&nbsp;&nbsp;else:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ck4=0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;usoKEYDOWN=False<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;for event in pygame.event.get():<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(event)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if event.type == pygame.QUIT:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    pygame.quit()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    exit()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elif event.type == pygame.KEYDOWN:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if event.key==K_UP:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if usoKEYUP==True:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("Debes esperar para empujarte denuevo")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else:&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vy=vy-100<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;usoKEYUP=True<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ck1=intervalo<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h0=h-1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Y0=y<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elif event.key==K_RIGHT:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if usoKEYRIGHT==True:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("Debes esperar para empujarte denuevo")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else:&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vx=vx+100<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;usoKEYRIGHT=True<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ck2=intervalo<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h0x=h-1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;X0=x<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elif event.key == K_LEFT:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if usoKEYLEFT==True:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("Debes esperar para empujarte denuevo")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else:&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vx=vx-100<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;usoKEYLEFT=True<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ck3=intervalo<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h0x=h-1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;X0=x<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elif event.key == K_DOWN:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if y&gt;460:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("no space down")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vy=vy+100<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;usoKEYDOWN=True<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ck4=intervalo<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h0=h-1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Y0=y<br />
<br />
    <br />
pygame.quit()</code></div></div><br />
<br />
(edite un poco por el aspecto actual del problema)<br />
<br />
Gracias.<br />
Saludos!]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Problemas con Pyglet en una Raspberry PI]]></title>
			<link>https://foro.recursospython.com/showthread.php?tid=419</link>
			<pubDate>Sun, 25 Aug 2019 13:16:27 -0700</pubDate>
			<dc:creator><![CDATA[<a href="https://foro.recursospython.com/member.php?action=profile&uid=180">gabriel</a>]]></dc:creator>
			<guid isPermaLink="false">https://foro.recursospython.com/showthread.php?tid=419</guid>
			<description><![CDATA[Buenas tardes,<br />
   tengo un programa hecho con python que funciona correctamente en Windows. Necesito hacerlo funcionar con una Raspberry PI 3. El programa muestra un video en una parte de la pantalla. Para reproducir el video usa Pyglet que se apoya a AVBin. AVbin no está disponible para Raspberry (arquitectura Arm). La última versión de Pyglet se apoya a ffMpeg pero con Raspberry no funciona. El error que aparece es:<br />
<br />
ffmpeg_free_packet(self._packet)<br />
AttributeError: 'FFmpegSource' object has no attribute '_packet'<br />
<br />
¿Pueden ayudarme?<br />
<br />
Gabriel]]></description>
			<content:encoded><![CDATA[Buenas tardes,<br />
   tengo un programa hecho con python que funciona correctamente en Windows. Necesito hacerlo funcionar con una Raspberry PI 3. El programa muestra un video en una parte de la pantalla. Para reproducir el video usa Pyglet que se apoya a AVBin. AVbin no está disponible para Raspberry (arquitectura Arm). La última versión de Pyglet se apoya a ffMpeg pero con Raspberry no funciona. El error que aparece es:<br />
<br />
ffmpeg_free_packet(self._packet)<br />
AttributeError: 'FFmpegSource' object has no attribute '_packet'<br />
<br />
¿Pueden ayudarme?<br />
<br />
Gabriel]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Juego estilo Worms]]></title>
			<link>https://foro.recursospython.com/showthread.php?tid=370</link>
			<pubDate>Thu, 11 Apr 2019 00:22:29 -0700</pubDate>
			<dc:creator><![CDATA[<a href="https://foro.recursospython.com/member.php?action=profile&uid=239">ssanfe</a>]]></dc:creator>
			<guid isPermaLink="false">https://foro.recursospython.com/showthread.php?tid=370</guid>
			<description><![CDATA[Hola a todos!<br />
<br />
Estoy interesado en encontrar el código de algún juegos de disparo por turnos al estilo "Worms". Alguien tiene alguno o sabe dónde puedo conseguirlo?<br />
<br />
Muchas Gracias!!]]></description>
			<content:encoded><![CDATA[Hola a todos!<br />
<br />
Estoy interesado en encontrar el código de algún juegos de disparo por turnos al estilo "Worms". Alguien tiene alguno o sabe dónde puedo conseguirlo?<br />
<br />
Muchas Gracias!!]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Termitas]]></title>
			<link>https://foro.recursospython.com/showthread.php?tid=368</link>
			<pubDate>Sun, 07 Apr 2019 22:42:35 -0700</pubDate>
			<dc:creator><![CDATA[<a href="https://foro.recursospython.com/member.php?action=profile&uid=236">davida9237</a>]]></dc:creator>
			<guid isPermaLink="false">https://foro.recursospython.com/showthread.php?tid=368</guid>
			<description><![CDATA[<span style="color: #5a5a5a;" class="mycode_color"><span style="font-size: small;" class="mycode_size">El objetivo es que las terminas puedan apilar su comida, para eso recorren el ambiente, encuentran comida, la cargan, transportan y la depositan junto al resto de comida.</span></span><br />
<span style="color: #5a5a5a;" class="mycode_color"><span style="font-size: small;" class="mycode_size">El programa ya permite recorrer el ambiente, encontrar comida, levantarla y transportala, necesito ayuda en depositarla junto al resto de comida.</span></span><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://foro.recursospython.com/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=33" target="_blank" title="">termites.zip</a> (Tamaño: 1,8 KB / Descargas: 1)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[<span style="color: #5a5a5a;" class="mycode_color"><span style="font-size: small;" class="mycode_size">El objetivo es que las terminas puedan apilar su comida, para eso recorren el ambiente, encuentran comida, la cargan, transportan y la depositan junto al resto de comida.</span></span><br />
<span style="color: #5a5a5a;" class="mycode_color"><span style="font-size: small;" class="mycode_size">El programa ya permite recorrer el ambiente, encontrar comida, levantarla y transportala, necesito ayuda en depositarla junto al resto de comida.</span></span><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://foro.recursospython.com/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=33" target="_blank" title="">termites.zip</a> (Tamaño: 1,8 KB / Descargas: 1)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Transparencia de una imagen con PyGame]]></title>
			<link>https://foro.recursospython.com/showthread.php?tid=365</link>
			<pubDate>Thu, 28 Mar 2019 01:40:38 -0700</pubDate>
			<dc:creator><![CDATA[<a href="https://foro.recursospython.com/member.php?action=profile&uid=180">gabriel</a>]]></dc:creator>
			<guid isPermaLink="false">https://foro.recursospython.com/showthread.php?tid=365</guid>
			<description><![CDATA[Hola, estoy trabajando sobre el tema de transparencia de un sprite usando PyGame (que tiene canal alfa). <br />
Si uso imagen.set_alpha(nivel_transparencia) lo logro pero me aparece el cuadrado de lo sprite (que con el canal alpha no se debería ver). En internet encontré una solución que funciona. Este es el código<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>def img_fade(background, img, location, opacity):<br />
    x,y = location<br />
    temp = pygame.Surface((img.get_width(), img.get_height())).convert()<br />
    temp.blit(background, (-x, -y))<br />
    temp.blit(img, (0, 0))<br />
    temp.set_alpha(opacity)        <br />
    background.blit(temp, (x,y))</code></div></div><br />
La llamo así:<br />
img_fade(screen, imagen, (100, 50), 100)<br />
<br />
Quisiera saber como funciona]]></description>
			<content:encoded><![CDATA[Hola, estoy trabajando sobre el tema de transparencia de un sprite usando PyGame (que tiene canal alfa). <br />
Si uso imagen.set_alpha(nivel_transparencia) lo logro pero me aparece el cuadrado de lo sprite (que con el canal alpha no se debería ver). En internet encontré una solución que funciona. Este es el código<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>def img_fade(background, img, location, opacity):<br />
    x,y = location<br />
    temp = pygame.Surface((img.get_width(), img.get_height())).convert()<br />
    temp.blit(background, (-x, -y))<br />
    temp.blit(img, (0, 0))<br />
    temp.set_alpha(opacity)        <br />
    background.blit(temp, (x,y))</code></div></div><br />
La llamo así:<br />
img_fade(screen, imagen, (100, 50), 100)<br />
<br />
Quisiera saber como funciona]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[¿cocos2d no es independiente de pyglet?]]></title>
			<link>https://foro.recursospython.com/showthread.php?tid=329</link>
			<pubDate>Wed, 30 Jan 2019 10:05:36 -0800</pubDate>
			<dc:creator><![CDATA[<a href="https://foro.recursospython.com/member.php?action=profile&uid=161">Storm</a>]]></dc:creator>
			<guid isPermaLink="false">https://foro.recursospython.com/showthread.php?tid=329</guid>
			<description><![CDATA[Hola de nuevo!<br />
<br />
Habia leido, de pasada, algo sobre el modulo cocos2d para la programacion de videojuegos. Siempre he usado pygame para estos fines. Sobre todo porque tiene mas documentacion y muchos mas tutoriales. Y tambien videotutoriales, todo hay que decirlo. Con pygame no se necesitan importar demasiadas librerias para la creacion de un juego. Pero con cocos2d veo que siempre o casi siempre se importa pyglet. Que por otro lado es otra libreria de juegos ¿Se necesitan una a la otra? Esta es la duda que tengo. Ya que esto obliga a mirar la guia de referencia de ambas y es un poco caotico. <br />
<br />
Lo bueno que tiene cocos2d es que maneja un director y hace un mejor uso de las escenas. Tambien se puede implementar en pygame, claro. Pero con cocos2d viene de serie. Y el control del bucle de juego es mejor a mi modo de ver con cocos2d. La contrapartida es la escasa documentacion en nuestro idioma. <br />
<br />
Un saludo!  <img src="https://foro.recursospython.com/images/smilies/smile.png" alt="Smile" title="Smile" class="smilie smilie_1" />]]></description>
			<content:encoded><![CDATA[Hola de nuevo!<br />
<br />
Habia leido, de pasada, algo sobre el modulo cocos2d para la programacion de videojuegos. Siempre he usado pygame para estos fines. Sobre todo porque tiene mas documentacion y muchos mas tutoriales. Y tambien videotutoriales, todo hay que decirlo. Con pygame no se necesitan importar demasiadas librerias para la creacion de un juego. Pero con cocos2d veo que siempre o casi siempre se importa pyglet. Que por otro lado es otra libreria de juegos ¿Se necesitan una a la otra? Esta es la duda que tengo. Ya que esto obliga a mirar la guia de referencia de ambas y es un poco caotico. <br />
<br />
Lo bueno que tiene cocos2d es que maneja un director y hace un mejor uso de las escenas. Tambien se puede implementar en pygame, claro. Pero con cocos2d viene de serie. Y el control del bucle de juego es mejor a mi modo de ver con cocos2d. La contrapartida es la escasa documentacion en nuestro idioma. <br />
<br />
Un saludo!  <img src="https://foro.recursospython.com/images/smilies/smile.png" alt="Smile" title="Smile" class="smilie smilie_1" />]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[[Solucionado] Intentando configurar un IDE para pygame]]></title>
			<link>https://foro.recursospython.com/showthread.php?tid=292</link>
			<pubDate>Fri, 28 Dec 2018 07:24:00 -0800</pubDate>
			<dc:creator><![CDATA[<a href="https://foro.recursospython.com/member.php?action=profile&uid=199">kostra</a>]]></dc:creator>
			<guid isPermaLink="false">https://foro.recursospython.com/showthread.php?tid=292</guid>
			<description><![CDATA[Estoy buscando IDEs, compatibles con pygame... pero no lo consigo <img src="https://foro.recursospython.com/images/smilies/sad.png" alt="Sad" title="Sad" class="smilie smilie_8" /><br />
he probado Sublime Text 3, pero no me funciona, también me he descargado el Ninja IDE, este me parece muy interesante... pero después de mil configuraciones siguiendo un tuto en inglés con nosequé de virtualenv, al final me salió en mi "hola mundo" que todo ok...<br />
<img src="https://gyazo.com/062bbb81ffd3a0ebf8b12cfc4b1e780c.png" loading="lazy"  alt="[Imagen: 062bbb81ffd3a0ebf8b12cfc4b1e780c.png]" class="mycode_img" /><br />
pero nada... no me sale ninguna ventana con mi texto :'( y no entiendo por qué, todo lo que encuentro en google está enfocado en el maldito simbolo de sistema (cmd) y yo quiero una ventana!!!<br />
<br />
mi código hola mundo:<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>import pygame.sys<br />
from pygame.locals import *<br />
<br />
pygame.init();<br />
rtest = pygame.display.set_mode((400,300));<br />
pygame.display.set_caption("Hola Mundo");<br />
<br />
while True:<br />
for evento in pygame.event.get():<br />
if evento.type == QUIT:<br />
pygame.quit();<br />
sys.exit();<br />
<br />
pygame.display.update();</code></div></div>]]></description>
			<content:encoded><![CDATA[Estoy buscando IDEs, compatibles con pygame... pero no lo consigo <img src="https://foro.recursospython.com/images/smilies/sad.png" alt="Sad" title="Sad" class="smilie smilie_8" /><br />
he probado Sublime Text 3, pero no me funciona, también me he descargado el Ninja IDE, este me parece muy interesante... pero después de mil configuraciones siguiendo un tuto en inglés con nosequé de virtualenv, al final me salió en mi "hola mundo" que todo ok...<br />
<img src="https://gyazo.com/062bbb81ffd3a0ebf8b12cfc4b1e780c.png" loading="lazy"  alt="[Imagen: 062bbb81ffd3a0ebf8b12cfc4b1e780c.png]" class="mycode_img" /><br />
pero nada... no me sale ninguna ventana con mi texto :'( y no entiendo por qué, todo lo que encuentro en google está enfocado en el maldito simbolo de sistema (cmd) y yo quiero una ventana!!!<br />
<br />
mi código hola mundo:<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>import pygame.sys<br />
from pygame.locals import *<br />
<br />
pygame.init();<br />
rtest = pygame.display.set_mode((400,300));<br />
pygame.display.set_caption("Hola Mundo");<br />
<br />
while True:<br />
for evento in pygame.event.get():<br />
if evento.type == QUIT:<br />
pygame.quit();<br />
sys.exit();<br />
<br />
pygame.display.update();</code></div></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[me hago un lio con los loops]]></title>
			<link>https://foro.recursospython.com/showthread.php?tid=291</link>
			<pubDate>Thu, 27 Dec 2018 15:05:54 -0800</pubDate>
			<dc:creator><![CDATA[<a href="https://foro.recursospython.com/member.php?action=profile&uid=199">kostra</a>]]></dc:creator>
			<guid isPermaLink="false">https://foro.recursospython.com/showthread.php?tid=291</guid>
			<description><![CDATA[Hola buenas a todos, soy nuevo y empiezo, cómo no, con un problema :v<br />
Recién hoy estoy aprendiendo pygame, seguí unos tutoriales pero como soy cabezón de tratar de hacerlo todo a mí manera, pues me he hecho un lío...<br />
<br />
este es mi código completo:<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>#base importante<br />
import pygame;<br />
import time;<br />
pygame.init();<br />
<br />
##constantes<br />
room_width = 800; #ancho de las rooms<br />
room_height = 600; #altura de las rooms<br />
rplay = pygame.display.set_mode((room_width,room_height));<br />
pygame.display.set_caption("Snake_test1");<br />
font = pygame.font.SysFont(None,25);<br />
<br />
#funciones<br />
def draw_text(msg,color):<br />
    pantalla_texto = font.render(msg,True,color);<br />
    rplay.blit(pantalla_texto,[room_width/2,room_height/2]);<br />
<br />
#eventos????<br />
def step():<br />
    ##parametros generales<br />
    fps = pygame.time.Clock(); #init fps<br />
    room_speed = 30; #velocidad de la room (fps)<br />
    game_end = False; #init para finalizar juego<br />
    game_over = False; #init para fin del juego<br />
        <br />
    ##bgcolors<br />
    blanco = (255,255,255);<br />
    negro = (0,0,0);<br />
    rojo = (255,0,0);<br />
<br />
    ##snake vars<br />
    snake_x = room_width/2; #init x<br />
    snake_y = room_height/2; #init y<br />
    snake_spd = 4; #velocidad<br />
    snake_hspeed = 0; #init direccion horizontal<br />
    snake_vspeed = 0; #init direccion vertical<br />
    <br />
    while not game_end:<br />
        while not game_over == True:<br />
            rplay.fill(blanco);<br />
            draw_text("Para continuar pulsa ENTER | Para salir pulsa ESC",rojo);<br />
            pygame.display.update();<br />
<br />
            for event in pygame.event.get():<br />
                if event.type == pygame.KEYDOWN:<br />
                    if event.key == pygame.K_ESCAPE:<br />
                        game_end == True;<br />
                        game_over = False;<br />
                    if event.key == pygame.K_RETURN:<br />
                        step();<br />
                        <br />
        for event in pygame.event.get():<br />
            if event.type == pygame.QUIT:<br />
                game_end = True;<br />
        if event.type == pygame.KEYDOWN:<br />
            if event.key == pygame.K_LEFT:<br />
                snake_hspeed = -snake_spd;<br />
                snake_vspeed = 0;<br />
            if event.key == pygame.K_RIGHT:<br />
                snake_hspeed = snake_spd;<br />
                snake_vspeed = 0;<br />
            if event.key == pygame.K_UP:<br />
                snake_hspeed = 0;<br />
                snake_vspeed = -snake_spd;<br />
            if event.key == pygame.K_DOWN:<br />
                snake_hspeed = 0;<br />
                snake_vspeed = snake_spd;<br />
<br />
        if snake_x &lt; 0 or snake_x &gt;= room_width or snake_y &lt; 0 or snake_y &gt;= room_height:<br />
            game_end = True;<br />
<br />
        snake_x += snake_hspeed;<br />
        snake_y += snake_vspeed;<br />
        rplay.fill(blanco);<br />
        pygame.draw.rect(rplay,negro,[snake_x,snake_y,10,10]);<br />
        <br />
        pygame.display.update();<br />
        fps.tick(room_speed);<br />
<br />
    pygame.quit();<br />
    quit();<br />
step(); #fin del evento step</code></div></div><br />
el caso es que todo funciona menos los bucles para empezar a jugar o salir... según el tutorial, debería de empezar viéndose el rectangulo "snake" en sus coordenadas, y cuando te sales de la pantalla, entonces salir el mensaje de "pulsa ENTER blablabla...", pero en vez de eso, me sale directamente el cartel ese y además, no me funcionan las teclas K_RETURN y K_ESCAPE... a qué se debe?<br />
<br />
Disculpen si me explico mal, disculpen si no soy tan especifico... tengo experiencia en el lenguaje GML del programa Game Maker Studio y trato de adaptarme a este nuevo lenguaje, intentando simular mi manera de trabajar en GM... Y acabo de hacer un fail y no encuentro el por qué... ya que no me sale ningún mensaje de error :S No estoy nada acostumbrado a los bucles que controlan todo el juego.. eso siempre me lo dieron masticado <img src="https://foro.recursospython.com/images/smilies/sad.png" alt="Sad" title="Sad" class="smilie smilie_8" /><br />
<br />
Buenos días a tod@s, yo soy Juan (Kostra o Sobako para los amigos), tengo 28 años y soy de Barcelona, un abrazo a todos y gracias de antebrazo! :B]]></description>
			<content:encoded><![CDATA[Hola buenas a todos, soy nuevo y empiezo, cómo no, con un problema :v<br />
Recién hoy estoy aprendiendo pygame, seguí unos tutoriales pero como soy cabezón de tratar de hacerlo todo a mí manera, pues me he hecho un lío...<br />
<br />
este es mi código completo:<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>#base importante<br />
import pygame;<br />
import time;<br />
pygame.init();<br />
<br />
##constantes<br />
room_width = 800; #ancho de las rooms<br />
room_height = 600; #altura de las rooms<br />
rplay = pygame.display.set_mode((room_width,room_height));<br />
pygame.display.set_caption("Snake_test1");<br />
font = pygame.font.SysFont(None,25);<br />
<br />
#funciones<br />
def draw_text(msg,color):<br />
    pantalla_texto = font.render(msg,True,color);<br />
    rplay.blit(pantalla_texto,[room_width/2,room_height/2]);<br />
<br />
#eventos????<br />
def step():<br />
    ##parametros generales<br />
    fps = pygame.time.Clock(); #init fps<br />
    room_speed = 30; #velocidad de la room (fps)<br />
    game_end = False; #init para finalizar juego<br />
    game_over = False; #init para fin del juego<br />
        <br />
    ##bgcolors<br />
    blanco = (255,255,255);<br />
    negro = (0,0,0);<br />
    rojo = (255,0,0);<br />
<br />
    ##snake vars<br />
    snake_x = room_width/2; #init x<br />
    snake_y = room_height/2; #init y<br />
    snake_spd = 4; #velocidad<br />
    snake_hspeed = 0; #init direccion horizontal<br />
    snake_vspeed = 0; #init direccion vertical<br />
    <br />
    while not game_end:<br />
        while not game_over == True:<br />
            rplay.fill(blanco);<br />
            draw_text("Para continuar pulsa ENTER | Para salir pulsa ESC",rojo);<br />
            pygame.display.update();<br />
<br />
            for event in pygame.event.get():<br />
                if event.type == pygame.KEYDOWN:<br />
                    if event.key == pygame.K_ESCAPE:<br />
                        game_end == True;<br />
                        game_over = False;<br />
                    if event.key == pygame.K_RETURN:<br />
                        step();<br />
                        <br />
        for event in pygame.event.get():<br />
            if event.type == pygame.QUIT:<br />
                game_end = True;<br />
        if event.type == pygame.KEYDOWN:<br />
            if event.key == pygame.K_LEFT:<br />
                snake_hspeed = -snake_spd;<br />
                snake_vspeed = 0;<br />
            if event.key == pygame.K_RIGHT:<br />
                snake_hspeed = snake_spd;<br />
                snake_vspeed = 0;<br />
            if event.key == pygame.K_UP:<br />
                snake_hspeed = 0;<br />
                snake_vspeed = -snake_spd;<br />
            if event.key == pygame.K_DOWN:<br />
                snake_hspeed = 0;<br />
                snake_vspeed = snake_spd;<br />
<br />
        if snake_x &lt; 0 or snake_x &gt;= room_width or snake_y &lt; 0 or snake_y &gt;= room_height:<br />
            game_end = True;<br />
<br />
        snake_x += snake_hspeed;<br />
        snake_y += snake_vspeed;<br />
        rplay.fill(blanco);<br />
        pygame.draw.rect(rplay,negro,[snake_x,snake_y,10,10]);<br />
        <br />
        pygame.display.update();<br />
        fps.tick(room_speed);<br />
<br />
    pygame.quit();<br />
    quit();<br />
step(); #fin del evento step</code></div></div><br />
el caso es que todo funciona menos los bucles para empezar a jugar o salir... según el tutorial, debería de empezar viéndose el rectangulo "snake" en sus coordenadas, y cuando te sales de la pantalla, entonces salir el mensaje de "pulsa ENTER blablabla...", pero en vez de eso, me sale directamente el cartel ese y además, no me funcionan las teclas K_RETURN y K_ESCAPE... a qué se debe?<br />
<br />
Disculpen si me explico mal, disculpen si no soy tan especifico... tengo experiencia en el lenguaje GML del programa Game Maker Studio y trato de adaptarme a este nuevo lenguaje, intentando simular mi manera de trabajar en GM... Y acabo de hacer un fail y no encuentro el por qué... ya que no me sale ningún mensaje de error :S No estoy nada acostumbrado a los bucles que controlan todo el juego.. eso siempre me lo dieron masticado <img src="https://foro.recursospython.com/images/smilies/sad.png" alt="Sad" title="Sad" class="smilie smilie_8" /><br />
<br />
Buenos días a tod@s, yo soy Juan (Kostra o Sobako para los amigos), tengo 28 años y soy de Barcelona, un abrazo a todos y gracias de antebrazo! :B]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[¿Cómo calcular la profundidad de imagenes en pygame?]]></title>
			<link>https://foro.recursospython.com/showthread.php?tid=280</link>
			<pubDate>Thu, 22 Nov 2018 12:35:32 -0800</pubDate>
			<dc:creator><![CDATA[<a href="https://foro.recursospython.com/member.php?action=profile&uid=161">Storm</a>]]></dc:creator>
			<guid isPermaLink="false">https://foro.recursospython.com/showthread.php?tid=280</guid>
			<description><![CDATA[Hola de nuevo <img src="https://foro.recursospython.com/images/smilies/smile.png" alt="Smile" title="Smile" class="smilie smilie_1" /> <br />
<br />
Tengo un pequeño código que simula una gravedad básica y muy simple. Al ejecutar el script nuestro personaje, un cuadrado azul, desciende hasta tocar el suelo. En este caso de color rojo. Cuando toca el suelo a veces aparece por detrás o por delante del mismo. Y pasa igual con la escalera, de color verde. Unas veces pasa por delante de la misma y otras por detrás. Diria que de forma aleatoria. <br />
<br />
Al colisionar con la escalera podemos subir y bajar con las teclas del cursor. Si movemos a izquierda o derecha, caemos por la gravedad. Cuando tocamos el suelo no podemos subir si no tocamos la escalera. Algo lógico que he programado asi. Aunque, misteriosamente, nuestro personaje pega un saltito.<br />
<br />
Las dos cosas que no me gustan es lo que comento: <br />
- Que no hay una jerarquia clara de las profundidades de cada imagen.<br />
- Que cuando colisionamos con el suelo, nuestro personaje, se queda hundido en el mismo. No sobre el suelo.<br />
<br />
He usado las clases y los grupos de objetos. Pero por muchas combinaciones que hago, no resuelvo el problema de profundidad que cada imagen o superficie quiero que tenga.<br />
<br />
He juntado las clases en el mismo script principal para que quede mas claro en el foro.<br />
<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>import pygame<br />
import sys<br />
<br />
<br />
#Inicializamos pygame<br />
pygame.init()<br />
<br />
# CLASES<br />
class Personaje(pygame.sprite.Sprite):<br />
    def __init__(self, x, y, ancho, alto, color):<br />
        super().__init__()        <br />
        self.image = pygame.Surface([ancho, alto])<br />
        self.image.fill(color)<br />
        self.rect = self.image.get_rect()<br />
        self.rect.x = x<br />
        self.rect.y = y<br />
        self.velocidad = 8<br />
        self.gravedad = 8<br />
        self.parar = False    <br />
    # Movimientos personaje<br />
    def izquierda(self, pixels):<br />
        self.rect.x -= self.velocidad    <br />
    def derecha(self, pixels):<br />
        self.rect.x += self.velocidad        <br />
    def arriba(self, pixels):<br />
        self.rect.y -= self.velocidad        <br />
    def abajo(self, pixels):<br />
        self.rect.y += self.velocidad        <br />
    # Parar<br />
    def stop(self):<br />
        self.parar = True         <br />
    # No parar<br />
    def nonStop(self):<br />
        self.parar = False               <br />
    # Update<br />
    def update(self):<br />
        if self.parar:<br />
            self.rect.y += 0<br />
        else:<br />
            self.rect.y += self.gravedad<br />
<br />
class Decorado(pygame.sprite.Sprite):<br />
    def __init__(self, x, y, ancho, alto, color):<br />
        super().__init__()<br />
        self.image = pygame.Surface((ancho, alto))<br />
        self.image.fill(color)<br />
        self.rect = self.image.get_rect()<br />
        self.rect.x = x<br />
        self.rect.y = y<br />
<br />
<br />
NEGRO = (0, 0, 0)<br />
BLANCO = (255, 255, 255)<br />
VERDE = (0, 255, 0)<br />
ROJO = (255, 0, 0)<br />
AZUL = (0, 0, 255)<br />
ventana = pygame.display.set_mode((1024, 720))<br />
pygame.display.set_caption("Titulo de ventana")<br />
<br />
# GRUPOS<br />
objetosTotales = pygame.sprite.Group()<br />
objetosSuelo = pygame.sprite.Group()<br />
objetosEscalera = pygame.sprite.Group()<br />
<br />
# OBJETOS<br />
suelo = Decorado(0, 640, 1024, 32, ROJO)<br />
escalera = Decorado(100, 300, 32, 400, VERDE)<br />
jugador = Personaje(0, 0, 32, 32, AZUL)<br />
monitor = Decorado(600, 10, 300, 50, BLANCO)<br />
<br />
# GRUPOS DE OBJETOS<br />
objetosSuelo.add(suelo)<br />
objetosEscalera.add(escalera)<br />
objetosTotales.add(suelo, escalera, jugador, monitor)<br />
<br />
# TEXTO<br />
fuente = pygame.font.SysFont('Consolas', 20)<br />
<br />
#Bucle de "Juego"<br />
reloj = pygame.time.Clock()<br />
salir = False<br />
cambio_y = 0<br />
subir = False<br />
while not salir:<br />
    for event in pygame.event.get():<br />
        if event.type == pygame.QUIT:<br />
            salir = True    <br />
    tecla = pygame.key.get_pressed()<br />
    if tecla[pygame.K_LEFT]:<br />
        jugador.izquierda(4)<br />
    if tecla[pygame.K_RIGHT]:<br />
        jugador.derecha(4)<br />
    if tecla[pygame.K_UP] and subir == True:<br />
        jugador.arriba(4)       <br />
    if tecla[pygame.K_DOWN]:<br />
        jugador.abajo(4) <br />
            <br />
    # LOGICA    <br />
    colisiones =  pygame.sprite.spritecollide(jugador, objetosSuelo, False)<br />
    for objeto in colisiones:              <br />
        if jugador.rect.bottom &gt;= objeto.rect.top:            <br />
            jugador.rect.bottom = objeto.rect.top<br />
            jugador.stop()     <br />
    if pygame.sprite.spritecollideany(jugador, objetosEscalera):        <br />
        subir = True<br />
        jugador.stop()<br />
    else:<br />
        jugador.nonStop()      <br />
    <br />
    # UPDATE<br />
    objetosTotales.update()    <br />
    <br />
    # DIBUJO DE PANTALLA<br />
    ventana.fill(NEGRO)<br />
    <br />
    text1, text2 = 'jugador.rect.bottom: {}', 'suelo.rect.top: {}'<br />
    coord_1 = fuente.render(text1.format(str(jugador.rect.bottom)), True, NEGRO)<br />
    coord_2= fuente.render(text2.format(str(suelo.rect.top)), True, NEGRO)<br />
    <br />
    # DIBUJO DE SPRITES<br />
    objetosTotales.draw(ventana)<br />
    ventana.blit(coord_1, (600, 10))<br />
    ventana.blit(coord_2, (600, 30))<br />
        <br />
    # ACTUALIZACION DE PANTALLA<br />
    pygame.display.flip()<br />
    reloj.tick(60)<br />
<br />
<br />
<br />
pygame.quit()<br />
sys.exit()</code></div></div><br />
Un saludo y gracias!]]></description>
			<content:encoded><![CDATA[Hola de nuevo <img src="https://foro.recursospython.com/images/smilies/smile.png" alt="Smile" title="Smile" class="smilie smilie_1" /> <br />
<br />
Tengo un pequeño código que simula una gravedad básica y muy simple. Al ejecutar el script nuestro personaje, un cuadrado azul, desciende hasta tocar el suelo. En este caso de color rojo. Cuando toca el suelo a veces aparece por detrás o por delante del mismo. Y pasa igual con la escalera, de color verde. Unas veces pasa por delante de la misma y otras por detrás. Diria que de forma aleatoria. <br />
<br />
Al colisionar con la escalera podemos subir y bajar con las teclas del cursor. Si movemos a izquierda o derecha, caemos por la gravedad. Cuando tocamos el suelo no podemos subir si no tocamos la escalera. Algo lógico que he programado asi. Aunque, misteriosamente, nuestro personaje pega un saltito.<br />
<br />
Las dos cosas que no me gustan es lo que comento: <br />
- Que no hay una jerarquia clara de las profundidades de cada imagen.<br />
- Que cuando colisionamos con el suelo, nuestro personaje, se queda hundido en el mismo. No sobre el suelo.<br />
<br />
He usado las clases y los grupos de objetos. Pero por muchas combinaciones que hago, no resuelvo el problema de profundidad que cada imagen o superficie quiero que tenga.<br />
<br />
He juntado las clases en el mismo script principal para que quede mas claro en el foro.<br />
<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>import pygame<br />
import sys<br />
<br />
<br />
#Inicializamos pygame<br />
pygame.init()<br />
<br />
# CLASES<br />
class Personaje(pygame.sprite.Sprite):<br />
    def __init__(self, x, y, ancho, alto, color):<br />
        super().__init__()        <br />
        self.image = pygame.Surface([ancho, alto])<br />
        self.image.fill(color)<br />
        self.rect = self.image.get_rect()<br />
        self.rect.x = x<br />
        self.rect.y = y<br />
        self.velocidad = 8<br />
        self.gravedad = 8<br />
        self.parar = False    <br />
    # Movimientos personaje<br />
    def izquierda(self, pixels):<br />
        self.rect.x -= self.velocidad    <br />
    def derecha(self, pixels):<br />
        self.rect.x += self.velocidad        <br />
    def arriba(self, pixels):<br />
        self.rect.y -= self.velocidad        <br />
    def abajo(self, pixels):<br />
        self.rect.y += self.velocidad        <br />
    # Parar<br />
    def stop(self):<br />
        self.parar = True         <br />
    # No parar<br />
    def nonStop(self):<br />
        self.parar = False               <br />
    # Update<br />
    def update(self):<br />
        if self.parar:<br />
            self.rect.y += 0<br />
        else:<br />
            self.rect.y += self.gravedad<br />
<br />
class Decorado(pygame.sprite.Sprite):<br />
    def __init__(self, x, y, ancho, alto, color):<br />
        super().__init__()<br />
        self.image = pygame.Surface((ancho, alto))<br />
        self.image.fill(color)<br />
        self.rect = self.image.get_rect()<br />
        self.rect.x = x<br />
        self.rect.y = y<br />
<br />
<br />
NEGRO = (0, 0, 0)<br />
BLANCO = (255, 255, 255)<br />
VERDE = (0, 255, 0)<br />
ROJO = (255, 0, 0)<br />
AZUL = (0, 0, 255)<br />
ventana = pygame.display.set_mode((1024, 720))<br />
pygame.display.set_caption("Titulo de ventana")<br />
<br />
# GRUPOS<br />
objetosTotales = pygame.sprite.Group()<br />
objetosSuelo = pygame.sprite.Group()<br />
objetosEscalera = pygame.sprite.Group()<br />
<br />
# OBJETOS<br />
suelo = Decorado(0, 640, 1024, 32, ROJO)<br />
escalera = Decorado(100, 300, 32, 400, VERDE)<br />
jugador = Personaje(0, 0, 32, 32, AZUL)<br />
monitor = Decorado(600, 10, 300, 50, BLANCO)<br />
<br />
# GRUPOS DE OBJETOS<br />
objetosSuelo.add(suelo)<br />
objetosEscalera.add(escalera)<br />
objetosTotales.add(suelo, escalera, jugador, monitor)<br />
<br />
# TEXTO<br />
fuente = pygame.font.SysFont('Consolas', 20)<br />
<br />
#Bucle de "Juego"<br />
reloj = pygame.time.Clock()<br />
salir = False<br />
cambio_y = 0<br />
subir = False<br />
while not salir:<br />
    for event in pygame.event.get():<br />
        if event.type == pygame.QUIT:<br />
            salir = True    <br />
    tecla = pygame.key.get_pressed()<br />
    if tecla[pygame.K_LEFT]:<br />
        jugador.izquierda(4)<br />
    if tecla[pygame.K_RIGHT]:<br />
        jugador.derecha(4)<br />
    if tecla[pygame.K_UP] and subir == True:<br />
        jugador.arriba(4)       <br />
    if tecla[pygame.K_DOWN]:<br />
        jugador.abajo(4) <br />
            <br />
    # LOGICA    <br />
    colisiones =  pygame.sprite.spritecollide(jugador, objetosSuelo, False)<br />
    for objeto in colisiones:              <br />
        if jugador.rect.bottom &gt;= objeto.rect.top:            <br />
            jugador.rect.bottom = objeto.rect.top<br />
            jugador.stop()     <br />
    if pygame.sprite.spritecollideany(jugador, objetosEscalera):        <br />
        subir = True<br />
        jugador.stop()<br />
    else:<br />
        jugador.nonStop()      <br />
    <br />
    # UPDATE<br />
    objetosTotales.update()    <br />
    <br />
    # DIBUJO DE PANTALLA<br />
    ventana.fill(NEGRO)<br />
    <br />
    text1, text2 = 'jugador.rect.bottom: {}', 'suelo.rect.top: {}'<br />
    coord_1 = fuente.render(text1.format(str(jugador.rect.bottom)), True, NEGRO)<br />
    coord_2= fuente.render(text2.format(str(suelo.rect.top)), True, NEGRO)<br />
    <br />
    # DIBUJO DE SPRITES<br />
    objetosTotales.draw(ventana)<br />
    ventana.blit(coord_1, (600, 10))<br />
    ventana.blit(coord_2, (600, 30))<br />
        <br />
    # ACTUALIZACION DE PANTALLA<br />
    pygame.display.flip()<br />
    reloj.tick(60)<br />
<br />
<br />
<br />
pygame.quit()<br />
sys.exit()</code></div></div><br />
Un saludo y gracias!]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Cambio de pantallas o niveles con pygame]]></title>
			<link>https://foro.recursospython.com/showthread.php?tid=221</link>
			<pubDate>Sat, 22 Sep 2018 11:44:12 -0700</pubDate>
			<dc:creator><![CDATA[<a href="https://foro.recursospython.com/member.php?action=profile&uid=161">Storm</a>]]></dc:creator>
			<guid isPermaLink="false">https://foro.recursospython.com/showthread.php?tid=221</guid>
			<description><![CDATA[Hola!<br />
<br />
Pues ya estoy por aqui <img src="https://foro.recursospython.com/images/smilies/smile.png" alt="Smile" title="Smile" class="smilie smilie_1" /><br />
<br />
Como comente en mi presentacion, estoy trasteando con el modulo de videojuegos pygame. Aunque he ido aprendiendo a ratos, muchas veces lo he dejado parado por un tiempo. Ya que tambien quise conocer tkinter para crear alguna GUI.<br />
<br />
La cosa es que la mayoria de tutoriales de pygame se basan en una pantalla unica o escena. O como mucho un gestor de escenas donde esta el menu, la pantalla de juego y los records. Osea, tres o cuatro escenas. Suelen usar una clase director y otra clase de escenas.<br />
<br />
Pero no es eso lo que yo quiero. Lo que busco es crear un mapeado extenso con pygame. Es decir, como los juegos de toda la vida. No el clasico Pong, Tetris, Asteroids y tal...<br />
<br />
Nosotros controlamos un personaje que va cambiando de pantalla a medida que llega al final de cada una. Aunque tambien pueden haber pantallas inferiores o superiores. Pues eso, un mapeado de toda la vida. <br />
<br />
Lo maximo que he logrado crear yo, es que controlamos un cuadrado y se mueve en dos pantallas. Cuando llega al final de una, cambia a la otra. Eso si, respetando la coordenada propia para dar continuidad a su recorrido entre pantallas. <br />
<br />
Cuando tenga el codigo un poco ordenado lo posteo. Ahora tengo las clases en varios modulos y prefiero ponerlo aqui todo junto para dar mas claridad al script.<br />
<br />
A mi modo de ver, se deben crear tres clases muy basicas: El Personaje, el Obstaculo y la Pantalla. De la clase Pantalla se deben instanciar las demas pantallas que visita nuestro personaje.  Pero ahi es cuendo me lio. Ya que dentro del bucle del juego se deberia llevar un control de la pantalla actual y el registro de obstaculos y colisiones en esa pantalla. <br />
<br />
Es script que pondre es muy basico y hace daño a la vista. Ya que en el bucle principal esta cargado de IFs y solo son dos pantallas. Y para colmo, el obstaculo sale en ambas. Cosa que no tiene logica.<br />
<br />
Bueno, cuando lo tenga todo ordenado lo posteo. Un saludo y perdon por el tocho <img src="https://foro.recursospython.com/images/smilies/confused.png" alt="Confused" title="Confused" class="smilie smilie_13" />]]></description>
			<content:encoded><![CDATA[Hola!<br />
<br />
Pues ya estoy por aqui <img src="https://foro.recursospython.com/images/smilies/smile.png" alt="Smile" title="Smile" class="smilie smilie_1" /><br />
<br />
Como comente en mi presentacion, estoy trasteando con el modulo de videojuegos pygame. Aunque he ido aprendiendo a ratos, muchas veces lo he dejado parado por un tiempo. Ya que tambien quise conocer tkinter para crear alguna GUI.<br />
<br />
La cosa es que la mayoria de tutoriales de pygame se basan en una pantalla unica o escena. O como mucho un gestor de escenas donde esta el menu, la pantalla de juego y los records. Osea, tres o cuatro escenas. Suelen usar una clase director y otra clase de escenas.<br />
<br />
Pero no es eso lo que yo quiero. Lo que busco es crear un mapeado extenso con pygame. Es decir, como los juegos de toda la vida. No el clasico Pong, Tetris, Asteroids y tal...<br />
<br />
Nosotros controlamos un personaje que va cambiando de pantalla a medida que llega al final de cada una. Aunque tambien pueden haber pantallas inferiores o superiores. Pues eso, un mapeado de toda la vida. <br />
<br />
Lo maximo que he logrado crear yo, es que controlamos un cuadrado y se mueve en dos pantallas. Cuando llega al final de una, cambia a la otra. Eso si, respetando la coordenada propia para dar continuidad a su recorrido entre pantallas. <br />
<br />
Cuando tenga el codigo un poco ordenado lo posteo. Ahora tengo las clases en varios modulos y prefiero ponerlo aqui todo junto para dar mas claridad al script.<br />
<br />
A mi modo de ver, se deben crear tres clases muy basicas: El Personaje, el Obstaculo y la Pantalla. De la clase Pantalla se deben instanciar las demas pantallas que visita nuestro personaje.  Pero ahi es cuendo me lio. Ya que dentro del bucle del juego se deberia llevar un control de la pantalla actual y el registro de obstaculos y colisiones en esa pantalla. <br />
<br />
Es script que pondre es muy basico y hace daño a la vista. Ya que en el bucle principal esta cargado de IFs y solo son dos pantallas. Y para colmo, el obstaculo sale en ambas. Cosa que no tiene logica.<br />
<br />
Bueno, cuando lo tenga todo ordenado lo posteo. Un saludo y perdon por el tocho <img src="https://foro.recursospython.com/images/smilies/confused.png" alt="Confused" title="Confused" class="smilie smilie_13" />]]></content:encoded>
		</item>
	</channel>
</rss>