Python 海龟图形“;如果触摸颜色“;

Python 海龟图形“;如果触摸颜色“;,python,turtle-graphics,Python,Turtle Graphics,我正在尝试用海龟做一个程序,画一棵圣诞树,然后再画一些小玩意儿,我想随机放在圣诞树上。然而,因为圣诞树是一个不规则的形状,我无法通过随机选择x和y坐标来放置这些装饰品。有没有办法把这些小玩意儿随意放在树上? 我在考虑一个“turtle.pendown()”然后是“if-turtle.pen”触摸“green”,但我不知道如何编写这个代码。 任何帮助都将不胜感激。我认为海龟没有检查颜色的方法 但是turtle使用tkinter中的Canvas功能查找重叠(矩形)来检查某些对象是否与该矩形重叠。也许

我正在尝试用海龟做一个程序,画一棵圣诞树,然后再画一些小玩意儿,我想随机放在圣诞树上。然而,因为圣诞树是一个不规则的形状,我无法通过随机选择x和y坐标来放置这些装饰品。有没有办法把这些小玩意儿随意放在树上? 我在考虑一个“turtle.pendown()”然后是“if-turtle.pen”触摸“green”,但我不知道如何编写这个代码。
任何帮助都将不胜感激。

我认为
海龟
没有检查颜色的方法

但是
turtle
使用
tkinter
中的
Canvas
功能
查找重叠(矩形)
来检查某些对象是否与该矩形重叠。也许它能起作用。也许你们可以检查一下,在随机的地方,在一些小的矩形中是否有树


我认为
海龟
没有检查颜色的方法

但是
turtle
使用
tkinter
中的
Canvas
功能
查找重叠(矩形)
来检查某些对象是否与该矩形重叠。也许它能起作用。也许你们可以检查一下,在随机的地方,在一些小的矩形中是否有树


一种简单的图形化方法是:

  • 查找具有 试验

  • 使用海龟的
    begin_poly()
    end_poly()
    、和
    get_poly()
    捕捉 绘制树时代码生成的顶点

  • 在树的边界框内随机生成装饰,但 同时应用交叉数测试,查看其中心是否打开 树

  • 下面是一个使用(异常)抽象树和装饰的示例实现:

    from turtle import Turtle, Screen
    from random import randrange, choice
    from point_in_polygon import cn_PnPoly
    
    screen = Screen()
    
    WINDOW_WIDTH, WINDOW_HEIGHT = screen.window_width(), screen.window_height()
    
    COLORS = ["red", "yellow", "gold", "blue", "white", "pink"]
    
    def draw_abstract_tree(turtle):
        width = WINDOW_WIDTH//4
    
        turtle.penup()
        turtle.goto(0, -WINDOW_HEIGHT//4)
        turtle.pendown()
    
        for _ in range(8):
            turtle.forward(width)
            turtle.left(150)
            turtle.forward(1.156 * width)
            turtle.right(150)
            width *= 0.9
    
        turtle.left(210)
    
        for _ in range(8):
            turtle.forward(1.156 * width)
            turtle.left(150)
            turtle.forward(width)
            turtle.right(150)
            width /= 0.9
    
        turtle.goto(0, -WINDOW_HEIGHT//4)
    
        turtle.setheading(0)
    
    def decorate_tree(turtle, polygon):
        turtle.penup()
    
        for _ in range(1000):
            x = randrange(-WINDOW_WIDTH/4, WINDOW_WIDTH/4)
            y = randrange(-WINDOW_HEIGHT/4, WINDOW_HEIGHT)
            diameter = randrange(1, 12)
    
            if cn_PnPoly((x, y), polygon):
                turtle.goto(x, y)
                turtle.color(choice(COLORS))
                turtle.dot(diameter)
    
    yertle = Turtle(visible=False)
    yertle.speed("fastest")
    yertle.color("darkgreen")
    
    yertle.begin_poly()
    draw_abstract_tree(yertle)
    yertle.end_poly()
    
    polygon = yertle.get_poly()
    
    yertle.begin_fill()
    draw_abstract_tree(yertle)
    yertle.end_fill()
    
    decorate_tree(yertle, polygon)
    
    screen.exitonclick()
    
    输出


    一种简单的图形化方法是:

  • 查找具有 试验

  • 使用海龟的
    begin_poly()
    end_poly()
    、和
    get_poly()
    捕捉 绘制树时代码生成的顶点

  • 在树的边界框内随机生成装饰,但 同时应用交叉数测试,查看其中心是否打开 树

  • 下面是一个使用(异常)抽象树和装饰的示例实现:

    from turtle import Turtle, Screen
    from random import randrange, choice
    from point_in_polygon import cn_PnPoly
    
    screen = Screen()
    
    WINDOW_WIDTH, WINDOW_HEIGHT = screen.window_width(), screen.window_height()
    
    COLORS = ["red", "yellow", "gold", "blue", "white", "pink"]
    
    def draw_abstract_tree(turtle):
        width = WINDOW_WIDTH//4
    
        turtle.penup()
        turtle.goto(0, -WINDOW_HEIGHT//4)
        turtle.pendown()
    
        for _ in range(8):
            turtle.forward(width)
            turtle.left(150)
            turtle.forward(1.156 * width)
            turtle.right(150)
            width *= 0.9
    
        turtle.left(210)
    
        for _ in range(8):
            turtle.forward(1.156 * width)
            turtle.left(150)
            turtle.forward(width)
            turtle.right(150)
            width /= 0.9
    
        turtle.goto(0, -WINDOW_HEIGHT//4)
    
        turtle.setheading(0)
    
    def decorate_tree(turtle, polygon):
        turtle.penup()
    
        for _ in range(1000):
            x = randrange(-WINDOW_WIDTH/4, WINDOW_WIDTH/4)
            y = randrange(-WINDOW_HEIGHT/4, WINDOW_HEIGHT)
            diameter = randrange(1, 12)
    
            if cn_PnPoly((x, y), polygon):
                turtle.goto(x, y)
                turtle.color(choice(COLORS))
                turtle.dot(diameter)
    
    yertle = Turtle(visible=False)
    yertle.speed("fastest")
    yertle.color("darkgreen")
    
    yertle.begin_poly()
    draw_abstract_tree(yertle)
    yertle.end_poly()
    
    polygon = yertle.get_poly()
    
    yertle.begin_fill()
    draw_abstract_tree(yertle)
    yertle.end_fill()
    
    decorate_tree(yertle, polygon)
    
    screen.exitonclick()
    
    输出


    到目前为止,您尝试了什么?因此,这不是一个代码编写服务-请参阅为什么这个问题没有正确地提出。而且,你甚至都懒得去看这个2分钟的网站。到目前为止你都做了些什么?因此,这不是一个代码编写服务-请参阅为什么这个问题没有正确地提出。而且,你甚至都懒得去看这个2分钟的网站。