Fixed Point Maths

version 5 by Michael Callaghan

  • Home page
  • Beginning
  • Previous



  • Example: *** Ballistics - Shows the use of real numbers in ballistic calculations

        "Ballistics" by Michael Callaghan

        Include Fixed Point Maths by Michael Callaghan.

        The Firing Range is a room.

        The large gun is in the firing range. The description is "A large field artillery gun. Towards the base of the gun you find a small brass handle that seems to be turnable. By it is a note that says hit your target at a range of 1,918 metres. You have 5 projectiles to fire. When you are ready, simply fire the gun."

        The large gun has a number called angle. The angle of the large gun is 12.
        The large gun has a number called projectiles. The projectiles of the gun is 5.

        A brass handle is part of the large gun. The description is "The brass handle can be turned to adjust the angle of the gun. A pointer shows the angle that you have set. It currently points to [angle of the large gun] degrees."

        Instead of turning the handle:
            say "Try turning the handle to a number."

        Instead of turning the gun:
            say "Try turning the handle to a number."

        Understand "turn [something] to [a number]" as adjusting it to.
        Understand "turn [something] to [a number] degrees" as adjusting it to.

        Adjusting it to is an action applying to one thing and one number.

        Check adjusting it to:
            if the noun is the gun:
                say "Try turning the handle to a number." instead.

        Check adjusting it to:
            if the number understood is less than 1 or the number understood is greater than 90:
                say "That is physically impossible. The gun can be set to an angle from 1 to 90 degrees." instead.

        Carry out adjusting it to:
            now the angle of the gun is the number understood.

        Report adjusting it to:
            say "You turn the handle and set the angle of the gun to [angle of the gun] degrees."

        Understand "fire [something]" as firing. Firing is an action applying to one thing.

        Check firing:
            if the noun is not the gun:
                say "Only the gun can be fired."

        Carry out firing:
            decrease the projectiles of the gun by 1;

        Report firing:
            say "The gun recoils violently and lets out a deep throated roar as the projectile is launched.";
            say "After a few seconds, you see the projectile land at [distance as an integer] metres.";
            if the distance as an integer is 1918:
                end the story finally saying "Congratulations, you have passed your basic field artillery exam.";
            if the distance as an integer is less than 10:
                say "The projectile goes straight up and comes down destroying both you and the gun.";
                end the story finally saying "You have failed in a spectacular way.";
            if the projectiles of the gun is 0:
                say "You are out of projectiles.";
                end the story finally saying "You have failed your basic field artillery exam."

        To decide what real number is distance:
            let velocity be 200.0000;
            let gravity be 9.8100;
            let cosangle be the cosine of the angle of the gun;
            let sinangle be the sine of the angle of the gun;
            let result be velocity real times cosangle;
            let result be result real divided by gravity;
            let temp1 be 4 real times gravity;
            let temp1 be temp1 real times sinangle;
            let temp2 be velocity real times sinangle;
            let temp2 be temp2 to the power 2;
            let temp1 be temp1 real plus temp2;
            let temp1 be the real square root of temp1;
            let result be result real times temp1;
            decide on result.

        Test me with "x gun / x handle / turn handle to 45 / fire gun / turn handle to 30 / fire gun / turn handle to 36 / fire gun / turn handle to 35 / fire gun".