改良中 | java初心者が打ち続けるブログ

java初心者が打ち続けるブログ

Javaを使えるようになったら嬉しい...と思いつつ、
適当に練習したコードのバックアップみたいなブログです。

基本的には教本を参考に...
具体的なプログラムは他サイトを参考にしてます

初心者なので誤釈が多々あるとは思いますが、
指摘して頂けると助かります

エネミーの行動のランダム化とスキル攻撃を導入しました

といっても、スキル攻撃については....まぁ、察してください(;´Д`)




class actor{
public static int hp; //HPの最大値
public static int lv=100; //現在LV
public static int maxHp = lv*100; //体力の初期値(Lv×100)
public static int needExp=100; //次のLVに必要な経験値Lv上昇ごとに100
public static int damege = 0; //戦闘中のダメージメソッド
public static int nowHp = maxHp; //アクターの現在のHp
static int power =lv; //アクターの攻撃力
static int gurd =lv; //アクターの防御力
static int exp=0; //アクターの現在の経験値
static int effect = 0; //アクターに与える特殊効果を管理。 1 = 防御による防御力2倍
static int mp = lv+2;
}


//エネミーの設定項目です
class Enemy extends actor{
static int enemyHp;
static int enemyGurd;
static int enemyPower;
static int getExp;
static int enemyMp;
Enemy(){
//エネミー初期設定値
setSize(100,1,2,1);
}
Enemy(int e_hp,int e_gurd,int e_power,int exp){
setSize(e_hp,e_gurd,e_power,exp);
}
void setSize(int e_hp,int e_gurd,int e_power,int exp){
enemyHp=e_hp;
enemyGurd=e_gurd;
enemyPower=e_power;
getExp=exp;
}
}






public class Battle extends Enemy{
public static void main(String[]args){
//エネミーのステートを設定 (HP 防御力 攻撃力 EXP の順)
int ran = 0;
int flag = 0;
//flag 0 = 戦闘続行 / 1 = 戦闘終了 / 2 = GameOver で処理を行います
Enemy line = new Enemy(100,0,30,0);
System.out.println("エンカウントしました");
System.out.println("エネミーステータスを表示します");
System.out.println("エネミー1: HP/"+line.enemyHp+" 攻撃力"+line.enemyPower+" 防御力"+line.enemyGurd);
System.out.println("バトルを開始します");
//戦闘処理を行います
do{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
try{
//エネミー攻撃ターン
if(ran==1){
enemyGurd=enemyGurd/2;
enemyPower = enemyPower/2;
}
ran = (int)(Math.random()*3);
if(ran==0){
//通常攻撃
System.out.println("エネミーの攻撃");
damege = line.enemyPower - gurd;
if(damege<0){
System.out.println("ダメージは通りませんでした");
damege = 0;
}
System.out.println(damege+"ダメージ!");
nowHp=nowHp-damege;
System.out.println("アクターHP"+nowHp);
if(nowHp<0){
System.out.println("力尽きました");
//GameOver処理を行います
flag = 2;
}
}else if(ran==1){
System.out.println("エネミーは防御");
enemyGurd = enemyGurd*2;
}else if(ran==2){
System.out.println("エネミーは逃亡を試みた");
if(nowHp System.out.println("逃走に成功した");
flag = 1;
}else{
System.out.println("逃走に失敗");
}
}else if(ran==3){
System.out.println("エネミーの特殊攻撃");
if(enemyMp>=2){
enemyPower = enemyPower*2;
damege = line.enemyPower - gurd;
if(damege<0){
System.out.println("ダメージは通りませんでした");
damege = 0;
}
}else{
System.out.println("Mpの不足で攻撃失敗");
}
System.out.println(damege+"ダメージ!");
nowHp=nowHp-damege;
System.out.println("アクターHP"+nowHp);
if(nowHp<0){
System.out.println("力尽きました");
//GameOver処理を行います
flag = 2;
}
}

//アクターのターンです
if(effect==1){
gurd = gurd/2;
}
System.out.println("行動を選択してください");
System.out.print("1.攻撃 2.スキル 3.防御 4.アイテム 5.逃亡");
System.out.println("対応する番号を半角で入力:");
String deep = reader.readLine();
int x = Integer.parseInt(deep);
switch(x){
case 1:
System.out.println("アクターによる攻撃です");
damege=power-line.enemyGurd;
//ダメージが通らなかった場合の処理
if(damege<0){
System.out.println("ダメージが通りません");
damege=0;
}
//ダメージが通った処理
System.out.println(damege+"ダメージ!");
line.enemyHp=line.enemyHp-damege;
//倒した場合の処理
if(line.enemyHp<=0){
line.enemyHp=0;
System.out.println("エネミー1: HP/"+line.enemyHp+" 攻撃力"+line.enemyPower+" 防御力"+line.enemyGurd);
System.out.println("エネミーを倒しました");
exp = exp+line.getExp;
System.out.println("経験値"+line.getExp+"ポイント獲得しました");
//LvUp処理を行います
if(needExp lv = lv+1;
System.out.println("LvUpしました!");
System.out.println("アクターステータスを更新します");
System.out.println("HP/"+maxHp+" Lv/"+lv+" 攻撃力/"+power+" 防御力/"+gurd);
//次の必要の経験値を設定
needExp=needExp+100;
//取得スキル処理を行います
System.out.println("処理を終了します");
flag = 1;
}else{
System.out.print("次のreberuまで");
System.out.print(needExp-exp);
System.out.println("不足しています");
System.out.println("戦闘を終了します");
flag = 1;
}
}else{
//倒せない場合の処理
System.out.println("エネミー1: HP/"+line.enemyHp+" 攻撃力/"+line.enemyPower+" 防御力/"+line.enemyGurd);
}
break;
case 2:
//スキルによる処理を行います
System.out.println("特殊攻撃を開始します");
if(mp>=2){
System.out.println("MPが不足しています");
System.out.println("相手のターンに移ります");
}else{
damege = power*2-line.enemyGurd;
mp = mp-2;
//ダメージが通らなかった場合の処理
if(damege<0){
System.out.println("ダメージが通りません");
damege=0;
}
//ダメージが通った処理
System.out.println(damege+"ダメージ!");
line.enemyHp=line.enemyHp-damege;
//倒した場合の処理
if(line.enemyHp<=0){
line.enemyHp=0;
System.out.println("エネミー1: HP/"+line.enemyHp+" 攻撃力"+line.enemyPower+" 防御力"+line.enemyGurd);
System.out.println("エネミーを倒しました");
exp = exp+line.getExp;
System.out.println("経験値"+line.getExp+"ポイント獲得しました");
//LvUp処理を行います
if(needExp lv = lv+1;
System.out.println("LvUpしました!");
System.out.println("アクターステータスを更新します");
System.out.println("HP/"+maxHp+" Lv/"+lv+" 攻撃力/"+power+" 防御力/"+gurd);
//次の必要の経験値を設定
needExp=needExp+100;
//取得スキル処理を行います
System.out.println("処理を終了します");
flag = 1;
}else{
System.out.print("次のreberuまで");
System.out.print(needExp-exp);
System.out.println("不足しています");
System.out.println("戦闘を終了します");
flag = 1;
}
}else{
//倒せない場合の処理
System.out.println("エネミー1: HP/"+line.enemyHp+" 攻撃力/"+line.enemyPower+" 防御力/"+line.enemyGurd);
}
break;
}
break;
case 3:
System.out.println("防御を行います");
gurd = gurd*2;
effect = 1;
System.out.println("1ターン間、受けるダメージが半減します");
break;
case 4:

break;
case 5:
System.out.println("逃亡を試みます");
if(nowHp>enemyHp){
System.out.println("逃走に成功しました");
System.out.println("経験値は取得できません");
flag = 1;
}
break;
default:
System.out.println("エラー:入力形式が違うため、ターンがスキップされます");
break;
}

}catch(IOException e){
System.out.println(e);
}catch(NumberFormatException e){
System.out.println("エラー:入力形式が違います");
}

//flagが0の時は処理を繰り返す
}while(flag == 0);
}

private static void Batlle() {
// TODO Auto-generated method stub

}

private static void println(String string) {
// TODO Auto-generated method stub

}

}