0
作爲練習,作爲一個更復雜,更大的項目的先驅,我記住,我已經使用Turtle模塊創建了一個隨機行走腳本。我意識到有更簡單的方法來做隨機遊走而無需找到相鄰的座標,但據我所知,這對於較大的實現是必要的。隨機行走問題(逃逸遞歸)
我遇到的問題是,當python發現它已經訪問了getnext()
函數中的每個相鄰單元時,它正在達到其最大遞歸深度。我不確定我會如何逃脫那個循環,並且如果發生這種情況,將繼續照常進行。
import turtle
import random
class cell(object):
def __init__(self, pos, visited = False):
self.xCoord = pos[0]
self.yCoord = pos[1]
self.visited = visited
self.neigh = []
self.neighbors = self.getneighbors()
def getneighbors(self):
for j in (-1, 0, 1):
for i in (-1, 0, 1):
self.neigh.append((self.xCoord+i, self.yCoord+j))
def getnext():
nextindex = random.randint(0, len(c.neigh)-1)
nextcoordt = c.neigh[nextindex]
nextcoord = list(c.neigh[nextindex])
if nextcoordt in coords:
getnext()
else:
turtle.goto(nextcoord[0], nextcoord[1])
coords = {}
turtle.setup(width =200, height = 200, startx = 0, starty = 0)
turtle.trace = False
for i in range(1000):
c = cell(list(turtle.pos()))
coords[turtle.pos()] = (c)
getnext()
此外,這實際上是我的第一個真正的應用程序的OOP,我想知道這是否是一個很好的方式來使用它。
非常感謝!
謝謝您的回答。我使用單元類的理由是,我正在嘗試製作一個基本的繪圖機器人,它會在圖像文件中追蹤一條可能彎曲的路徑,該路徑沒有設定的寬度。例如在白色背景上的填充黑色圓圈。我的意圖是獲取每個當前座標相鄰者的顏色值,並根據顏色移動到給定座標。因此,我認爲可以很容易地創建一個具有顏色屬性的類,當然我還沒有添加它......我的方法是否遠程正確/可行?哈哈 – danem 2011-05-01 03:23:50
這聽起來有點像[區域種植](https://secure.wikimedia.org/wikipedia/en/wiki/Region_growing),你可以在圖像編輯軟件中找到它。您選擇一個初始種子像素,然後通過選擇與您的種子顏色相同或相似的相鄰像素(在某個閾值內)來增大選擇範圍。這通常是通過掃描所有相鄰的像素來完成的,但我沒有看到爲什麼你無法將顏色的權重合併到隨機遊走中。 – samplebias 2011-05-01 03:33:31
當你說「但我看不出爲什麼你不能在你的隨機遊走中加入一些顏色的權重」時,你的意思是我寫的還是你的版本?我打算最終這樣做,但我希望首先獲得基本的功能。我有困難抓住的概念是,如果我確實使用OOP,並且我有一個具有顏色屬性的類,那麼這意味着在每一步我需要聲明5(或9,如果我包括對角線)對象?對於我認爲可以通過程序完成的數據結構,我還不夠精通。謝謝您的幫助。 – danem 2011-05-01 03:46:58