リストに格納する(バグありil||li _| ̄|○ il||li )
- サンプルのJARファイルはページの一番下(スポンサーリンクよりも↓)に張ってあるので自由にダウンロードしてくださぃ♪
ステータスが18の状態になったときにボーナスが減算されないためボーナスが増え続けるバグがあります。。。
今回だけデバッグ情報が右側に付いていますが、私が理解できるようにしか作ってないので
これについては説明しません。作り方もかなり適当なので・・・w
さて、キャラの保存方法ですがリストに格納するという形を取ってます。
まずMenuクラスのキャラクターの作成画面のソースを見てください。
//ボーナス画面
}else if(flag_newRegist){
if(flag_selectChara){
chara.entryChara(dy);
flag_selectChara=false;
flag_newRegist=false;
flag_Registration=true;
}else if(dy==y+CL*SIX){
if(chara.isBonus()){
chara.selectChara();
if(chara.isChara()){
flag_selectChara=true;
}
}
}
//再描画後のy位置を初期化
dy=y;
}
ここだけ載せても分からないと思います(笑)
flag_newRegistの時って言うのは、ボーナスの割り振り画面にいるときです。
flag_selectCharaはボーナスが全て振られていて、尚且つ職業が1つ以上表示されている状態です。
まず職業選択へ行くまでのCharaクラスの処理を見てみます。
職業選択画面へ行くためにはボーナスを全て割り振った状態であることが条件です。
割り振ると画面の決定の項目から次の処理へ移動します。
処理は全て同じなので1部のみ掲載します。
//キャラクタの職業選択
public void selectChara(){
if(STR>=12){
Soldier=true;
}else{
Soldier=false;
}
何をしているのかと言うと、ボーナス割り振り画面で左または右キーでボーナスが割り振られる度に
ここの処理へ移動して職業のフラッグを立てるかどうかを判断しています。
全ての職業の判断をここでしています。やり方は掲載してあるものと同じです。
そしてここでフラグが立つと職業が表示されます。
if(Soldier)
g.drawString(Charas.get(RESET).toString(),px+x+CL+CL,y);
こんな感じですね。これはdraw(Graphics g)のとこの処理です。
Soldierがtrueなら戦士を表示しなさいってことです。他の職業も同じ処理です。
そして職業が1つ以上表示されてるかを判定します。職業が表示されてないのに選択画面へ行ってしまったら
抜けれなくなりますからねっ!
//職業が表示されているか
public boolean isChara(){
if(Soldier || Priest || Wizard || Thief || Samurai || Load || Ninja || Demon){
flag_Charas=true;
}else{
flag_Charas=false;
}
return flag_Charas;
}
各職業のどれか1つでもフラグが立っていれば行ってよし!っていう処理です。
次がやっと今回のメインのキャラの保存の部分です。。。長いですね。1部掲載します。
//職業の決定
public void entryChara(int dy){
if(dy==y){
if(Soldier){
saveCHARA.add(inputName+Param.get(RESET)+Param.get(FIR)
+Param.get(SEC)+Param.get(THI)+Param.get(FOU)
+Param.get(FIF)+Charas.get(RESET));
}
なんかずら~っと文字が並んでてめんどぃように見えるけど、やってることはそんなに難しいものじゃありません。
要するにリストの中に名前やパラメータや職業を入れてるだけです。でしょ??
これで保存されるわけですっ!
そして最後に次のキャラを作成するためにパラメータなどをリセットします。
//全てを初期状態にリセットする
public void statusReset(){
//フラッグの解除
flag_Bonus=flag_Charas=flag_isName=false;
//職業の解除
Soldier=Priest=Wizard=Thief=Samurai=Load=Ninja=Demon=false;
//リストのパラメータのリセット
Param.clear();
//リストのパラメータにデフォルトを設定
Param.addAll(defaultParam);
//全てのパラメータのリセット
STR=VIT=WIS=INT=SPD=LUK=point=RESET;
}
これは単純にリセット処理なので、説明はいらないですょね??
ぇ~っと、随分と長くなってしまって混乱するかも知れないのでわからなければ質問どーぞっ!
最終更新:2008年07月09日 21:12