Coder Social home page Coder Social logo

kristopherjohnson / lunar-fortran Goto Github PK

View Code? Open in Web Editor NEW
3.0 3.0 0.0 20 KB

Port of classic Lunar Lander game to Fortran

Home Page: http://undefinedvalue.com/lunar-for-c-and-rust.html

Makefile 26.18% Fortran 73.82%
lunar-lander console-game fortran fortran95 retrogaming gfortran

lunar-fortran's Introduction

LUNAR for Fortran

This is a port of a classic text-based "lunar lander" game to Fortran.

The first time I saw a computer was when my father took me to an open-house at the IBM headquarters in Atlanta in the late 1970's, when I was around ten years old. I wasn't impressed with the big sterile glass rooms filled with big blue computers, but there was a room in the basement where a couple of bearded guys asked me to sit down at a terminal and play a game.

It was this lunar landing game. For each ten seconds of game time, it asks how much thrust you want to use, and then it tells you your new altitude, velocity, and remaining fuel. I crashed, and then I had to get up to let the next kid take a turn.

It was simple, primitive even, but I was immediately fascinated with computers. I saw that a computer would let me create little simulated universes that followed whatever rules I could imagine.

So after that I kept bugging my dad to buy me books about programming. A couple of years later, my parents bought me a computer. Thanks Mom and Dad!

I did some research, and I found the original Lunar Lander program by Jim Storer, written in the FOCAL programming language in 1969. I've rewritten it in Fortran 95 so that it can be built and run on modern systems. The program here is pretty close to what I remember. One difference is that, on crashing, that program announced "IT'S ALL OVER BUT THE SHOUTING", which confused me as a ten-year-old. I thought the shouting was for joy.

This code is based upon these sources:

If you have a UNIX-ish system with GNU Fortran installed, you should be able to build the executable and play the game by running this command:

make run

The code is intended to be compatible with any Fortran system that supports the Fortran 95 standard. I would like to know of any incompatibilities, and what is necessary to work around them.

Here is an example play session:

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=:170
     80              37   1474        3539.86     14300.0      K=:200
     90              27   5247        3140.80     12300.0      K=:200
    100              19   4537        2710.41     10300.0      K=:200
    110              12   5118        2243.83      8300.0      K=:200
    120               7   2285        1734.97      6300.0      K=:200
    130               3   1990        1176.06      4300.0      K=:200
    140               0   5040         556.96      2300.0      K=:170
    150               0   1040         -21.20       600.0      K=:0
    160               0   1087          14.80       600.0      K=:0
    170               0    606          50.80       600.0      K=:30
    180               0    436         -27.90       300.0      K=:0
    190               0    581           8.10       300.0      K=:8
    200               0    425          13.17       220.0      K=:10
    210               0    253          10.30       120.0      K=:9
    220               0     95          11.11        30.0      K=:100
FUEL OUT AT   220.30 SECS
ON THE MOON AT   226.11 SECS
IMPACT VELOCITY OF    21.35 M.P.H.
FUEL LEFT:     0.00 LBS
CONGRATULATIONS ON A POOR LANDING



TRY AGAIN?
(ANS. YES OR NO):NO
CONTROL OUT


lunar-fortran's People

Contributors

kristopherjohnson avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.