Useful Functions

version 1 by ShadowChaser

  • Home page
  • Beginning
  • Previous
  • Next

  • Section: Usage


        key_pressed_with_question "..."

    This optionally displays a message and waits for a key press, returning the numerical key code of the key pressed.

    For example,

        if the key_pressed is 65 or the key_pressed is 127 begin;
            " 'A' pressed.";
        end if;

        while the key_pressed_with_message "Press SPACE to continue." <> 32 begin;
        end while.

    YESNO :-

        yesno_answer_with_question " ...."

    This optionally displays a message and waits for the player to press 'Y' or 'N'. The result of the answer is either "YES" or "NO".


        pause_clear " ....".

        say "[pause_clear]";
        say "[pause clear some_text]";

    This optionally displays a message and waits for the player to press a key. It then clears the screen and redraws the status line.


        say "x percentage of y";

    This calculates the percentage value of a number divided by another number. The default precision is 2 decimal points and the default suffix is "%". These can be changed by the following statements:-

        The percentage_precision is x.
        The percentage_suffix is " ... ".

        say "[8 percentage of 12]";


        Table of Strength

        Table of Dexterity
      maxpercent  rank  
      10  "completely uncoordinated"  
      25  "uncoordinated"  
      75  "coordinated"  
      100  "marksman"  

        let ranktext be EqualRankOf 5 out_of 12 from_table Table of Strength;
        say "[EqualRankOf 3 out_of 10 from_table Table of Strength]";
        say "[RangedlRankOf 3 out_of 10 from_table Table of Dexterity]";

    These functions use the values given to look up a piece of text indicating the ranking of the initial value from the max value. EqualRank applies equal weightings to each "level" within the table. PercentageRank uses a percentage lookup. The first column is the MAXIMUM percentage that the value needs to be to reach the rank.


        let num be the square_root of 64;

    This is a moderately inefficient function for calculating the square root of a value. Due to the fact that Inform7 has a very low integer precision, this function only returns the integer approximation (rounded down) of the square root, and stops working properly for numbers above +32767.