import java.util.Random; import java.util.Scanner; public class Ex7_4 { public static void main(String[] args) { Scanner si = new Scanner(System.in); Random rnd = new Random(); int eHP, mHP, eAt, mAt, lev, i, exp, esc, flg, tmp; String[] dn = {"レッド", "ブラック", "ブルー", "グリーン", "パープル"}; lev = 1; // 初期値:Level 1 exp = 0; // 初期値:経験値0 mHP = 0; // ダミー(コンパイル警告回避用) System.out.println("-------------------------"); System.out.println(" だんじょん・くえすと 改 "); System.out.println("-------------------------"); System.out.print("\t\n ダンジョンに入りますか? (yes=1 / no=0) -> "); flg = si.nextInt(); if ( flg == 0 ) { System.out.println("\t 少しはやればいいのに ... Game Over ... "); return; } while ( flg == 1 ) { mHP = 80 + rnd.nextInt(20) + exp; // 主人公HP(初期値 / 回復後) System.out.printf("\t\t(*´∇`)《HP:%3d Exp:%2d Lev.%2d》\n\n", mHP, exp, lev); eHP = 60 + rnd.nextInt(20); // 初期値:Dragon HP System.out.println(" " + dn[rnd.nextInt(5)] + "・ドラゴンがあらわれた!"); for (i=0; i<7; i++) { // 7回繰り返し System.out.print("\n\t---【第 " + (i+1) + " ターン】---"); System.out.printf("\tDragon《%3d 》vs《%3d 》You\n", eHP, mHP); System.out.print("\tどうしますか?[ Attack! = 1, Escape = 0 ] ->"); esc = si.nextInt(); if ( esc == 0 ) { if ( rnd.nextInt(6) < 3 ) { System.out.println("逃げられない!"); } else { System.out.println("無事,逃げ延びた!"); break; } } else { System.out.print("\t\tあなたの攻撃 ≡ドルァァッ(#゚Д゚)つ"); mAt = rnd.nextInt(10) -2; // -2,-1,0,1,...,7 の10個の乱数生成 if ( mAt < 0 ) { System.out.println("\t残念。はずれた..."); } else if ( mAt > 6 ) { System.out.println("\t会心の一撃! " + (mAt+10+exp/2) + " のダメージ!"); eHP -= (mAt+10+exp/2); } else { System.out.println("\tHit! " + (mAt+10) + " のダメージ"); eHP -= (mAt+10); } if ( eHP <= 0 ) { // 倒し判定 tmp = rnd.nextInt(7) + (10-i); System.out.printf(" ----------------------------------------\n"); System.out.printf(" ★☆ドラゴンを倒した☆★ 経験値 %2d 獲得\n", tmp); exp += tmp; if ( exp/10 > lev ) { lev = exp/10; System.out.println(" △▼Great! Level up!! Lev." + lev + "になった▼△"); } break; // End of for() へ } } System.out.print("\t\tドラゴンの攻撃 ≡ブォ(`◇)<炎炎"); eAt = rnd.nextInt(10) -2; if ( eAt < 0 ) { System.out.println("\tひゅー,回避!危ない危ない…"); } else if ( eAt > 7 ) { System.out.println("\t痛恨の一打! " + (eAt+15) + " のダメージ!"); mHP -= (eAt+15); } else { System.out.println("\tHit! " + (eAt+10) + " のダメージ"); mHP -= (eAt+10); } if ( mHP <= 0 ) { // やられ判定 System.out.println("やられちゃいました。情けない。。。\n \t Game Over ..."); return; } } // End of for() System.out.println(" ----------------------------------------\n"); if ( eHP > 0 ) { System.out.println(" Dragon「もぅ。疲れたから帰る。。。」\n"); System.out.println(" あなたはドラゴンを倒せなかった…\n"); } if ( lev >= 10 ) { System.out.println(" ----------------------------------"); System.out.println(" Congratulations! 洞窟を攻略した "); System.out.println(" さらば勇者よ また逢う日もあろう…"); System.out.println(" ----------------------------------"); return; } System.out.print("先に進みますか? (yes=1 / no=0) -> "); flg = si.nextInt(2); if ( flg == 1 ) { System.out.println(" ----------------------------------------\n"); System.out.println(" あなたは少し休んでから,洞窟の奥に進んだ"); } else { break; // End of while() } } // End of while() System.out.println("あなたはもう帰ることにした.さよなら.また来てね"); System.out.printf("\t最終ステータス《HP:%3d Exp:%3d Lev.%2d》\n", mHP, exp, lev); } }