您可以向Canvas询问Turtle下面的项目并报告您感兴趣的任何填充颜色。例如,您可以将要为迷宫绘制的所有矩形添加到矩形列表中,并使用该列表确定乌龟是否在矩形中。然后报告颜色。
from tkinter import Tk, Canvas, Frame, BOTH import turtle top = Tk() C = Canvas(top, height=500, width=600) Doug = turtle.RawTurtle(C) rectangles = [] rectangles.append(C.create_rectangle(30, 10, 120, 80, outline="#fb0", fill="#fb0")) Doug.fd(50) Doug.rt(90) Doug.fd(50) # For some reason Doug's y-coord is opposite what Canvas uses, so * -1 to fix it... overlapping = C.find_overlapping(Doug.xcor(), Doug.ycor() * -1, Doug.xcor(), Doug.ycor() * -1) for item_id in overlapping: if item_id in rectangles: print(C.itemcget(item_id, "fill")) C.pack(fill=BOTH, expand=1) top.mainloop()
正如最后的想法,但与问题无关。我强烈建议您使用小写名称来实例化对象(将“C”更改为“canvas”,将“Doug”更改为“doug”)。在python和许多其他语言中,大写表示Class本身,而不是它的实例)。我在上面的代码中单独留下了它,因此您可以尝试对代码进行最少的更改。
根据文档中关于乌龟的说法,它没有任何功能来获取当前位置的颜色。我的方法是使用二进制映射作为行走指示器,但这可能太静态而无法模拟乐高机器人环境。
如果你在Windows上,你可以使用win32gui库,它将为你提供屏幕上像素的像素颜色( 是否可以使用X和Y坐标获取屏幕上特定像素的颜色? )。结合它 turtle.hideturtle() 和 turtle.pos() 并为父窗口添加一些偏移量,您可能会获得所需的功能。 如果这对您有用,我建议您创建自己的模块,提供此功能,以便学生可以专注于解决迷宫而不是Windows apis。
turtle.hideturtle()
turtle.pos()