Фантастический сюжет и описание игры по программе «Маскон» — всё тот же ТМ-1985
.
' Маскон
' Публикация: ТМ-1985 N9
' Версия для ПМК (c) Михаил Пухов и Сергей Волков
' Маскон v1o
' Публикация: LJR, 25 мая 2006
' Точный перевод на QBasic (c) Илья Васильев
' Распространяется под GPL v2 или старше
CLS
PRINT " +++ Маскон +++"
PRINT
' Блок ввода исходных данных
PI# = 3.1415926#
G = 1.62: M = 2250: C = 3660: R = 1738000: RR = R
V = 0: U = 0: MM = 3500
' Данные "Маскона"
D = 50000: Q = .02: X = -400000
VK = SQR(R * G)
H = RR - R
DO
' Блок проверки: положительность высоты
IF H < 0 THEN
DO
' Полноценный посадочный блок из "Вершины":
' в "Масконе" использовался упрощённый посадочный блок T=-H/U
T = ABS(T) / 2 * SGN(H)
GOSUB P
LOOP WHILE ABS(H) < .001
H = 0
END IF
' Рычаги управления
' Расход топлива при манёвре не должен превышать 5% от полной массы корабля
' (для лунолётов класса "Кон-Тики" это составляет 100-200 кг, в зависимости
' от наличного запаса топлива).
' Не рекомендуется также задавать время манёвра больше 100 с. Последнее
' ограничение снимается лишь в свободном полёте, после выхода на орбиту;
' но и в этом случае следует анализировать ситуацию хотя бы каждые 1000 с.
DO
PRINT "Расстояние до центра:"; RR; "м",
PRINT "Первая космическая:"; VK; "м/с"
PRINT "Вертикальная скорость:"; U; "м/с",
PRINT "Горизонтальная скорость:"; V; "м/с"
PRINT "Запас топлива:"; MM; "кг", "Реактивное ускорение:"; A; "м/с^2"
PRINT "Высота:"; H; "м",
PRINT "Расстояние до маскона:"; X; "м"
INPUT "угол, градусы; расход топлива, кг; время, с"; AL, DM, T
AL = AL * PI# / 180
' Блок проверки: перерасход топлива
LOOP WHILE DM > MM
' Блок вычисления: реактивное ускорение
MM = MM - DM
A = DM * C / ((M + MM) * T)
GOSUB P
LOOP 'Главный игровой цикл
P:
' "Припев"
' Определяет значения текущих переменных.
' В программе "Маскон" гравитационное, кориолисово и центробежное
' ускорения не зависят от высоты.
' тяга, кориолисова сила
T1 = V + (A * SIN(AL) - U * V / R - COS(ATN(X / D)) ^ 3 * Q * X / D) * T
X = X + (V + T1) * T / 2
V = T1
' тяга, тяготение, центробежная сила
T1 = U + (A * COS(AL) - G + V * V / R - COS(ATN(X / D)) ^ 3 * Q) * T
RR = RR + (U + T1) * T / 2
U = T1
H = RR - R
RETURN