2013-12-24 26 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致电每个球的位置。我希望这有帮助!