since : 2001.11.1 Junk Shop
DataSlim2's Room
RexDKで、データスリム2のアドインを作る。
このままではゲームとして成り立たないので少々変更します。
まず、ゴキブリの出現位置が変化するように、main()関数を次のように変更しました。
main(){
int y; //追加
while(1){
DsEventMessageGet(msg);
switch (msg.message){
case MSG_DS_KEY_DOWN:
if(msg.sCode==KEY_ENTER_A) {
y=(rand()%5)*20; //追加
Tmove(y);} //変更
break;
}
}
}
ここで追加した個所はrand()%5により0〜4までの整数をランダムに取得し、ゴキブリが5箇所の何れからか出現するようにしました。
次に、ゴキブリをタップした時にゴキブリが消えるようにして、main()関数に戻るようにTmove()関数を変更します。
ついでに、スコアの位置を変更しやすいように#defineで宣言し右下に持って行きました。
さらにmissした時に1を返す関数に変更しました。
#define Scor_X 200 //追加
#define Scor_Y 107
int Tmove(int Char_Y){ //変更
int Char_X=240,Char_X_old,x;
int Char_Y_old,y;
int i,f,flag;
char str[10];
DsDisplayBlockClear(0,0,240,Scor_Y); //変更
f=1;
do{
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;
if ((x>=0)&&(x<=232)){
DsDisplayBitmapDraw( x, Char_Y, taro_bmps[i] , 0);
}
}
/*キャラクターの動きをトレースするために入れてあるます
実行キーを押すと1ループづつ動くようにして有ります。*/
flag=1;
while(flag){
x=Char_X;y=Char_Y;width=CharWidth*5;
if(Char_X<0){
x=0;width=width+Char_X;
}
DsTouchDataGet(p);
if(((p.PointX > x)&&(p.PointX < x+width))&&
((p.PointY > Char_Y)&&(p.PointY < Char_Y+CharHeight))){
scor++;
DsDisplayBlockClear(Scor_X,Scor_Y,40,12); //変更
itoa(str,scor);DsPrintfe(Scor_X,Scor_Y,0,str); //変更
if (Char_X<0){
DsDisplayBlockClear(0,Char_Y,CharWidth*5,CharHeight);
}
else{
DsDisplayBlockClear(Char_X,Char_Y,CharWidth*5,CharHeight);
}
return 0; //タップした時0を返す
}
p.PointX=255;p.PointY=255;
DsEventMessageGet(msg);
switch (msg.message)
{
case MSG_DS_KEY_DOWN:
if(msg.sCode==KEY_ENTER_A) {flag=0;}
break;
}
}
Char_X_old = Char_X;
Char_X -=CharWidth;
if(Char_X<(-5*CharWidth)) f=0;
}while(f);
return 1; //missした時1を返す
}
後は、トレース用のループを外せば、ゲームのメインとなる部分に成ります。
Copyright 2001-2002 Hideo Morotomi