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.

Python3-Turtle: El color del lápiz no cambia.

Tengo una función que dibuja una pared de ladrillos, con la opción de establecer un color de lápiz específico antes de dibujar la pared, sin embargo, parece que el ladrillo se dibuja en verde sin importar lo que haga:

def dibujar_ladrillo(longitud, ancho):
    t.color("green")
    t.begin_fill()
    for i in range(2):
        t.forward(longitud)
        t.right(90)
        t.forward(ancho)
        t.right(90)
    t.end_fill()

def dibujar_fila(tipo_fila, ladrillos):
    if tipo_fila == "A":
        for i in range(ladrillos):
            dibujar_ladrillo(50, 30)
            t.penup()
            t.forward(70)
            t.pendown()
    elif tipo_fila == "B":
        dibujar_ladrillo(12, 30)
        t.penup()
        t.forward(35)
        t.pendown()

        for i in range(ladrillos - 1):
            dibujar_ladrillo(50, 30)
            t.penup()
            t.forward(70)
            t.pendown()

        t.penup()
        t.pendown()
        dibujar_ladrillo(12, 30)

def dibujar_pared_de_ladrillos(filas, ladrillo, fila_superior, nuevo_color):
    t.pencolor(nuevo_color)

    if fila_superior == "A":
        dibujo_A = True
    else:
        dibujo_A = False

    for i in range(filas):
        siguiente_posicion = (t.xcor(), t.ycor() - 40)

        if dibujo_A:
            dibujar_fila("A", ladrillo)
        else:
            dibujar_fila("B", ladrillo)

        dibujo_A = not (dibujo_A)
        mover_sin_trazos(siguiente_posicion[0], siguiente_posicion[1])

def mover_sin_trazos(x, y):
    t.penup()
    t.goto(x, y)
    t.pendown()

Por alguna razón, sin embargo, el color del lápiz de la tortuga no cambia. ¿Qué puedo hacer para solucionar esto?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que la función draw_brick_wall está llamando a t.pencolor(new_color) para cambiar el color del lápiz antes de dibujar la pared. Sin embargo, la función draw_brick está usando t.color("green") para establecer el color de relleno de los ladrillos.

    Para cambiar el color del lápiz de la tortuga, puedes utilizar t.pencolor(new_color) en la función draw_brick antes de dibujar el ladrillo. Esto permitirá cambiar el color tanto del lápiz como del relleno.

    Aquí tienes una versión actualizada de la función draw_brick:

    def draw_brick(length, width, pen_color="green", fill_color="green"):
        t.pencolor(pen_color)
        t.fillcolor(fill_color)
        t.begin_fill()
        for i in range(2):
            t.forward(length)
            t.right(90)
            t.forward(width)
            t.right(90)
        t.end_fill()
    

    Con este cambio, ahora puedes pasar un nuevo color de lápiz a draw_brick_wall y se utilizará tanto para el lápiz como para el relleno de los ladrillos:

    def draw_brick_wall(rows, brick, top_row, new_color):
        # usa new_color para el color del lápiz y el color de relleno
        draw_brick(1, 1, pen_color=new_color, fill_color=new_color)
    
        # ...
    

    ¡Espero que esto sea de ayuda!

Comments are closed.