es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El objeto de la tortuga de Python no se mostrará en la ventana.

Estoy intentando hacer una copia del juego Breakout de Atari utilizando Python y Turtle. Anteriormente he creado una copia del juego Pong que no utiliza OOP y funcionó perfectamente bien. Sin embargo, debido a los ladrillos en Breakout, decidí utilizar OOP y crear una clase de objeto para los ladrillos. Una vez que ejecuto el programa, no se muestra el ladrillo. ¿Algún idea de por qué?

import turtle

window = turtle.Screen()
window.title('Atari Breakout')
window.bgcolor('black')
window.setup(width=800, height=600)
window.tracer(0)

class Brick(turtle.Turtle):
    def __init__(self):
        super().__init__(shape='square', visible=True)
        self.color('white')
        self.shapesize(stretch_wid=10, stretch_len=4)
        self.penup()
        self.goto(-350, 200)

board1 = Brick()
window.update()
Tags:  ,

Answer

  1. Avatar for davy.ai

    Hay algunas posibles razones por las que el ladrillo no se muestra en la pantalla.

    Una posibilidad es que la ventana de la tortuga no se esté actualizando después de crear el ladrillo. En el código proporcionado, hay una instrucción window.tracer(0) que desactiva la actualización automática de la ventana de la tortuga. Una solución podría ser agregar una instrucción window.update() después de crear el objeto del ladrillo, de la siguiente manera:

    board1 = Brick()
    window.update()
    

    Otro posible problema es que el ladrillo podría estar siendo creado fuera de la pantalla, por lo que no es visible. En el método __init__ de la clase Brick, se utiliza el método goto para posicionar el ladrillo. Las coordenadas utilizadas en este método (-350, 200) podrían estar fuera del rango visible de la ventana de la tortuga. Para comprobar si este es el problema, prueba cambiar las coordenadas a un valor más pequeño y observa si el ladrillo aparece en la pantalla:

    self.goto(-100, 100)
    

    Si esto soluciona el problema, ajusta las coordenadas para posicionar mejor el ladrillo donde se pretende.

    Por último, es posible que haya un problema con la clase Brick en sí misma. Por ejemplo, la instrucción super().__init__ se llama con el argumento shape='square', pero la clase Turtle no tiene un atributo shape. Esto podría generar un comportamiento inesperado. Puede ser útil revisar la documentación de Turtle y asegurarse de que la clase Brick esté estructurada correctamente.

Comments are closed.