第5回 値を使い回そう

今回は、変数について話そうと思います。

要旨

それではいってみましょう。

値の使い回し

前回までのプログラムでは、LoadGraphic, DrawGrahpic, DeleteGraphic の3つに "script\img\ExRumia.png" というパス(ファイルの位置)を直接指定していました。では、作っていて、ファイル名を途中で変えたくなった場合はどうすれば良いでしょうか? そうです。全部のパスをその新しいパスに変更すればいいですね。しかし、3カ所にあるものを毎回変えるのも面倒ですし、変え忘れる箇所が出てきたり、タイピングミスをして1つだけ違ったりといったミスをしてしまうかもしれません。これはどうしようもないことなのでしょうか?

実は、この問題は簡単に回避する事が出来ます。それには変数というものを使います。変数というのは、何らかの値を保存しておく容器のようなものです。つまり、変数にパスを保存しておき、LoadGraphic, DrawGrahpic, DeleteGraphic にはパスを直接渡すのではなく、そのパスの入った変数を渡すようにするのです。

では、実際にやってみましょう。

#東方弾幕風
#Title[テストスクリプト]
#Text[テストスクリプト]
#ScriptVersion[2]

script_enemy_main {
    let imgBoss = "script\img\ExRumia.png";

    @Initialize {
        SetX(GetCenterX);
        SetY(GetClipMinY + 120);
        SetLife(2000);

        LoadGraphic(imgBoss);
        SetTexture(imgBoss);
        SetGraphicRect(0, 0, 63, 63);
    }

    @MainLoop {
        SetCollisionA(GetX, GetY, 24);
        SetCollisionB(GetX, GetY, 24);

        CreateShot01(GetX, GetY, 1, 90, WHITE01, 0);
    }

    @DrawLoop {
        DrawGraphic(GetX, GetY);
    }

    @Finalize {
        DeleteGraphic(imgBoss);
    }
}

最初に強調してある部分で変数を宣言しています。

let imgBoss = "script\img\ExRumia.png";

この imgBoss というのが変数になります。変数を宣言するには、let という命令を使います。ここでは同時に変数の値をパスで初期化しています。初期化するには、変数名の後に = を書いて、その後に変数に入れておきたい値を書きます。初期化の必要の無い場合は = と値を省けます。

このように変数を宣言し、初期化すると、後で変数に保存しておいた値を使う事ができます。例えば上では LoadGraphic, DrawGraphic, DeleteGraphicimgBoss を渡していますが、imgBoss に入れておいた文字列を渡しているのと同じ事になります。しかし、パスを変更したい場合は変数を初期化する部分の1カ所のみを変更すればよいという重要な違いがあります。

変数宣言

変数の宣言は一般的に書くとこうなります。

let <変数名> [= <値>];

[ ] で囲んだ部分は、状況により省略可能であることを表しています。変数の宣言以外でもそうなのですが、基本的に文の終わりには ; を付けます

なお、変数は宣言しないと使えません。つまり、いきなり let なしに変数を使う事はできないのです。このため、変数名をスペルミスした場合は、再生の前にそのような変数は存在しないというエラーが出てくれます。エラーが出るのは重要な事で、自分がミスしたということが明確に分かります。なるべく何度も実行してようやくエラーがでるようなものや、なかなか気づかないバグが潜んでいることよりも、再生前にすぐにエラーが出てくれる方が遥かにいい事なのです

要旨

次回も変数についての話をしていきましょう。

第4回 | 第6回 | 目次へ戻る

この講座はロベールが作成しました。
inserted by FC2 system