RPGで、
GetRand()でtfという関数の値を変えて
switchで敵の2つのうちの1つの技を決めるプログラムを作りたいのですが、
2ついっしょに出してしまいます。
自分のターンが終わるとtfが2となり、
if(tf==2&&hk==0&&al==0){
tf=GetRand(4);
if(tf<3)
tf=2;
}
switch(tf){
case 3 : {
SetDrawBlendMode( DX_BLENDMODE_ALPHA , 230 ) ;
DrawRotaGraph( 150 ,(double) 640-ta*ta*0.0001 , (double)ta*0.005, ((double)0) , img[2] , TRUE ) ;
cdm+=0.21;
com=5;
ta++;
if(ta>500){
ta=0;
tf=20;
}
}
case 4 : { hk++;
com=6;
DrawGraph( -hk*3+640 , hk*2 , img[8] , TRUE ) ;
if(hk>100){
hk=0;
tf=20;}
}
}
}
if(tf== 20 ) {
if(ma<5)
mp-=63.8;
else
if(ma<4) mp-=127.6;
SetDrawBlendMode( DX_BLENDMODE_NOBLEND , 0 ) ; //ブレンドモードをリセットする。
tf=0;//自分のターンに戻る
com=0;
comf=0;
mh=0;
}
で自分のターンに戻りたいのですが、
どうしたらいいでしょうか?
私はまだ初心者なので見づらいと思いますが
ご教授よろしくおねがいします。
GetRand()でswitchの選択をする
Re: GetRand()でswitchの選択をする
見たところ、switch文にbreakがありません。
期待しない動作なのはそのせいではないでしょうか?
期待しない動作なのはそのせいではないでしょうか?
Re: GetRand()でswitchの選択をする
とりあえず、インデントがまったく入っておらず見づらいので、上のソースを改行等一部削除して勝手にインデント付けた物を貼っておきます。
で、色々突っ込みたいところはあるんですが、まず使用言語はC言語ですか?
C言語という前提で確認したいことがあるのですが、switch文の使い方は理解されていますでしょうか?
上記のコードだとtf = 3のときに8~29行目までの処理が全て行われてしまいます。
原因はちょっと考えてみてください。
if(tf==2&&hk==0&&al==0){
tf=GetRand(4);
if(tf<3)
tf=2;
}
switch(tf){
case 3 : {
SetDrawBlendMode( DX_BLENDMODE_ALPHA , 230 ) ;
DrawRotaGraph( 150 ,(double) 640-ta*ta*0.0001 , (double)ta*0.005, ((double)0) , img[2] , TRUE ) ;
cdm+=0.21;
com=5;
ta++;
if(ta>500){
ta=0;
tf=20;
}
}
case 4 : {
hk++;
com=6;
DrawGraph( -hk*3+640 , hk*2 , img[8] , TRUE ) ;
if(hk>100){
hk=0;
tf=20;
}
}
}
}
if(tf== 20 ) {
if(ma<5)
mp-=63.8;
else
if(ma<4) mp-=127.6;
SetDrawBlendMode( DX_BLENDMODE_NOBLEND , 0 ) ; //ブレンドモードをリセットする。
tf=0;//自分のターンに戻る
com=0;
comf=0;
mh=0;
}
C言語という前提で確認したいことがあるのですが、switch文の使い方は理解されていますでしょうか?
上記のコードだとtf = 3のときに8~29行目までの処理が全て行われてしまいます。
原因はちょっと考えてみてください。