ボーナス値をランダムに決定する
ハィ・・・改良しましたっ!前回(掲載はしてませんが)よりはマシになったかと思います。。。
まずパラメータの表示項目の設定を変更しました。前回はString型の文字列に書いてましたが今回は配列に格納しました。
そしてそれぞれに表示項目を設定してあります。表示の位置も同じように配列に格納してあります。
こうする利点としては、キャラクターが追加されたときに位置の設定がしやすいかと思ったからです。
1行の高さはCLなので、各値の座標に+CL*iとかで表示できますよね??(数学できないなりに考えてみました。。。)
で、以下のようになってます。
//ウィンドウの上部の表示
private String[] windowTop={"name","character","HP","ATK","DEF","STATE"};
//パラメーターの座標位置
private static final int paramSize=6;
private int[] paramX=new int[paramSize];
private int[] paramY=new int[paramSize];
//パラメーターの位置設定
paramX[0]=rect.x+CL;
paramX[1]=charaRect.height+CL;
paramX[2]=paramX[1]+rect.x+CL+CL;
paramX[3]=paramX[2]+rect.x;
paramX[4]=paramX[3]+rect.x;
paramX[5]=paramX[4]+rect.x;
paramY[0]=rect.y+CL;
paramY[1]=paramY[0]+CL;
paramY[2]=paramY[1]+CL;
paramY[3]=paramY[2]+CL;
paramY[4]=paramY[3]+CL;
paramY[5]=paramY[4]+CL;
rect.xって何だ?と思われたかと思います。これはウィンドウ枠の設定を引用したものです。
今回はウィンドウ枠の描画方法も変更しました。
この手法はJavaでゲーム作りますが何か?のサイト様から参考にさせていただきました。
//ウィンドウ枠の定義
private static Rectangle WND_RECT=new Rectangle(50,350,382,112);
//ボーナスウィンドウの枠
private Rectangle CHARA_RECT=new Rectangle(50,160,116,128);
chara=new Chara(CL,WND_RECT,CHARA_RECT);
この値をCharaクラスに渡して、それをCharaクラスで使ってます。
public void draw(Graphics g){
for(int i=0;i<addMenu.length;i++){
//登録メニューの表示
g.drawString(addMenu[i],rect.x,rect.x+CL*i);
}
//ウィンドウ上部のメニューを順に表示
for(int j=0;j<windowTop.length;j++){
g.drawString(windowTop[j],paramX[j],paramY[0]);
}
//ウィンドウの表示
g.drawRect(rect.x,rect.y,rect.width,rect.height);
if(isChara){
//キャラの名前を表示
g.drawString(charaName,rect.x+CL,rect.width);
//ボーナスウィンドウ左側
g.drawRect(charaRect.x,charaRect.y,charaRect.width,charaRect.height);
//ボーナスウィンドウ右側
g.drawRect(charaRect.x+charaRect.width,charaRect.y,charaRect.width,charaRect.height);
for(int l=0;l<statusWindow.length;l++){
//ボーナスポイントの取得
point=statusPoint.get(l);
//パラメータの表示
g.drawString(statusWindow[l],paramX[1]-paramX[0],rect.x+charaRect.height+CL*l);
//ボーナス値の表示
g.drawString(point.toString(),paramX[1],rect.x+charaRect.height+CL*l);
}
}
}
これでも前回よりはかなり良くなってると思います。。。
前回はこの表示位置の計算がめちゃくちゃで書いてる私も何やってるかサッパリな状態でした(´・ω・`)
基本的にはparamXとparamYの値、rectやcharaRectの値から取ってます。
最後にボーナスポイントをランダムで決める方法についてです。
public void setBonus(){
this.Bonus=Default;
if(rand.nextDouble()<1.00){
this.Bonus+=Math.random()*3;
}
if(rand.nextDouble()<0.1){
this.Bonus+=Math.random()*20;
}
statusPoint.set(6,""+Bonus);
}
このsetBonus( )は
名前の登録を行うたびに呼ばれてますので、
名前を登録するたびにボーナス値はランダムで決定されます。
私が試した感じでは20回くらいに1回Bonusが24とかになります。
今回からボーナス割り振り画面でOKの項目でスペースを押したときに登録前の画面まで戻ることができるので
いいボーナスポイントが出るまで何度も試してみてください。
- サンプルのJARファイルはスポンサーリンクの↓に張ってあるので自由にダウンロードしてくださぃ♪
最終更新:2008年06月25日 18:14