Fandom

Touhou Wiki

Touhou Danmakufu: Functions and Subroutines

7,297pages on
this wiki
Add New Page
Talk0 Share

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.


Subroutines

Often-used codes can be shared as subroutine.

sub (name) {
    (statements)
}

In the following case,

sub fire {
    CreateShot01(GetX, GetY, 5, GetAngleToPlayer, RED01, 0);
}
fire;
fire;

is equivalent to:

CreateShot01(GetX, GetY, 5, GetAngleToPlayer, RED01, 0);
CreateShot01(GetX, GetY, 5, GetAngleToPlayer, RED01, 0);

Subroutines can be used not only to share codes but also to give names to processes. Both code-sharing and naming improve the maintainability of the program.


Functions

If the often-used codes require some parameters, or the calculational results need to be returned, functions are used instead of subroutines.

function (name) ( (parameter list) ) {
    (statements)
}

e.g. a mathematical function

f(x) = x2 + 2

is represented in Danmakufu as follows:

function f(x) {
    return x ^ 2 + 2;
}

where f is the function name, x is the parameter, and x ^ 2 + 2 is the function's value. return statement defines the function's value with parameter x. In this case, the value of f(2) is 22 + 2 = 6.

Functions can be used as subroutines. In fact, functions having no parameters and no return values are equivalent to subroutines as:

function fire {
    CreateShot01(GetX, GetY, 5, GetAngleToPlayer, RED01, 0);
}

However, functions are little bit slower than subroutines.

Functions are often used as parametrized subroutines. e.g.

function fire(v) {
    CreateShot01(GetX, GetY, v, GetAngleToPlayer, RED01, 0);
}

In this case,

fire(3);
fire(5);

is equivalent to:

CreateShot01(GetX, GetY, 3, GetAngleToPlayer, RED01, 0);
CreateShot01(GetX, GetY, 5, GetAngleToPlayer, RED01, 0);

The CreateShot01, GetX, GetY, and GetAngleToPlayer are functions, too. There are many pre-defined functions as them. For details, see Touhou Danmakufu: Functions.


Also on Fandom

Random Wiki