簡體   English   中英

你能讓 Python Turtle 檢測它是否接觸到特定顏色嗎?

[英]Can you make a Python Turtle detect if it's touching a specific colour?

海龜是否有可能在不使用網格系統的情況下檢測它是否正在觸摸特定顏色(即為每個單元分配一種顏色。)我正在嘗試創建一個生物將導航並與之交互的像素化世界,取決於它所接觸的瓷磚類型,這將根據瓷磚的顏色來確定。

您可以嘗試在 Python 中復制此 Scratch 項目的最佳方法是使用 python 框架 pygame 的基於網格的系統。

這意味着您需要對背景、用戶、界面、命令、沖突進行編碼。 一個更大的壯舉,由您自己完成。

我的文件表明這將是一個很好的入門視頻系列:

設置: https://youtu.be/VO8rTszcW4s

創建游戲: https://youtu.be/3UxnelT9aCo

我希望你的努力是有成果的!

我們可以通過下降到 tkinter 級別來強制海龜執行此操作。 盡管我們認為海龜繪制的東西是死墨水(與成形的海龜或印章相反),但從 tkinter 的角度來看,它們實際上是活墨水——這就是為什么我們可以清除單個海龜的繪圖並調用undo() . 這是一個執行此操作的脆弱示例:

from turtle import Screen, Turtle
from random import random

WIDTH, HEIGHT = 800, 800
DIAMETER = 200

def chameleon(x, y):
    turtle.ondrag(None)
    overlapping = canvas.find_overlapping(x, -y, x, -y)  # adjust to tkinter coordinates

    if overlapping:
        color = canvas.itemcget(overlapping[0], "fill")

        if color:
            turtle.fillcolor(color)

    turtle.goto(x, y)
    turtle.ondrag(chameleon)

screen = Screen()
screen.setup(WIDTH, HEIGHT)
canvas = screen.getcanvas()

turtle = Turtle()
turtle.hideturtle()
turtle.speed('fastest')
turtle.penup()

for x in range(-WIDTH//2, WIDTH//2, DIAMETER):
    for y in range(-HEIGHT//2, HEIGHT//2, DIAMETER):
        turtle.goto(x + DIAMETER/2, y + DIAMETER/2)
        color = random(), random(), random()
        turtle.dot(DIAMETER - 1, color)

turtle.home()
turtle.shape('turtle')
turtle.shapesize(2)
turtle.showturtle()
turtle.ondrag(chameleon)

screen.mainloop()

當您在屏幕上拖動海龜時,它會從屏幕上繪制的內容中獲取顏色。 這不是你看到的透明烏龜,它正在閱讀墨水,當你在背景上移動時,你可以自己確認。 此代碼可能是特定於海龜實現的。

我不確定這將如何放大(或更可能縮小到像素大小的對象),但應該讓你知道如果你願意接受turtle的 tkinter 基礎,或者只是使用 tkinter 本身會發生什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM