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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
amehirune
記事: 181
登録日時: 10年前
住所: どっか
連絡を取る:

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

#1

投稿記事 by amehirune » 10年前

こんにちは、今回もデバッグ途中でバグ?が出たので質問させていただきます。
タイトルの通り、文字が一時的に表示されません。
私は今も、龍神録のオープンソースを勉強として改造している次第です。
そこに、オリジナルシステムとして「気象悪化システム」というものを導入した際に発生しました。
以下、詳細になります。
[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]

他に見せてほしいというところがあればお願いします。
どなたか、よろしくお願いします。
ほら、来いよ!! 誤字や矛盾を指摘したい奴から、前に出てこいよぉおおおおおおおッ!!!
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※

アバター
h2so5
副管理人
記事: 2212
登録日時: 13年前
住所: 東京
連絡を取る:

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

#2

投稿記事 by h2so5 » 10年前

問題が発生したときの whether%10 の値を調べてください。

アバター
amehirune
記事: 181
登録日時: 10年前
住所: どっか
連絡を取る:

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

#3

投稿記事 by amehirune » 10年前

h2so5さん、回答ありがとうございます。
調べてみたところ、whether%10の値が負を返していました。
その結果をもとに考察したところ、「値が0未満の場合は、ch.whetherに0を代入する」という操作が
アイテムを収集した場合にのみ実行されるif文の中に入っていたことが発覚し、
上限値・最小値設定のプログラムをchar.cppに移動させることでバグを改善することができました。
ありがとうございました。
ほら、来いよ!! 誤字や矛盾を指摘したい奴から、前に出てこいよぉおおおおおおおッ!!!
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※

閉鎖

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