GetRand()でswitchの選択をする

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
シラフ

GetRand()でswitchの選択をする

#1

投稿記事 by シラフ » 14年前

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;
}

で自分のターンに戻りたいのですが、
どうしたらいいでしょうか?

私はまだ初心者なので見づらいと思いますが
ご教授よろしくおねがいします。

白い時空
記事: 18
登録日時: 14年前
住所: 埼玉県さいたま市

Re: GetRand()でswitchの選択をする

#2

投稿記事 by 白い時空 » 14年前

見たところ、switch文にbreakがありません。
期待しない動作なのはそのせいではないでしょうか?

アバター
沖 滉均
記事: 237
登録日時: 14年前
住所: K県F市

Re: GetRand()でswitchの選択をする

#3

投稿記事 by 沖 滉均 » 14年前

とりあえず、インデントがまったく入っておらず見づらいので、上のソースを改行等一部削除して勝手にインデント付けた物を貼っておきます。

コード:

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言語ですか?
C言語という前提で確認したいことがあるのですが、switch文の使い方は理解されていますでしょうか?
上記のコードだとtf = 3のときに8~29行目までの処理が全て行われてしまいます。
原因はちょっと考えてみてください。
There is no royal road to learning.
codeタグで指定できる言語
画像

閉鎖

“C言語何でも質問掲示板” へ戻る