【问题标题】:Menu in Glowscript and VPythonGlowscript 和 VPython 中的菜单
【发布时间】:2019-12-25 13:49:36
【问题描述】:

为了一个学校项目,我和我的一个朋友目前正在尝试对我们的太阳系进行模拟。我们使用的平台是 Glowscript,我们正在使用 VPython。我们已经对整个太阳系进行了编程,包括它的所有行星、太阳以及它们之间的力量。

现在我们正在尝试添加一些额外功能,其中之一是用户可以在其中选择行星的菜单。在我们的代码中,选定的对象(代码中定义的行星或太阳)将被标记为“当前对象”。之后,用户可以使用滑块更改当前对象的质量。

在编程过程中出现了两个问题。第一个是我们无法将一个对象定义为当前对象,以便以后可以更改其质量。遗憾的是,我们在代码中找不到问题。

第二个问题是我们无法在 Glowscript 中为我们的模拟添加一个以上的额外内容。我们已经编写了一个滑块功能来更改模拟“速率”(速度),之后菜单和用于更改质量的滑块根本没有出现。

def M(m):
    global col, currentobject
    currentobject.visible = True
    obj = m.selected
    if obj == 'Sun':
        currentobject = sun
    elif obj == "Mercury":
        currentobject = mercury
    elif obj == "Venus": 
        currentobject = venus
    elif obj == "Earth": 
        currentobject = earth
    elif obj == "Mars": 
        currentobject = mars
    elif obj == "Jupiter": 
        currentobject = jupiter
    elif obj == "Saturn": 
        currentobject = saturn
    elif obj == "Uranus": 
        currentobject = uranus
    elif obj == "Neptune": 
        currentobject = neptune
    currentobject=m.selected
    print(m.selected,m.index)


menu(choices=['Choose an object', 'Sun', 'Mercury', 'Venus', 'Earth', 'Mars', 'Jupiter', 'Saturn', 'Uranus', 'Neptune'], bind=M)
scene.append_to_caption('\n\n')


def setmass(b):
    wt.text = '{:1.2f}'.format(b.value)
sl = slider(min=0.1, max=10, value=0.1, length = 1000, bind=setmass)  
wt = wtext(text='{:1.2f}'.format(sl.value))


#mainloop 

while (True):  


    rate(10)

    currentobject.mass=currentobject.mass*sl.value

最后,我们模拟的用户应该能够在下拉菜单中选择行星或太阳。之后,用户应该能够更改所选对象的质量(使用滑块)并查看上面模拟中的效果(其他行星的轨道会发生变化,因为它们更容易被当前对象吸引)。

错误信息:

TypeError: 无法读取未定义的属性“质量”

【问题讨论】:

    标签: menu astronomy vpython glowscript


    【解决方案1】:

    您的代码片段不够完整,无法准确了解问题所在,但我注意到对 M 的第一次调用具有 currentobject.visible = True,但 currentobject 尚不存在,因此您会收到错误消息。同样,在您的循环中,您引用 currentobject.mass,但 currentobject 尚不存在。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-23
      • 2021-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-06
      • 2023-01-23
      • 1970-01-01
      相关资源
      最近更新 更多