有没有办法针对用户定义的对象数量扩展此代码?

时间:2019-11-06 16:05:15

标签: python-3.x object simulation vpython

我们获得了一项作业,该作业需要我们模拟经典的鼠标追踪问题https://en.wikipedia.org/wiki/Mice_problem。我已经编写了代码来模拟3边角(即三角形)中的鼠标。我还可以轻松地手动添加另一只鼠标来模拟正方形顶点上的鼠标。这足以完成家庭作业,但是我要对此程序执行的操作是,我想创建一个n小鼠的模拟,其中用户可以自由选择任意n。

我的代码(在VPython中)

#instantiating objects

s1 = sphere(pos=vector(0,0,0), radius=0, make_trail='True', trail_color=color.red)
s2 = sphere(pos=vector(2,0,0), radius=0, make_trail='True', trail_color=color.blue)
s3 = sphere(pos=vector(1,sqrt(3),0), radius=0, make_trail='True', trail_color=color.green)

#defining constants

speed = 5
dt = 0.01

#defining driving function

def move_snail(s, dir):
    return s.pos += speed * dt * dir

#setting up animating loop

while True:
    rate(10)

    p1 = s1.pos
    p2 = s2.pos
    p3 = s3.pos

    #defining directions

    dir_1 = hat(p2-p1)
    dir_2 = hat(p3-p2)
    dir_3 = hat(p1-p3)

    #calling function and updating position

    move_snail(s1, dir_1)
    move_snail(s2, dir_2)
    move_snail(s3, dir_3)

1 个答案:

答案 0 :(得分:0)

另一个评论是,您可以要求用户输入“ n”,然后使用循环将n个球体对象添加到列表中。然后,在动画循环中,您将遍历该列表,更新n个球体对象的pos属性。