Python で最初のプログラムを作成していますが、粒子 (2 つのガス) の混合をシミュレートする必要があります。この関数で何が間違っているのかわかりません。パーティクルが特定の領域、つまりコンテナの壁を離れないようにします。VPython を使用しています。
def poruszanie(lista,pozycja,numCell):
flaga = 0
pozycjaTmp = (pozycja[0]+choice([-1,0,1]),pozycja[1]+choice([-1,0,1]),0)
for i in range( 0, len(lista) ):
if pozycjaTmp==lista[i].pos:
flaga=1
if flaga==1:
return poruszanie(lista,(pozycja[0]+choice([-1,0,1]),pozycja[1]+choice([-1,0,1]),0),numCell)
elif pozycjaTmp[0]==0 or pozycjaTmp[0]==numCell or pozycjaTmp[0]==-numCell or pozycjaTmp[1]==numCell or pozycjaTmp[1]==-numCell:
return poruszanie(lista,(pozycja[0]+choice([-1,0,1]),pozycja[1]+choice([-1,0,1]),0),numCell)
return pozycjaTmp
poruszanie - 関数の名前
pozycja - 球の位置
0,numCell,-numCell - コンテナの境界 (0 は最初にガスを分離する中央の壁です)
これはすべて x,y 平面にあり、z は常に 0 です。ここで、この関数を使い始めます。
while 1:
rate(20)
for i in range(0,len(self.listBalls)):
self.listBalls[i].pos=poruszanie(self.listBalls,self.listBalls[i].pos,self.numCell)