RexDK編 part 7

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

画像を動かす Part2

画像表示プログラムを改造します。

cc.batの作成

その前に、現状のmake.batではエラーが出た時にエラーメッセージが読めなくなってしまうので、次のようなバッチファイルをcc.batとして作成しました。

@echo off

rem written by Daniel

set prog=taro
set emu=c:\rexdk\Emulator

set ZCCCFG=c:\rexdk\lib\config\
set PATH=c:\rexdk\bin
SET Z80_OZFILES=c:\rexdk\lib\
SET Z80_STDLIB=c:\rexdk\lib\clib\rex_clib.lib

set temp=c:\rexdk\Projects\tmp

zcc +rex -create-app -o%prog%.bin %prog%.c

これは、単にコンパイルのみを行うバッチファイルです。
makeでエラーが出たら、ccでエラーコードを確認しましょう。

プログラムの改造

前回までのプログラムでは、ゴキブリが右端に全身で現れ、左端で止まってしまいます。

これではゲームにとって都合が悪いので、頭から出て左端に完全に隠れるように変更します。

main(){
MSG msg;

int Char_X=240,Char_X_old,x;
int Char_Y=20,Char_Y_old,y;
int i,f,flag;
char str[10];

    DsDisplayBlockClear(0,0,240,120);

    f=1;
    do{

/*キャラクターの動きをトレースするために入れてあるます
実行キーを押すと1ループづつ動くようにして有ります。*/
    flag=1;
    while(flag){
        DsEventMessageGet(msg);
        switch (msg.message)
        {
        case MSG_DS_KEY_DOWN:
            if(msg.sCode==KEY_ENTER_A) {flag=0;}
            break;
        }
    }


    if (Char_X<0){
    DsDisplayBlockClear(0,Char_Y,CharWidth*5,CharHeight);
    }
    else{
    DsDisplayBlockClear(Char_X_old,Char_Y,CharWidth*5,CharHeight);
    }
        for(i=0;i<5;i++){
        x=Char_X+i*CharWidth;
/*xの値が画面内に収まっている時だけ描画するようにしました*/
        if ((x>=0)&&(x<232)){//この行間違いあり
        DsDisplayBitmapDraw( x, Char_Y, taro_bmps[i] , 0);
        }
        }
    Char_X_old = Char_X;
    Char_X -=CharWidth;
/*キャラクターが完全に画面の外に出たらループを終了するようにしています*/
    if(Char_X<(-5*CharWidth)) f=0;

    }while(f);

/*描画ルーチンを抜け出した事を知るために入れてあるます*/
    itoa(str,x);DsPrintfe(0,0,0,str);

    while(1){
    }
}

このような形で変更しました。
これをコンパイルしエミュレータで実行してみます。

何かおかしいですね。

右端8dot分が空白になってしまいます。

上記ソースの次の個所が間違っていたためです。右のように書き換えます。

if ((x>=0)&&(x<232)){ → if ((x>=0)&&(x<=232)){

これで無事に、ゴキブリが右端から左に走り抜けるようになりました。

ここまでのソース

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