Difficult-Rocket/superman.py

60 lines
1.7 KiB
Python
Raw Normal View History

2021-02-20 00:17:50 +08:00
from decimal import Decimal as De
2021-02-20 00:30:25 +08:00
a = False
if a:
tick_time, velocity, height = De('0'), De('0'), De('0')
m = De('4610025')
gravity = De('9.798')
R = De('637100')
n = De('0.5943466')
H = De('70000')
F = De('208201000')
else:
tick_time, velocity, height = 0, 0, 0
m = 4610025
gravity = 9.798
R = 637100
n = 0.5943466
H = 70000
F = 208201000
2021-02-20 00:17:50 +08:00
TPS = 20
MSPT = 1 / TPS
while True: # 主tick循环
# 基础加速度运算
2021-02-20 00:30:25 +08:00
add_speed = (F / m) - ((gravity * (R ** 2)) / ((R + height) ** 2))
2021-02-20 00:17:50 +08:00
# 出大气层判定
if height < 70000: # 没出大气 加速度需要减去大气阻力
add_speed -= (n * (velocity ** 2) * (10 * (-6 * height) / H)) / m
2021-02-20 00:30:25 +08:00
height += (MSPT * velocity) # 高度 加 速度除以TPStick per second每tick加速
velocity += (add_speed * MSPT) # 速度 加 加速度除以TPS
2021-02-20 00:17:50 +08:00
if tick_time < 192: # 一些我也不知道是什么意思的tick判定
2021-02-20 00:30:25 +08:00
m -= (F * MSPT) / 3399.2 # 3399.2是个啥?
2021-02-20 00:17:50 +08:00
elif tick_time < 240:
m -= 129 * MSPT # ??? 129?
else:
m -= 4 * MSPT # 4?
# tick 加时间
tick_time += MSPT
if tick_time < 48: # 如果时间没到48秒
continue
elif tick_time == 48: # 如果时间到了48秒
m = 1243700
F = 44189600
elif tick_time == 96:
m = 193125
F = 8498000
elif tick_time == 144:
m = 40875
F = 1699600
elif tick_time == 192:
m = 10225
F = 446145
elif tick_time == 240:
m = 2308
F = 21245
elif tick_time >= 567:
tick_time += ((12308300 - height) / velocity)
break
2021-02-20 00:30:25 +08:00
print('t: %s' % tick_time)