簡體   English   中英

Python —將帶龜的圖形與嵌套列表一起使用。 我該如何解決?

[英]Python — Using turtle graphics with nested lists. How do I solve this?

我有一個這樣的嵌套列表:

data_set_07 = [['A', 1, 3, 'S'], ['A', 2, 3, 'S'], ['A', 3, 1, 'S'],
               ['A', 3, 0, 'S'], ['A', 5, 2, 'S'], ['A', 5, 3, 'S'],
               ['B', 0, 0, 'S'], ['B', 0, 2, 'S'],
               ['C', 3, 2, 'S'], ['C', 4, 0, 'S'],
               ['D', 1, 0, 'S']]

'A''B''C''D'都是尺寸的引用(1x1、1x2、2x2等)。 這些數字是指圖形上特定的列和行, 'S'代表“ SOUTH”(例如,圖標應朝南)。

我使用python上的turtle圖形繪制了4個不同的圖標,我需要在這些不同的設置下繪制每個圖標(有些比其他的小,並且在不同的位置,但都特定於列表中的數字)。

我需要知道的是,如何對代碼添加data_set_07以便將我的圖標放在圖形上的正確位置,而不僅僅是默認位置?

我的與data_set_07一起使用的圖標data_set_07

def NBC(data_set):
    pu()
    color('yellow')
    begin_fill()
    setheading(183)
    pd()
    fd(150)

    circle(-40, 190)
    right(19)
    fd(165)
    end_fill()
    pu()
    left(5)
    fd(5)

    left(173)
    pd()
    color('orange')
    begin_fill()
    pd()
    fd(150)

    circle(-40, 190)
    right(19)
    fd(165)
    end_fill()
    pu()
    left(5)

    left(173)
    pd()
    color('red')
    begin_fill()
    pd()
    fd(150)

    circle(-40, 190)
    right(19)
    fd(165)
    end_fill()
    pu()
    setheading(90)
    right(170)

    left(168)
    pd()
    color('purple')
    begin_fill()
    pd()
    fd(150)

    circle(-40, 190)
    right(19)
    fd(165)
    end_fill()
    pu()

    left(179)
    pd()
    color('blue')
    begin_fill()
    pd()
    fd(150)

    circle(-40, 190)
    right(19)
    fd(165)
    end_fill()
    pu()

    left(180)
    pd()
    color('green')
    begin_fill()
    pd()
    fd(150)

    circle(-40, 190)
    right(19)
    fd(165)
    end_fill()
    pu()


NBC(data_set_07)

看起來您的圖標將始終被繪制為相同大小。 如果您希望能夠根據尺寸來改變大小(如我所言),則必須對圖標功能進行參數設置。 就像是

def NBC(height, width, x, y)

然后,您必須先添加代碼以移至(x,y)。 我已經好多年沒有看過海龜圖形了,所以我不能說確切的命令是什么。 之后,您必須按高度和寬度縮放運動。 (高度和寬度可以是默認大小的倍數,因此height = 1,width = 1表示使用默認大小繪制,height = 1,width = 2表示使用默認高度繪制,但寬度設為兩倍一樣大。)

如果您確實想像這樣更改長寬比,則可能不喜歡結果。 您還必須更改標題。 只需一點三角即可確定角度。 如果原始標題為theta,則新標題為

arctan(width*tan(theta)/height)

如果我沒有記錯的話。 您還可以通過將方向作為參數傳遞來使徽標面朝不同的方向。 如果默認方向是“ E”,那么您可以定義一個字典,例如

angle = {'E':0, 'N':90, 'W':180, 'S':270}

將所需方向作為參數phi傳遞,並向所有航向添加角度。

我可以建議您不要嘗試使所有這些工作一次完成。 首先將徽標移動到其他位置。 然后在比例不變的情況下進行縮放(寬度=高度)。 然后更改方向。 最后,如果確實需要,請嘗試更改長寬比。

暫無
暫無

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

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