ボーナスポイントをランダムで決定する
- サンプルのJARファイルはページの一番下(スポンサーリンクよりも↓)に張ってあるので自由にダウンロードしてくださぃ♪
前回のバージョンで全ての職業を表示することができましたか??忍者の↓にもう1キャラ入れておきましたっ!
さて、今回のバージョンではボーナスポイントをランダムに決定する処理を追加します。
まずは追加部分を掲載します。Charaクラスのソースになります。
//キャラの名前の入力
public void getName(){
inputName=JOptionPane.showInputDialog(null,"名前を5文字以内で入力してください");
//取り消しが選択された場合
if(inputName==null){
flag_isName=false;
//名前の入力がない場合や最初がスペースで始まる場合
}else if(inputName.length()==RESET || inputName.startsWith(" ")
|| inputName.startsWith(" ")){
flag_isName=false;
}else{
//名前が5文字を超えた場合
if(inputName.length()>FIF){
this.inputName=inputName.substring(RESET,FIF);
}else{
this.inputName=inputName;
}
//ボーナスのリセット
Param.set(SEV,defaultParam.get(SEV));
//リストのボーナスをString型へ
strBonus=Param.get(SEV).toString();
//String型からint型へ
bonusPoint=Integer.parseInt(strBonus);
//ボーナスのランダム生成
if(rand.nextDouble()<1.00){
this.bonusPoint+=Math.random()*5;
}
//ボーナスのランダム生成
if(rand.nextDouble()<0.15){
this.bonusPoint+=Math.random()*20;
}
//ボーナスをリストに格納
setBonus();
flag_isName=true;
}
}
気付いた人もいるかも知れませんが、名前の入力処理は前回Menuクラス側で行なってたんです。
それを今回Charaクラス側で処理するように戻しました。
理由としては、どのタイミングでボーナスにランダム付加を持たせるか?というとこですね。
ソースを見て分かる人もいるかと思いますが、CharaクラスへのアクセスはMainPanelクラスで
左or右キーが押された時か、名前入力の時しかなぃのです。
左or右キーが押された時の処理にボーナスのランダム付加を持たせると、押される度に
ランダム付加されてしまうので、今回は名前入力時にランダム付加を持たせました。
Menuクラスに名前入力処理があると、CharaクラスはMenuクラスから値を取得しなければいけないため
手間がかかりますし、分かりにくいですからね。
では処理の内容に移ります。
まずは名前の入力を行ないます。このときに名前が正常に入力された場合についでにボーナスを
ランダムで付加しています。
random()の値は0.1なので、0~5の値が確実にランダム付加されています。
それに加えて低確率で0~20のボーナスが付加されるようになっています。
注意点として、ランダムでボーナスを付加する前に現在のボーナスポイントをリセットしないと
ポイントが加算ばっかりされてすごい値になってしまいます。
それに加えて、今回のボーナス管理はArrayListで管理しているため、変更したポイントは
再びArrayListの該当番号と置き換えなければなりません。
ちょっと説明が足りないかも知れないので、質問あれば気軽に掲示板までどうぞっ!
(補足として今回はステータスのリセットまでは行なってないので、ステータスを振った場合は
その値が保持されています。ボーナスはリセットされるので初期値に戻りランダム付加されます。)
最終更新:2008年07月09日 15:17