簡體   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