Черепаха не может узнать, какой цвет в данный момент находится на экране, поэтому одним из способов решения этой проблемы может быть наличие какого-то резервного хранилища , где вы отслеживаете, какой цвет был записан в какой пиксель.Вот грубый пример использования списков Python:
from turtle import Screen, Turtle
from random import choice
WIDTH, HEIGHT = 300, 300
PEN_COLORS = ['red', 'blue']
OVERLAP_COLOR = 'green'
def randWalk(number):
for _ in range(number):
for turtle in turtles:
direction = choice((-1, 1))
turtle.forward(direction)
x, y = map(round, turtle.position())
old_color = color = turtle.pencolor()
turtle.undo() # undo forward()
if grid[y][x] and grid[y][x] != color:
color = OVERLAP_COLOR
turtle.pencolor(color)
turtle.goto(x, y) # redo forward()
turtle.pencolor(old_color)
grid[y][x] = color
choice((turtle.left, turtle.right))(90)
screen.update()
screen = Screen()
screen.setup(WIDTH, HEIGHT)
screen.tracer(False)
grid = [[None] * WIDTH for _ in range(HEIGHT)]
turtles = []
for color in PEN_COLORS:
turtle = Turtle()
turtle.hideturtle()
turtle.pencolor(color)
turtles.append(turtle)
randWalk(4000)
screen.tracer(True)
screen.exitonclick()
В коде есть дополнительное усложнение, поскольку черепаха перемещается по плоскости с плавающей запятой, но нам нужно привести ее к целочисленной плоскости, чтобы вместить наш резервный накопитель и уменьшить нежелательное рисованиеартефакты.