vak: (Default)
[personal profile] vak
Игру "посадка на Луну" написал в 1969 году семнадцатилетний американский школьник Джим Сторер. Изначально он назвал её Rocket, но позже игра стала известна как Lunar Landing. Написана игра была на языке Focal для компьютера PDP-8. Позже широко разошёлся вариант, переписанный на Бейсик. На БЭСМ-6 эта игра имелась в составе игровой системы Джин. Не так давно [personal profile] spamsink смог восстановить исходный бэсмовский код (landing.pas).

Игра довольно трудная. Чаще всего вы получаете результат вида:
SORRY,BUT THERE WERE NO SURVIVORS-YOU BLEW IT!
IN FACT YOU BLASTED A NEW LUNAR CRATER 267.13 FT. DEEP
Чтобы результат считался приемлемым, остаточная скорость не должна превышать 22 мили в час: "CONGRATULATIONS ON A POOR LANDING". Пришлось припомнить бэсмовский опыт и потрудиться несколько дней, чтобы снизить скорость меньше 10 mph: "GOOD LANDING-(COULD BE BETTER)". Хитрость в том, что не нужно начинать тормозить прямо сразу, иначе вам не хватит топлива. Надо первые 70 секунд просто свободно падать. Со временем мне удалось достичь 4 mph. Но судя по исходникам, можно сесть ещё более мягко, ниже 1 mph.

Пришлось сварганить серьёзный оптимизатор, методом Монте-Карло подбирающий оптимальные величины расхода топлива на каждом шаге. Вот мой рекорд: 0.17 мили в час остаточной скорости прилунения. Будем запускать версию, переписанную с Фокала на Си. Скачаем с сайта самого Джима Сторера, ныне профессора университета Brandeis в Массачусетсе:
$ wget https://www.cs.brandeis.edu/~storer/LunarLander/LunarLanderTranslations/LunarLanderJohnsonTranslation-c.txt 
$ mv LunarLanderJohnsonTranslation-c.txt rocket.c
$ cc rocket.c -o rocket
$ ./rocket
CONTROL CALLING LUNAR MODULE. MANUAL CONTROL IS NECESSARY
YOU MAY RESET FUEL RATE K EACH 10 SECS TO 0 OR ANY VALUE
BETWEEN 8 & 200 LBS/SEC. YOU'VE 16000 LBS FUEL. ESTIMATED
FREE FALL IMPACT TIME-120 SECS. CAPSULE WEIGHT-32500 LBS


FIRST RADAR CHECK COMING UP


COMMENCE LANDING PROCEDURE
TIME,SECS ALTITUDE,MILES+FEET VELOCITY,MPH FUEL,LBS FUEL RATE
0 120 0 3600.00 16000.0 K=:0
10 109 5016 3636.00 16000.0 K=:0
20 99 4224 3672.00 16000.0 K=:0
30 89 2904 3708.00 16000.0 K=:0
40 79 1056 3744.00 16000.0 K=:0
50 68 3960 3780.00 16000.0 K=:0
60 58 1056 3816.00 16000.0 K=:0
70 47 2904 3852.00 16000.0 K=:200
80 37 1930 3476.43 14000.0 K=:200
90 28 1385 3072.94 12000.0 K=:189
100 20 1515 2664.30 10110.0 K=:189
110 13 2592 2222.89 8220.0 K=:177
120 7 4892 1777.47 6450.0 K=:183
130 3 3573 1274.99 4620.0 K=:198
140 0 5050 673.10 2640.0 K=:198
150 0 9 1.49 660.0 K=:10
ON THE MOON AT 157.20 SECS
IMPACT VELOCITY OF 0.17 M.P.H.
FUEL LEFT: 588.05 LBS
PERFECT LANDING !-(LUCKY)
Исходный текст программы на Фокале лежит здесь: LunarLanderListing.jpg

В игру можно играть онлайн на сайте: lunar69.uber.space/lunar.html
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org