2013-12-24 13 views
1

通過使用VPython,我可以通過調用同一個類來獲得我正在處理的程序以生成多個球。我也可以在產生球時(x,y和z範圍內)出現在選定的隨機範圍內。使用VPython如何調用Class球體位置?

但是,我目前難住我如何從我的循環中調用pos/position函數 - 因爲我想讓球移動。

請在下面看到我的代碼。

如果我打電話給Ball.pos,它表示爲未定義,但是如果我通過self.position放置自己的位置,則只會生成一個球,因爲它們不是從球體細節下面引用的?從框架

from visual import * 
from random import * 
scene.title = "Multi Balls" 

wallBm = box(pos=(0,-6,0), size=(12.2,0.1,12.1), color=color.blue, opacity=0.4) 

vscale = 0.1 
deltat = 0.005 
t = 0 
scene.autoscale = False 
i = 0 

totalBalls = 10 

class Ball: 
    def __init__(self): 
     self.velocity = vector(0,5,0) 
     #vel sample ([5,10,15,20,25],3) 
     sphere (pos=(randrange (-6,6),randrange (-6,6),randrange (-6,6)), radius=0.5, color=color.cyan) 

while True: 
    rate(100) 
    if i < totalBalls: 
     Ball() 
     i = i + 1 

    t = 5 + deltat 

回答

0

嘗試繼承:

class Ball(frame): 
    def __init__(self, pos=(randrange (-6,6),randrange (-6,6),randrange (-6,6))): 
     frame.__init__(self,pos=pos) 
     self.velocity = vector(0,5,0) 
     sphere(frame=self,pos=pos,radius=0.5, color=color.cyan) 
listOfBalls=[] 
while True: 
    rate(100) 
    for i in range(totalBalls): 
     listOfBalls.append(Ball()) 

現在再試試! 您可致電listOfBalls[3].pos致電每個球的位置。我希望這有幫助!