使用VPython如何调用Class球位置?

时间:2013-12-24 00:01:42

标签: python vpython

通过使用VPython,我可以通过调用同一个类来获取我正在处理的程序来生成多个球。我也可以在生成它们时(在x,y和z之间)使球出现在选定的随机范围内。

然而,我目前很难理解如何从循环中调用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

1 个答案:

答案 0 :(得分: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致电每个球的位置。我希望这有帮助!