繁体   English   中英

可以蟒蛇龟样本背景颜色?

[英]can a python turtle sample background colour?

我想用python的海龟来有效地模拟乐高机器人。 乐高机器人能够对机器人定位的颜色进行采样。 考虑到这一点,我想创建一个背景迷宫,并让机器人通过迷宫找到它的方式。 我希望与10年级的编程学生一起使用。

到目前为止,我可以使用tkinter创建一个简单的画布,并在该画布上使用彩色矩形。 我可以将乌龟放在画布上并让它们共存。 乌龟可以放在彩色矩形上。

现在我只需要能够以某种方式对颜色进行采样。 这可以通过获取乌龟的位置然后对该坐标进行采样来完成。 但我在这一点上陷入困​​境。

到目前为止,这是我的代码:

from tkinter import Tk, Canvas, Frame, BOTH
import turtle

top = Tk()
C = Canvas(top, height=500, width=600)

Doug = turtle.RawTurtle(C)

rectangle = C.create_rectangle(30, 10, 120, 80, outline="#fb0", fill="#fb0")

Doug.fd(50)
Doug.rt(90)
Doug.fd(50)

C.pack(fill=BOTH, expand=1)
top.mainloop()

我注意到,当我运行代码时,乌龟的“踪迹”位于矩形后面,表明存在分层问题。

根据文档中关于乌龟的说法,它没有任何功能来获取当前位置的颜色。 我的方法是使用二进制映射作为步行指示器,但这可能太静态,无法模拟乐高机器人环境。

如果你在Windows上,你可以使用win32gui库,它将为你提供屏幕上一个像素的像素颜色是否可以用它的X和Y坐标获得屏幕上特定像素的颜色? ) 。 将它与turtle.hideturtle()turtle.pos()结合使用,并为父窗口添加一些偏移量,您可能会获得所需的功能。 如果这对您有用,我建议您创建自己的模块,提供此功能,以便学生可以专注于解决迷宫而不是Windows apis。

您可以向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本身,而不是它的实例)。 我在上面的代码中单独留下了它,因此您可以尝试对代码进行最少的更改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM