1

通过使用 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
4

1 回答 1

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())

现在再试一次!您可以通过调用来调用每个 Ball 的位置listOfBalls[3].pos。我希望这有帮助!

于 2014-03-21T20:49:24.237 回答