通过使用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
答案 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
致电每个球的位置。我希望这有帮助!