ページ 11

【龍神録】文字が一時的に表示されません

Posted: 2014年4月09日(水) 17:30
by amehirune
こんにちは、今回もデバッグ途中でバグ?が出たので質問させていただきます。
タイトルの通り、文字が一時的に表示されません。
私は今も、龍神録のオープンソースを勉強として改造している次第です。
そこに、オリジナルシステムとして「気象悪化システム」というものを導入した際に発生しました。
以下、詳細になります。
[hr]
気象悪化システムについての説明は省略します。パーセンテージで表し、MAX=99.9%、MIN=0.0%です。
被弾やボム使用等で増加、スペルカード取得やエクステンド等で減少します。
今回はボム使用で3%増加後にスペルカード取得で5%減少した際に、
アイテムを入手するまで一桁目が表示されない(本当は「00.0%」なのに、実際は「0 .0%」になる)のです。
アイテムを入手したら一桁目も表示されましたが…

ini.cpp

コード:

	ch.x=FMX/2;
	ch.y=FMY*3/4;
	ch.power=0;//初期パワー
	ch.num=2;//初期残機数
	ch.money=10000;//初期ボーナス
	ch.whether=0;//気象を初期化
out.cpp

コード:

				if(ch.power>500)ch.power=500;
				if(ch.point>9999)ch.point=9999;
				if(ch.money>999999)ch.money=999999;
				if(ch.score>999999999)ch.score=999999999;
				if(ch.whether>999)ch.whether=999;
				if(ch.whether<0)ch.whether=0;
graph.cpp

コード:

	//気象悪化率(特殊システム①)表示
	DrawRotaGraph(542,111,0.9f,0.0f,img_num[0][whether%10],TRUE);whether/=10;
	DrawRotaGraph(524,111,1.0f,0.0f,img_num[0][whether%10],TRUE);whether/=10;
	DrawRotaGraph(508,111,1.0f,0.0f,img_num[0][whether%10],TRUE);
	DrawString(530,101,".",color[0]);//チョン
	whether/=10;
	DrawString(552,102,"%",color[0]);
※気象率の増加や減少のcppファイルは省略※
[hr]

他に見せてほしいというところがあればお願いします。
どなたか、よろしくお願いします。

Re: 【龍神録】文字が一時的に表示されません

Posted: 2014年4月09日(水) 17:44
by h2so5
問題が発生したときの whether%10 の値を調べてください。

Re: 【龍神録】文字が一時的に表示されません

Posted: 2014年4月10日(木) 16:58
by amehirune
h2so5さん、回答ありがとうございます。
調べてみたところ、whether%10の値が負を返していました。
その結果をもとに考察したところ、「値が0未満の場合は、ch.whetherに0を代入する」という操作が
アイテムを収集した場合にのみ実行されるif文の中に入っていたことが発覚し、
上限値・最小値設定のプログラムをchar.cppに移動させることでバグを改善することができました。
ありがとうございました。