since : 2001.11.1 Junk Shop
DataSlim2's Room
RexDKで、データスリム2のアドインを作る。
画像表示プログラムを改造します。
その前に、現状の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