【问题标题】:Set dot color based on where they are in Python turtle?根据它们在 Python 龟中的位置设置点颜色?
【发布时间】:2013-08-12 04:34:53
【问题描述】:
from turtle import *
from random import randint
speed("fastest")


pendown()
goto(200, 0)
goto(200, 200)
goto(0, 200)
goto(0,0)
goto(200,200)

area_size = 800 
max_coord = area_size / 2

num_dots = 300 

setup(area_size, area_size)

for _ in range(num_dots):

    dots_pos_x = randint(-max_coord, max_coord)
    dots_pos_y = randint(-max_coord, max_coord)

    penup()
    goto(dots_pos_x, dots_pos_y)
    dot(4)
    pendown()


hideturtle()
done()

这段代码画了一个正方形,用一条线把它分成两个相等的三角形。我怎样才能让落在广场一半的点变成红色但当它们落在广场的另一半时变成蓝色。没有落在正方形中的点保持黑色。

【问题讨论】:

    标签: python python-2.7 turtle-graphics


    【解决方案1】:

    我猜你正在使用 random 模块并首先生成 x 坐标,然后生成 y 坐标。如果这确实是您的方法,那么在您生成它时对每个方法进行检查,看看它是否在您的盒子范围内。即if (x > 10) and (x < 20):if (y > 15) and (y < 25):如果语句为真则设置变量the_color为红色,else,设置为蓝色

    【讨论】:

    • 我在谈论如果我使用以下命令绘制一个正方形,导入 turtle turtle.pendown() turtle.forward(200) turtle.left(90) turtle.forward(200) turtle.left( 90)turtle.forward(200)turtle.left(90)turtle.forward(200)打印乌龟,当我生成例如300个随机点时,我如何让进入正方形的点变成红色?我将如何定义正方形。对不起,我是一个完整的 python 菜鸟
    • @user2673638 你是如何“生成” 300 个随机点然后绘制它们的?乌龟从哪里开始?这些是您应该编辑您的问题以包括在内的内容,以便我们可以更好地帮助您。您可以发布您在原始问题中使用的所有相关代码吗?
    【解决方案2】:

    由于已经有几年了,以下是解决此问题的可能解决方案。请注意,我从 turtle.dot() 切换到 turtle.stamp(),这将执行速度提高了 2.5 倍:

    from turtle import Turtle, Screen
    from random import randint
    
    AREA_SIZE = 800
    MAX_COORD = AREA_SIZE / 2
    SQUARE_SIZE = 200
    DOT_SIZE = 4
    NUM_DOTS = 300
    STAMP_SIZE = 20
    
    screen = Screen()
    screen.setup(AREA_SIZE, AREA_SIZE)
    
    turtle = Turtle(shape="circle")
    turtle.shapesize(DOT_SIZE / STAMP_SIZE)
    turtle.speed("fastest")
    
    for _ in range(4):
        turtle.forward(SQUARE_SIZE)
        turtle.left(90)
    
    turtle.left(45)
    turtle.goto(SQUARE_SIZE, SQUARE_SIZE)
    turtle.penup()
    
    black, red, green = 0, 0, 0
    
    for _ in range(NUM_DOTS):
    
        color = "black"
    
        x = randint(-MAX_COORD, MAX_COORD)
        y = randint(-MAX_COORD, MAX_COORD)
    
        turtle.goto(x, y)
    
        # color dot if it's in the square but not smack on any of the lines
        if 0 < x < SQUARE_SIZE and 0 < y < SQUARE_SIZE:
            if x < y:
                color = "green"  # easier to distinguish from black than blue
                green += 1
            elif y < x:
                color = "red"
                red += 1
            else black += 1  # it's on the line!
        else:
            black += 1  # it's not in the square
    
        turtle.color(color)
        turtle.stamp()
    
    turtle.hideturtle()
    
    print("Black: {}\nRed: {}\nGreen: {}".format(black, red, green))
    
    screen.exitonclick()
    

    请注意,我使用绿色而不是蓝色,因为我很难区分小蓝点和小黑点!

    输出

    最后它会打印出每种颜色的打印点数:

    > python3 test.py
    Black: 279
    Red: 5
    Green: 16
    >
    

    【讨论】:

      猜你喜欢
      • 2015-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多