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