2つのパラメータ(SXとSZ)を持つ長方形と呼ばれるクラスがあります。最初の長方形を2つの部分に分割し、幅の広い次元のランダムな場所に線を配置する関数を実行する必要があります。次に、これら2つの新しい長方形を2つに分割し、次に4つに分割します。単純なツリー構造を使用します。このような関数:
def devide(self):
if (self.SX>self.SZ): #check which dimension is bigger
temp=randint (int(self.SX/4), int(self.SX*3/4)) #generate random from x/4,3x/4
left=rectangle(temp, self.SZ) #create nodes
right=rectangle(self.SX-temp, self.SZ)
self.addChild(left)
self.addChild(right)
else:
temp=randint (int(self.SZ/4), int(self.SZ*3/4))
up=rectangle(self.SX, temp)
down=rectangle(self.SX, self.SZ-temp)
self.addChild(up)
self.addChild(down)
for c in self.getChilds():
while (c.level()<3): ####why doesn't it work?:(
c.devide()
そして、関数level()
—ルートと実際のノードの間にあるレベルの値を返す必要があります(ただし、返しません)。
def level(self):
root=self
a=0
while root.isRoot()==False:
a+=1
root=root.getParent()
return a
私にとって重要なことは次のとおりです。
それらの分割を制限する方法(たとえば、1 + 2 + 4 + 8ノードのみを持つ)?つまり、Pythonには静的変数がなく、関数
level()
が正しく機能しません。最年少の子供たちにアクセスする方法(たとえば、子供たちを配列する)
私はプログラミング、特にPythonの初心者です。誰か助けてくれませんか?