Программа не останавливается при нажатии кнопки - PullRequest
0 голосов
/ 07 сентября 2018

Я хочу, чтобы в состоянии остановить мое моделирование. Я точно скопировал и вставил код документации GlowScript. Но просто ничего не происходит при нажатии кнопки паузы. Единственное, что он меняет то, что написано на кнопке как текст. У меня также есть кнопка сброса, которая отлично работает. Дело в Pause / Run в начале кода. Я также предоставил другие детали кода, так как полагаю, что это связано с этими частями. Потому что я только что скопировал его из документации Glowscript (вещь Run / Pause)

from vpython import *


running = True

def Run(b):
    global running
    running = not running
    if running: b.text = "Pause"
    else: b.text = "Run"

button(text="Pause", pos=scene.title_anchor, bind=Run)

def Reset(c):
    global t, e

    t=0
    e.pos = vec(ae,0,0)
    e.velocity = vec(0,0,-25000)

button(text ="Reset", pos=scene.title_anchor, bind=Reset)


#other constants for calc. ...

framerate = 100



#sun
s = sphere(pos = vec(0,0,0), radius = s_rad1, color=color.orange, make_trail = True ) 
s.mass = 2e30   
s.velocity = vec(0,0,0)


#earth
e = sphere (pos = vec(ae, 0, 0), radius = e_rad, make_trail = True, color = color.blue)

e.mass = 5.9e24    
e.velocity = vec(0,0,-25000)#bewegt sich mit 30000 ms




dt = 50000
time = 0.1



while (True):

    rate(framerate)  


    g_force = g * s.mass * e.mass * (s.pos - e.pos).norm()  / (s.pos - e.pos).mag2

    g_forceS = -g_force

    s.velocity = s.velocity + ( g_forceS / s.mass) * dt #Richtungsänderung

    s.pos += s.velocity * dt 



    e.velocity = e.velocity + ( g_force / e.mass) * dt #Richtungsänderung


    e.pos += e.velocity * dt 

1 Ответ

0 голосов
/ 15 ноября 2018

Ваша функция Run изменяет глобальный проверяемый "бег", но ваш цикл анимации не смотрит на эту переменную. Вам нужно что-то вроде этого:

в то время как True: Скорость (частота кадров) если работает: g_force = .... .....

...