アットウィキロゴ

キャラの保存1修正

ボーナスが増え続けるバグの詳細

まず、前回起こっていたステータスが18の状態になったときにボーナスが減算されないためボーナスが増え続けるバグは直しました。ご迷惑をお掛けしました。
原因はCharaクラスでステータスを上げた時に、ボーナスを減算するタイミングがおかしかったことです。
前回おかしかった部分を掲載します。

	//ボーナスが0になった場合
	if(flag_Bonus){
		//加算処理をやめる
		point=Integer.parseInt(strParam);
		//ステータスが18を超えた場合
	}else if(point>18){
		//上限を18にする
		point=18;
		//ステータスが12を超えた場合
	}else if(point>=12){
		this.list=list;
		loadParam("/menu/charas.dat");
	}

	//ボーナス値を減算
	minusBonus(list);

まずおかしいのがステータスが18を超えた場合の処理を行なった後にボーナスを減算しているところ。
ボーナスはステータスが18を超えないと減算がストップしないため、このソースだと減算し続けます。
続いて減算側の処理です。

//ボーナスの減算処理
public void minusBonus(int list){
	//String型からint型へ変換して減算
	bonusPoint=Integer.parseInt(strBonus)-FIR;
	//ボーナスが0になった場合
	if(bonusPoint<=RESET){
		//0に設定してフラッグを立てる
		bonusPoint=RESET;
		flag_Bonus=true;
	}
	
	if(point>=18){
		bonusPoint=Integer.parseInt(strBonus);
		System.out.println("Check");
	}
	setBonus();
}

これもおかしいのが、if(point>=18)の部分です。
ステータスが18になった瞬間から減算がされないという記述になってます。
ステータスが18になった瞬間は減算されなければならないため、これは間違っています。
この2点によりバグが発生していました。
修正後のソースを以下に掲載します。

	//ボーナスが0になった場合
	if(flag_Bonus){
		//加算処理をやめる
		point=Integer.parseInt(strParam);
		//ステータスが18を超えた場合
	}
	
	//ボーナス値を減算
	minusBonus(list);
	
	if(point>18){
		//上限を18にする
		point=18;
	}

先程のソースと違い、ボーナスの減算をステータスが18を超えた場合の処理の前に持ってきています。
そして減算側の処理です。

//ボーナスの減算処理
public void minusBonus(int list){
	//String型からint型へ変換して減算
	bonusPoint=Integer.parseInt(strBonus)-FIR;
	//ボーナスが0になった場合
	if(bonusPoint<=RESET){
		//0に設定してフラッグを立てる
		bonusPoint=RESET;
		flag_Bonus=true;
	}
	
	if(point>18){
		bonusPoint=Integer.parseInt(strBonus);
	}
	setBonus();
}

減算のストップの条件をif(point>18)としました。
これによりステータスが18になった場合もボーナスは減算され、それ以降は減算されなくなります。
以上。訂正してお詫びします。

最終更新:2008年07月11日 01:14
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。