MISSION CONTROL (Ten Space Probes)
Posted: Fri Jan 07, 2005 11:28 pm
Just for fun, this program displays the progress of ten space probes launched to the moon, the planets, and beyond. The progress bar is green while accelerating and turns red when decelerating.
Okay, so what if we don't have space craft capable of a constant 1 Gee acceleration for days, weeks, and months on end. What if we don't have "dylithium crystals" which enable us to go faster than Warp 2? Things always change! LOL!
Okay, so what if we don't have space craft capable of a constant 1 Gee acceleration for days, weeks, and months on end. What if we don't have "dylithium crystals" which enable us to go faster than Warp 2? Things always change! LOL!
Code: Select all
' * * * * SPACE PROBES * * * *
'Written by Welo, 010705
'TIMER value updates display at one second intervals (real time).
'Decrease timer at end of program for faster display.
nomainwin
WindowWidth = 800
WindowHeight = 695
UpperLeftX=int((DisplayWidth-WindowWidth)/2)
UpperLeftY=int((DisplayHeight-WindowHeight)/2)
statictext #main.statictext1, "The Space Probes", 325, 5, 225, 30
statictext #main.statictext2, "Destination", 15, 35, 96, 30
statictext #main.statictext3, "% Mission Complete", 215, 35, 185, 30
statictext #main.statictext4, "Current Velocity", 415, 35, 150, 30
statictext #main.statictext5, "Time to Destination", 615, 35, 175, 30
statictext #main.statictext6, "Earth's Moon", 15, 65, 150, 30
statictext #main.statictext7, "", 215, 65, 150, 30
statictext #main.statictext8, "", 415, 65, 150, 30
statictext #main.statictext9, "", 615, 65, 150, 30
graphicbox #main.g1, 15, 95, 760, 10
statictext #main.statictext10, "Mercury", 15, 116, 150, 30
statictext #main.statictext11, "days", 215, 116, 150, 30
statictext #main.statictext12, "vel", 415, 116, 150, 30
statictext #main.statictext13, "toa", 615, 116, 150, 30
graphicbox #main.g2, 15, 146, 760, 10
statictext #main.statictext14, "Venus", 15, 168,150, 30
statictext #main.statictext15, "days", 215, 168, 150, 30
statictext #main.statictext16, "vel", 415, 168, 150, 30
statictext #main.statictext17, "toa", 615, 168, 150, 30
graphicbox #main.g3, 15, 198, 760, 10
statictext #main.statictext18, "Mars", 15, 219, 150, 30
statictext #main.statictext19, "days", 215, 219, 150, 30
statictext #main.statictext20, "vel", 415, 219, 150, 30
statictext #main.statictext21, "toa", 615, 219, 150, 30
graphicbox #main.g4, 15, 249, 760, 10
statictext #main.statictext22, "Jupiter", 15, 271, 150, 30
statictext #main.statictext23, "days", 215, 271, 150, 30
statictext #main.statictext24, "vel", 415, 271, 150, 30
statictext #main.statictext25, "toa", 615, 271, 150, 30
graphicbox #main.g5, 15, 301, 760, 10
statictext #main.statictext26, "Saturn", 15, 322, 150, 30
statictext #main.statictext27, "days", 215, 322, 150, 30
statictext #main.statictext28, "vel", 415, 322, 150, 30
statictext #main.statictext29, "toa", 615, 322, 150, 30
graphicbox #main.g6, 15, 352, 760, 10
statictext #main.statictext30, "Uranus", 15, 373, 150, 30
statictext #main.statictext31, "days", 215, 373, 150, 30
statictext #main.statictext32, "vel", 415, 373, 150, 30
statictext #main.statictext33, "toa", 615, 373, 150, 30
graphicbox #main.g7, 15, 403, 760, 10
statictext #main.statictext34, "Neptune", 15, 425, 150, 30
statictext #main.statictext35, "days", 215, 425, 150, 30
statictext #main.statictext36, "vel", 415, 425, 150, 30
statictext #main.statictext37, "toa", 615, 425, 150, 30
graphicbox #main.g8, 15, 455, 760, 10
statictext #main.statictext38, "Pluto", 15, 476, 150, 30
statictext #main.statictext39, "days", 215, 476, 150, 30
statictext #main.statictext40, "vel", 415, 476, 150, 30
statictext #main.statictext41, "toa", 615, 476, 150, 30
graphicbox #main.g9, 15, 506, 760, 10
statictext #main.statictext42, "Proxima Centauri", 15, 528, 150, 30
statictext #main.statictext43, "days", 215, 528, 150, 30
statictext #main.statictext44, "vel", 415, 528, 150, 30
statictext #main.statictext45, "toa", 615, 528, 175, 30
graphicbox #main.g10, 15, 558, 760, 10
statictext #main.statictext46, summary$, 15, 585, 700, 30
button #main.button1, "Launch", [start], UL, 275, 625, 90, 30
button #main.button2, "QUIT", [quit], UL, 450, 625, 90, 30
open "Mission to Space" for window as #main
print #main, "trapclose [quit]"
print #main, "font arial 0 20"
wait
[start]
'Constants
D1=235000 'Miles to Moon
D2=57000000 'Miles to Mercury
D3=26000000 'Miles to Venus
D4=35000000 'Miles to Mars
D5=370000000 'Miles to Jupiter
D6=744000000 'Miles to Saturn
D7=1607000000 'Miles to Uranus
D8=2680000000 'Miles to Neptune
D9=2067000000 'Miles to Pluto
D10=(4.2*(5.87812*10^12)) 'Miles to Proxima Centauri
a=32.2 'Accelleration at 32.2 Feet/Per Second
launchDate$=DATE$()
launchTime$=TIME$()
[update]
TIMER 0
t=t+1 'Seconds since launch
v=(a*t) 'Current velocity in FPS
'Moon Mission
msn1Dist=D1/2
msn1T0=SQR((msn1Dist*5280)/(a/2)) 'Time for first half of trip
msn1T0=msn1T0*2 'Time for complete trip
'Do calculations for display
IF (complmsn1)>1 THEN [moonDone] 'If mission complete, goto next mission
IF (complmsn1)<.5 THEN
msn1V=v 'Current velocity of moon probe in FPS
msn1Color$=" green"
ELSE
msn1dec=msndec+1 'Begin deceleration counter
vdecel1=a*msn1dec
msn1V=(msn1V-vdecel1) 'Deceleration velocity in FPS
msn1Color$=" red"
END IF
ETA1=msn1T0-(msn1T0*complmsn1)
complmsn1=(t/msn1T0) 'Percentage of mission complete
IF (complmsn1)>1 THEN msn1V=0: ETA1=0
print #main.statictext7, INT(t/(msn1T0)*100)
print #main.statictext8, INT(msn1V*.681818); " MPH"
print #main.statictext9, INT(ETA1/60); " MIN"
print #main.g1, "discard"
print #main.g1, "cls"
print #main.g1, "locate 0 0"
print #main.g1, "backcolor "; msn1Color$
print #main.g1, "down"
print #main.g1, "boxfilled "; INT((t/msn1T0)*760); " 10"
[moonDone]
'Mercury Mission
msn2Dist=D2/2
msn2T0=SQR((msn2Dist*5280)/(a/2)) 'Time for first half of trip
msn2T0=msn2T0*2 'Time for complete trip
'Do calculations for display
IF (complmsn2)>1 THEN [mercDone] 'If mission complete, goto next mission
IF (complmsn2)<.5 THEN
msn2V=v 'Current velocity of Mercury probe in FPS
msn2Color$=" green"
ELSE
msn2dec=msndec2+1 'Begin deceleration counter
vdecel2=a*msn2dec
msn2V=(msn2V-vdecel2) 'Deceleration velocity in FPS
msn2Color$=" red"
END IF
complmsn2=(t/msn2T0) 'Percentage of mission complete
ETA2=msn2T0-(msn2T0*complmsn2)
IF (complmsn2)>1 THEN msn2V=0: ETA2=0
print #main.statictext11, INT(t/(msn2T0)*100)
print #main.statictext12, INT(msn2V*.681818); " MPH"
print #main.statictext13, INT(ETA2/3600); " Hrs"
print #main.g2, "discard"
print #main.g2, "cls"
print #main.g2, "locate 0 0"
print #main.g2, "backcolor "; msn2Color$
print #main.g2, "down"
print #main.g2, "boxfilled "; INT((t/msn2T0)*760); " 10"
[mercDone]
'Venus Mission
msn3Dist=D3/2
msn3T0=SQR((msn3Dist*5280)/(a/2)) 'Time for first half of trip
msn3T0=msn3T0*2 'Time for complete trip
'Do calculations for display
IF (complmsn3)>1 THEN [venuDone] 'If mission complete, goto next mission
IF (complmsn3)<.5 THEN
msn3V=v 'Current velocity of Venus probe in FPS
msn3Color$=" green"
ELSE
msn3dec=msndec3+1 'Begin deceleration counter
vdecel3=a*msn3dec
msn3V=(msn3V-vdecel3) 'Deceleration velocity in FPS
msn3Color$=" red"
END IF
complmsn3=(t/msn3T0) 'Percentage of mission complete
ETA3=msn3T0-(msn3T0*complmsn3)
IF (complmsn3)>1 THEN msn3V=0: ETA3=0
print #main.statictext15, INT(t/(msn3T0)*100)
print #main.statictext16, INT(msn3V*.681818); " MPH"
print #main.statictext17, INT(ETA3/3600); " Hrs"
print #main.g3, "discard"
print #main.g3, "cls"
print #main.g3, "locate 0 0"
print #main.g3, "backcolor "; msn3Color$
print #main.g3, "down"
print #main.g3, "boxfilled "; INT((t/msn3T0)*760); " 10"
[venuDone]
'Mars Mission
msn4Dist=D4/2
msn4T0=SQR((msn4Dist*5280)/(a/2)) 'Time for first half of trip
msn4T0=msn4T0*2 'Time for complete trip
'Do calculations for display
IF (complmsn4)>1 THEN [marsDone] 'If mission complete, goto next mission
IF (complmsn4)<.5 THEN
msn4V=v 'Current velocity of Mars probe in FPS
msn4Color$=" green"
ELSE
msn4dec=msndec4+1 'Begin deceleration counter
vdecel4=a*msn4dec
msn4V=(msn4V-vdecel4) 'Deceleration velocity in FPS
msn4Color$=" red"
END IF
complmsn4=(t/msn4T0) 'Percentage of mission complete
ETA4=msn4T0-(msn4T0*complmsn4)
IF (complmsn4)>1 THEN msn4V=0: ETA4=0
print #main.statictext19, INT(t/(msn4T0)*100)
print #main.statictext20, INT(msn4V*.681818); " MPH"
print #main.statictext21, INT(ETA4/3600); " Hrs"
print #main.g4, "discard"
print #main.g4, "cls"
print #main.g4, "locate 0 0"
print #main.g4, "backcolor "; msn4Color$
print #main.g4, "down"
print #main.g4, "boxfilled "; INT((t/msn4T0)*760); " 10"
[marsDone]
'Jupiter Mission
msn5Dist=D5/2
msn5T0=SQR((msn5Dist*5280)/(a/2)) 'Time for first half of trip
msn5T0=msn5T0*2 'Time for complete trip
'Do calculations for display
IF (complmsn5)>1 THEN [jupiDone] 'If mission complete, goto next mission
IF (complmsn5)<.5 THEN
msn5V=v 'Current velocity of Jupiter probe in FPS
msn5Color$=" green"
ELSE
msn5dec=msndec5+1 'Begin deceleration counter
vdecel5=a*msn5dec
msn5V=(msn5V-vdecel5) 'Deceleration velocity in FPS
msn5Color$=" red"
END IF
complmsn5=(t/msn5T0) 'Percentage of mission complete
ETA5=msn5T0-(msn5T0*complmsn5)
IF (complmsn5)>1 THEN msn5V=0: ETA5=0
print #main.statictext23, INT(t/(msn5T0)*100)
print #main.statictext24, INT(msn5V*.681818); " MPH"
print #main.statictext25, INT(ETA5/3600); " Hrs"
print #main.g5, "discard"
print #main.g5, "cls"
print #main.g5, "locate 0 0"
print #main.g5, "backcolor "; msn5Color$
print #main.g5, "down"
print #main.g5, "boxfilled "; INT((t/msn5T0)*760); " 10"
[jupiDone]
'Saturn Mission
msn6Dist=D6/2
msn6T0=SQR((msn6Dist*5280)/(a/2)) 'Time for first half of trip
msn6T0=msn6T0*2 'Time for complete trip
'Do calculations for display
IF (complmsn6)>1 THEN [satuDone] 'If mission complete, goto next mission
IF (complmsn6)<.5 THEN
msn6V=v 'Current velocity of Saturn probe in FPS
msn6Color$=" green"
ELSE
msn6dec=msndec6+1 'Begin deceleration counter
vdecel6=a*msn6dec
msn6V=(msn6V-vdecel6) 'Deceleration velocity in FPS
msn6Color$=" red"
END IF
complmsn6=(t/msn6T0) 'Percentage of mission complete
ETA6=msn6T0-(msn6T0*complmsn6)
IF (complmsn6)>1 THEN msn6V=0: ETA6=0
print #main.statictext27, INT(t/(msn6T0)*100)
print #main.statictext28, INT(msn6V*.681818); " MPH"
print #main.statictext29, INT(ETA6/3600); " Hrs"
print #main.g6, "discard"
print #main.g6, "cls"
print #main.g6, "locate 0 0"
print #main.g6, "backcolor "; msn6Color$
print #main.g6, "down"
print #main.g6, "boxfilled "; INT((t/msn6T0)*760); " 10"
[satuDone]
'Uranus Mission
msn7Dist=D7/2
msn7T0=SQR((msn7Dist*5280)/(a/2)) 'Time for first half of trip
msn7T0=msn7T0*2 'Time for complete trip
'Do calculations for display
IF (complmsn7)>1 THEN [uranDone] 'If mission complete, goto next mission
IF (complmsn7)<.5 THEN
msn7V=v 'Current velocity of Uranus probe in FPS
msn7Color$=" green"
ELSE
msn7dec=msndec7+1 'Begin deceleration counter
vdecel7=a*msn7dec
msn7V=(msn7V-vdecel7) 'Deceleration velocity in FPS
msn7Color$=" red"
END IF
complmsn7=(t/msn7T0) 'Percentage of mission complete
ETA7=msn7T0-(msn7T0*complmsn7)
IF (complmsn7)>1 THEN msn7V=0: ETA7=0
print #main.statictext31, INT(t/(msn7T0)*100)
print #main.statictext32, INT(msn7V*.681818); " MPH"
print #main.statictext33, INT(ETA7/3600); " Hrs"
print #main.g7, "discard"
print #main.g7, "cls"
print #main.g7, "locate 0 0"
print #main.g7, "backcolor "; msn7Color$
print #main.g7, "down"
print #main.g7, "boxfilled "; INT((t/msn7T0)*760); " 10"
[uranDone]
'Neptune Mission
msn8Dist=D8/2
msn8T0=SQR((msn8Dist*5280)/(a/2)) 'Time for first half of trip
msn8T0=msn8T0*2 'Time for complete trip
'Do calculations for display
IF (complmsn8)>1 THEN [neptDone] 'If mission complete, goto next mission
IF (complmsn8)<.5 THEN
msn8V=v 'Current velocity of Neptune probe in FPS
msn8Color$=" green"
ELSE
msn8dec=msndec8+1 'Begin deceleration counter
vdecel8=a*msn8dec
msn8V=(msn8V-vdecel8) 'Deceleration velocity in FPS
msn8Color$=" red"
END IF
complmsn8=(t/msn8T0) 'Percentage of mission complete
ETA8=msn8T0-(msn8T0*complmsn8)
IF (complmsn8)>1 THEN msn8V=0: ETA8=0
print #main.statictext35, INT(t/(msn8T0)*100)
print #main.statictext36, INT(msn8V*.681818); " MPH"
print #main.statictext37, INT(ETA8/3600); " Hrs"
print #main.g8, "discard"
print #main.g8, "cls"
print #main.g8, "locate 0 0"
print #main.g8, "backcolor "; msn8Color$
print #main.g8, "down"
print #main.g8, "boxfilled "; INT((t/msn8T0)*760); " 10"
[neptDone]
'Pluto Mission
msn9Dist=D9/2
msn9T0=SQR((msn9Dist*5280)/(a/2)) 'Time for first half of trip
msn9T0=msn9T0*2 'Time for complete trip
'Do calculations for display
IF (complmsn9)>1 THEN [plutDone] 'If mission complete, goto next mission
IF (complmsn9)<.5 THEN
msn9V=v 'Current velocity of Pluto probe in FPS
msn9Color$=" green"
ELSE
msn9dec=msndec9+1 'Begin deceleration counter
vdecel9=a*msn9dec
msn9V=(msn9V-vdecel9) 'Deceleration velocity in FPS
msn9Color$=" red"
END IF
complmsn9=(t/msn9T0) 'Percentage of mission complete
ETA9=msn9T0-(msn9T0*complmsn9)
IF (complmsn9)>1 THEN msn9V=0: ETA9=0
print #main.statictext39, INT(t/(msn9T0)*100)
print #main.statictext40, INT(msn9V*.681818); " MPH"
print #main.statictext41, INT(ETA9/3600); " Hrs"
print #main.g9, "discard"
print #main.g9, "cls"
print #main.g9, "locate 0 0"
print #main.g9, "backcolor "; msn9Color$
print #main.g9, "down"
print #main.g9, "boxfilled "; INT((t/msn9T0)*760); " 10"
[plutDone]
'Proxima Centauri Mission
msn10Dist=D10/2
msn10T0=SQR((msn10Dist*5280)/(a/2)) 'Time for first half of trip
msn10T0=msn10T0*2 'Time for complete trip
'Do calculations for display
IF (complmsn10)>1 THEN [proxDone] 'If mission complete, goto next mission
IF (complmsn10)<.5 THEN
msn10V=v 'Current velocity of Proxima probe in FPS
msn10Color$=" green"
ELSE
msn10dec=msndec10+1 'Begin deceleration counter
vdecel10=a*msn10dec
msn10V=(msn10V-vdecel10) 'Deceleration velocity in FPS
msn10Color$=" red"
END IF
complmsn10=(t/msn10T0) 'Percentage of mission complete
ETA10=msn10T0-(msn10T0*complmsn10)
IF (complmsn10)>1 THEN msn10V=0: ETA10=0
print #main.statictext43, INT(t/(msn10T0)*100)
print #main.statictext44, INT(msn10V*.681818); " MPH"
print #main.statictext45, INT(ETA10/3600); " Hrs"
print #main.g10, "discard"
print #main.g10, "cls"
print #main.g10, "locate 0 0"
print #main.g10, "backcolor "; msn10Color$
print #main.g10, "down"
print #main.g10, "boxfilled "; INT((t/msn10T0)*760); " 10"
[proxDone]
summary$="It has been ";INT(t/60); " minutes since the probes were launched on "; _
launchDate$; " at "; launchTime$;"."
print #main.statictext46, summary$
TIMER 1000, [update]
wait
[quit]
close #main
end