別の関数で使ってた変数?を持ってきたい
解決したいこと
関数fightで倒したacross(ランダム出力させた敵キャラ)をlevelUp関数でも使用したい
発生している問題・エラー
下記のacross.exPointにエラーが発生する。
コード説明
adventure()・・・playerのレベルに対応してランダムに敵(monster)を出す
fight()・・・戦わせる
levelUp()・・・fight()でplayerが勝った場合倒したmonster(この場合across)の経験値を加算しplayer[0].exPointがlevelUpPointより大きくなったらレベルが1上がる
TextQuestCard adventure(TextQuestCard[] monster, TextQuestCard[] player) {
int random_adventure = (int)(Math.random()*100) + 1;
if(1 <= random_adventure && random_adventure <= 10) {
/*何もなかった*/
System.out.println("今日は何も見つからなかった。");
player[0].hitPoint = player[0].hitPoint + (player[0].maxHitPoint*10)/100;
return player[0];
}
else if(11 <= random_adventure && random_adventure <= 100) {
/*モンスターに出くわす*/
int monsterCount = 0;
for(int i = 0; i <= 20; i++) {
if(monster[i].conditionsPoint <= player[0].level) {
monsterCount++;
//当てはまったモンスターの番号を格納する配列作る
int[] monsterList = new int[21];
monsterList[monsterCount] = i;
}
}
int random_monster = (int)(Math.random()* monsterCount);
System.out.println(monster[random_monster].name + "に出くわした!");
return monster[random_monster];
}
return null;
}
Integer fight(TextQuestCard[] monster, TextQuestCard[] player) {
TextQuestCard across = adventure(monster, player);
int battlestart = 0;
int MyTurn = 0;
int EnemyTurn = 0;
if(battlestart == 0) {
if(player[0].speed >= across.speed) {
MyTurn = 1 ;
EnemyTurn = 0;
}
else {
MyTurn = 0 ;
EnemyTurn = 1;
}
battlestart = 1;
}
for(int i = 1; i <= 15; i++) {
if(MyTurn == 1) {
/////////////////////自分のターンが先行////////////////////////////
//////////////////////戦闘エフェクト//////////////////////////////
System.out.println(player[0].name + "の攻撃");
//////////////////////ダメージ計算////////////////////////////////
across.hitPoint = across.hitPoint - player[0].atkPoint;
System.out.println(across.name + "に" + player[0].atkPoint + "のダメージ");
if(across.hitPoint <= 0) {
System.out.println(across.name + "を倒した!");
return across.exPoint;
}
System.out.println(across.name + "の攻撃");
player[0].hitPoint = player[0].hitPoint - across.atkPoint;
System.out.println(player[0].name + "は" + across.atkPoint + "のダメージ");
if(player[0].hitPoint <= 0) {
System.out.println(player[0].name + "は倒れてしまった!");
return 0;
}
}
if(EnemyTurn == 1) {
/////////////////////相手ターンが先行////////////////////////////
//////////////////////戦闘エフェクト//////////////////////////////
System.out.println(across.name + "の攻撃");
//////////////////////ダメージ計算////////////////////////////////
player[0].hitPoint = player[0].hitPoint - across.atkPoint;
System.out.println(player[0].name + "は" + across.atkPoint + "のダメージ");
if(player[0].hitPoint <= 0) {
System.out.println(player[0].name + "は倒れてしまった!");
return 0;
}
System.out.println(player[0].name + "の攻撃");
across.hitPoint = across.hitPoint - player[0].atkPoint;
System.out.println(across.name + "に" + player[0].atkPoint + "のダメージ");
if(across.hitPoint <= 0) {
System.out.println(across.name + "を倒した!");
return across.exPoint;
}
}
}
return null;
}
TextQuestCard levelUp(TextQuestCard[] player, TextQuestCard[] monster) {
Integer across = fight(monster, player);
double levelUpPoint = 1;
if(player[0].level >= 2) {
for(int i = 1; i <= player[0].level; i++) {
levelUpPoint = levelUpPoint * 1.5;
}
}
player[0].exPoint = player[0].exPoint + across.exPoint;
int count = 0;
for(int j = 1; player[0].exPoint < levelUpPoint; j++) {
if(levelUpPoint <= player[0].exPoint) {
player[0].exPoint = (int)(player[0].exPoint - levelUpPoint);
player[0].level = player[0].level + 1;
count++;
}
}
System.out.println("レベルが" + count + "上がった");
return player[0];
}
情報が足りない場合はご連絡ください