ページ 11

一定時間文字を表示

Posted: 2012年10月25日(木) 14:59
by ヨシタケ
スタート時に「START」、クリア時に「CLEAR」といった感じに文字を表示させようとしています。
しかし、なぜかスタート時に「CLEAR」の文字が表示されタイトルに戻ってしまいます。
クリアの条件はint blocknumberという変数を用意し、ブロックをひとつ消すごとに+1されるようにしてあります。
ブロックの数が18なので18個消した時点でclearflug = 1となるようにしてあります。
文字の表示は

コード:

void graph_start(){


	if(clearflug = 0){
		s_cnt++;
		if(s_cnt <180){
			DrawRotaGraphF(120,180,1.0f,0.0f,img_font[0],TRUE);
		}else{
			s_cnt = 0;
		}
	}
	if(clearflug = 1){
		e_cnt++;
		if(e_cnt <180){
			DrawRotaGraphF(120,180,1.0f,0.0f,img_font[1],TRUE);
		}else{
			func_state = STATE_TITLE;   //タイトルに戻る
			e_cnt = 0;
		}
	}

}
というようにしてあります。また、ちゃんと初期化のための関数でclearflug を0にしているため原因がさっぱりわかりません。

Re: 一定時間文字を表示

Posted: 2012年10月25日(木) 15:06
by softya(ソフト屋)
ここと
if(clearflug = 0){
ここが
if(clearflug = 1){
代入文になっています。
条件なら==です。Cを含めif文中に代入文が書ける言語では注意してくださいね。
プロでも間違う時のあるバグです。

デバッガを使うと間違いが検証できますよ。

[補足]
誤字ですがflug → flagだと思います。
あとflagは0/1の場合だけにしてCounterとかを使って方が良いと思います。

Re: 一定時間文字を表示

Posted: 2012年10月25日(木) 15:10
by ヨシタケ
ありがとうございます。全然気づきませんでした。