1

VPython を使用することで、現在取り組んでいるプログラムで同じクラスを呼び出して複数のボールを生成することができます。また、ボールが生成されたときに、選択したランダムな範囲内 (x、y、z 全体) にボールを表示させることもできます。

ただし、現在、ボールを動かしたいので、ループ内から pos / position 関数を呼び出す方法に困惑しています。

以下のこれまでのコードを参照してください。

Ball.pos を呼び出すと未定義と表示されますが、self.position を介してポジショニングを配置すると、球の詳細の下から参照されていないため、ボールが 1 つだけ生成されますか?

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

今すぐ再試行してください!を呼び出すことで、各ボールの位置を呼び出すことができますlistOfBalls[3].pos。これが役立つことを願っています!

于 2014-03-21T20:49:24.237 に答える