Для школьного проекта мы с другом сейчас пытаемся запрограммировать симуляцию нашей Солнечной системы. Мы используем платформу 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: невозможно прочитать свойство «масса» неопределенного