首页 > 解决方案 > 如何创建 Turtle 克隆并将它们附加到列表中?

问题描述

我想编写一个程序,在 3 行中绘制 5 个正方形。每个第二个方块都是不同的颜色。

所以到目前为止我已经准备好了方块

sq1 = turtle.Turtle()
sq1.shape("square")
sq1.hideturtle()
sq1.color("red")
sq1.begin_fill()

sq2 = turtle.Turtle()
sq2.shape("square")
sq2.hideturtle()
sq2.color("black")
sq2.begin_fill()

正如你可以想象的那样,输入 15 个 clone.turtles 并为它们中的每一个输入一个不同的位置将需要很长时间。我的目标是为此目的创建一个简单的列表。只是我不知道如何将所有不同的方块放入列表中,以及如何设法将它们移动到不同的位置。

标签: pythonturtle-graphics

解决方案


在循环中创建海龟for,并在每次迭代中将海龟附加到列表中。

您可以定义一个函数:

import turtle

def draw_squares(rows, cols, x=0, y=0, size=20):
    colors = ['red', 'black']
    square = []
    for i in range(cols):
        for j in range(rows):
            t = turtle.Turtle('square')
            t.penup()
            t.shapesize(size / 20)
            t.goto(i * size + x, j * size + y)
            t.color(colors[(i + j) % 2])
            square.append(t)
    return squares

squares = draw_squares(3, 5, size=40)

输出:

在此处输入图像描述

其中xy是左下角正方形中心的坐标,size是每个正方形的像素大小,rowscols是棋盘中的行数和列数。

更新

根据评论中的要求,以下是我们如何更改每个矩形之间的宽度、高度和间距:

import turtle

def draw_squares(rows, cols, x=-170, y=0, w=80, h=40, space=5):
    colors = ['red', 'black']
    square = []
    for i in range(cols):
        for j in range(rows):
            t = turtle.Turtle('square')
            t.penup()
            t.shapesize(h / 20, w / 20)
            t.goto(i * space + i * w + x,j * space + j * h + y)
            t.color('white', colors[(i + j) % 2])
            square.append(t)
    return squares

squares = draw_squares(3, 5)

输出:

在此处输入图像描述

哪里w是宽度,h是高度,space是间距。


推荐阅读