RexDK編 part 10

RexDKで、データスリム2のアドインを作る。

開始処理と終了処理

ゲームの初期画面と終了処理を作成します。

まず、初期画面から作成します。
ゲームタイトルを表示し、開始ボタンと終了ボタンをstart_init()と言う関数名で作成します。

void start_init(void){
    DsClearScreen();  //画面と登録イベントの消去

    DsPrintfe(60,50,0,"a Cockroach Hunter");  //タイトル表示
        //スタートボタンをID 0x80で作成
    DsDialogTextButton(40,80,60,16,0x80,"Start");
        //終了ボタンをID 0x50で作成
    DsDialogTextButton(140,80,60,16,0x50,"End");
}

これをエミュレータで実行すると、「Bad address:00400000」と怒られてしまいます。
どうやら、DsClearScreen();に異常が有るようなので、DsClearScreen();の代わりに次のように記載しました。

DsEventClear();
DsDisplayBlockClear(0,0,240,120);

これを実行すると次のような画面になります。

sample screen

次に終了処理が行えるようにします。

DsAddinTerminate();を実行すればアドインを終了しますが、終了前の画面の状態等が残ったまま終了してしまいます。
そこで、DsEventClear();及びDsDisplayBlockClear(0,0,240,120);と併記しますが終了処理自体あちこちから呼び出す可能性が多いので、addin_end()と言う関数にしておきます。

void addin_end(void){
    DsEventClear();         //登録イベントの消去
    DsDisplayBlockClear(0,0,240,120);  //画面の消去
    DsAddinTerminate();     //アドインの終了
}

今回作成した関数をmain()関数から呼び出せるように、main()関数を変更します。


void main(void){
int y;

start_init();    //追加 初期画面の呼び出し

    while(1){
        DsEventMessageGet(msg);
        switch (msg.message){
//追加
        case MSG_DS_COMMAND:    //作成したボタンをタップした時の処理
            if (msg.sCode==MSG_DS_COMMAND_DOWN){
                switch (msg.bCode){
                case 0x80:      //イベントID0x80の時の処理
                    DsEventClear();
                    DsDisplayBlockClear(0,0,240,120);
                break;
                case 0x50:      //イベントID0x50の時の処理
                    addin_end();
                break;
                }
            }
        break;

        case MSG_DS_KEY_DOWN:
            switch (msg.sCode){
            case KEY_TOP_C:
                addin_end();    //追加
            break;
            case KEY_ENTER_A:
                y = (rand()%5)*20;
                Tmove(y,1);
            break;
            }
        }
    }
}

まだゲームとして成り立ちませんが、これでアドインが終了できるようになりました。

ここまでのソース

Copyright 2001-2002 Hideo Morotomi
感想、要望は、moro@deneb.freemail.ne.jp又は、掲示板へお願いします。
個人的にはMAILより掲示板に書きこんでもらえた方が嬉しいです。
当Web Site に関する補足事項