Hemos visto como rellenar un cuadrado centrado, ahora nos proponemos usar otras herramientas, una muy útil son las listas, en el código de abajo usamos un a lista de "colores", de modo tal que podemos usar esta lista para tomar cada color usando una iteración "for"
t.pensize(3)
pasos = 400
for j in range(14):
t.pencolor(colores[j+1])
t.fillcolor(colores[j])
t.begin_fill()
for i in range(5):
cuadrado_centrado(pasos)
t.right(18)
t.end_fill()
pasos -= 25
En relidad son dos iteraciones una depende del valor de "j" y otra depende del valor de "i". Antes de empezar la iteración en "i", abrimos la posibilidad de rellenar todo lo que dibujemos con "t.begin_fill()", dentro de la iteraciónn "cuadrado_centrado(pasos), llamamos a la definición cuadrado centrado con un lado igual a "pasos" , se dibujan estos cinco cuadrado que rotan 18 grados a la derecha "t.right(18)", luego cerramos el relleno con "t.end_fill()". Aquí se observa que hay un relleno selectivo, quedando zona sin rellenar y otras rellenadas. A continuación disminuimos en 25 el valor de pasos "pasos -=5", esta sentencia nos indica que la variable "pasos" ahora va ser igual al valor que tenía menos 25. Esta forma de cambiar las variables dentro de las iteraciones es muy usada.
Cada vez que cambie el valor de "j", tendremos un nuevo color para la tortuga y un nuevo valor para el relleno. En nuestro caso el lápiz tiene el color "t.pencolor(colores[j+1], al comenzar j=0 de modo que el color será colores[1] que es valor de la lista colores "darkorange", en cambio el color del relleno sera "t.fillcolor(colores[j])", para j=0 el color sera colores[0], o sea "maroon".
import turtle
t = turtle.Turtle()
t.speed(0)
t.speed(0)
colores = ["maroon", "darkorange", "firebrick", "green", "maroon", "darkorange", "gold", "firebrick",
"chocolate", "orange", "orangered", "red", "maroon", "orange", "green", "maroon", "darkorange", "firebrick",
"chocolate", "orange", "orangered", "red", "maroon", "orange"]
def cuadrado(pasos):
for i in range(4):
t.forward(pasos)
t.right(90)
def cuadrado_centrado(pasos):
t.penup()
t.forward(pasos/2)
t.pendown()
t.right(90)
t.forward(pasos/2)
for i in range(3):
t.right(90)
t.forward(pasos)
t.right(90)
t.forward(pasos/2)
t.left(90)
t.penup()
t.backward(pasos/2)
t.pendown()
def main():
miVentana = turtle.Screen()
miVentana.bgcolor("silver")
miVentana.title("Cuadrado centrado fill")
t.pencolor("black")
t.pensize(3)
pasos = 400
for j in range(14):
t.pencolor(colores[j+1])
t.fillcolor(colores[j])
t.begin_fill()
for i in range(5):
cuadrado_centrado(pasos)
t.right(18)
t.end_fill()
pasos -= 25
t.ht()
miVentana.exitonclick()
main()
Tenemos esta imagen, como haríamos para hacerla a partir de su centro. Primero tendríamos que tener un radio que sería desde el centro a cualquiera de las puntas. El problema es saber cuantos pasos tiene que caminar la tortuga en cada uno de los 16 lados.