В качестве практики и в качестве предшественника более сложного, более крупного проекта, который я имею в виду, я создал скрипт случайного блуждания с использованием модуля 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()
Кроме того, это на самом деле мое первое настоящее применение ООП, и мне было интересно, если это хороший способиспользуйте его.
Большое спасибо!