11
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【ポケモン×Java】Lv12:『ラストバトル』~Scanner、while、if~

Posted at

前回をまだ読んでない方はこちら

👉 【ポケモン×Java】Lv11:『キミが技を選ぶ番だ!』〜Scannerで選択〜


🎮 いまできるすべてをぶつけよ!

第0章~第11章までおつかれさま!!
説明が足りなかったりして、難しかったかもしれないが、
ここまでついてきてくれてありがとう。

さあ、最後に熱いバトルにしようじゃないか

💡 いままで学習したものをすべて合体しよう

  • Scannerで、技が指定できるようにする。
  • ポケモンが4種類技をだせる。
  • どちらかかのHPが0になるまで勝負を繰り返す。
  • トレーナーは2人とも、技を選択するようにする。

(できる人向け)

  • アイテムで回復する(例:きずぐすりでHPを20回復!)
  • 自分ターンになった際、お互いのHPが見えるようにしよう
  • 実は、体力が0より小さくなる場合があるから、その対処。
    etc...実際のポケモンバトルにどんどん近づけてみよう!

✍️ 練習(これより下を見ないで挑戦してみよう)

Hint1 Scannerを適用して、技を選択(前回の復習)

BattleStage.java
package pokemon;
import java.util.Scanner;

class BattleStage {
    public static void main(String[] args) {
        Pikachu pi = new Pikachu();
        Hitokage hi = new Hitokage();
        Scanner scanner = new Scanner(System.in);
        
        System.out.println("\n--- キミの番! ---");
        System.out.println("技を選んでね:");
        System.out.println("0: かえんほうしゃ");
        System.out.println("1: ひのこ");
        System.out.println("2: なきごえ");
        System.out.println("3: ひっかく");
        System.out.print();//改行

        System.out.print("選択 (番号):");
        hi.attack(pi, scanner.nextInt()); // 技の番号を取得(scanner.nextInt())
        System.out.print();//改行
        
        System.out.println("\n--- 博士の番! ---");
        System.out.println("技を選んでね:");
        System.out.println("0: 10万ボルト");
        System.out.println("1: でんこうせっか");
        System.out.println("2: アイアンテール");
        System.out.println("3: かみなり");
        System.out.print();//改行

        System.out.print("選択 (番号):");
        pi.attack(hi, scanner.nextInt());
        System.out.print();//改行

        scanner.close();
    }
}

Hint2 While文で、バトルを繰り返す

BattleStage.java
package pokemon;
import java.util.Scanner;

class BattleStage {
    public static void main(String[] args) {
        Pikachu pi = new Pikachu();
        Hitokage hi = new Hitokage();
        
        Scanner scanner = new Scanner(System.in);

        while (pi.hp > 0 && hi.hp > 0) {
            System.out.println("\n--- キミの番! ---");
            System.out.println("技を選んでね:");
            System.out.println("0: かえんほうしゃ");
            System.out.println("1: ひのこ");
            System.out.println("2: なきごえ");
            System.out.println("3: ひっかく");
            System.out.print();//改行
    
            System.out.print("選択 (番号):");
            hi.attack(pi, scanner.nextInt()); 
            System.out.print();//改行
            
            System.out.println("\n--- 博士の番! ---");
            System.out.println("技を選んでね:");
            System.out.println("0: 10万ボルト");
            System.out.println("1: でんこうせっか");
            System.out.println("2: アイアンテール");
            System.out.println("3: かみなり");
            System.out.print();//改行
    
            System.out.print("選択 (番号):");
            pi.attack(hi, scanner.nextInt());
            System.out.print();//改行
        }
        scanner.close();
    }
}

📒 トレーナーメモ

  • whileScanner scanner = new Scanner(System.in);の後に書くのだ!
    ⇒ 逆にすると、何回も入力機能を呼び出すことになる。1回でいい。
    scanner.close();も同様だ!!

Hint3 if文で、バトル終了の処理

BattleStage.java
package pokemon;
import java.util.Scanner;

class BattleStage {
    public static void main(String[] args) {
        Pikachu pi = new Pikachu();
        Hitokage hi = new Hitokage();
        
        Scanner scanner = new Scanner(System.in);

        while (pi.hp > 0 && hi.hp > 0) {
            System.out.println("\n--- キミの番! ---");
            System.out.println("技を選んでね:");
            System.out.println("0: かえんほうしゃ");
            System.out.println("1: ひのこ");
            System.out.println("2: なきごえ");
            System.out.println("3: ひっかく");
            System.out.println();//改行
    
            System.out.print("選択 (番号):");
            hi.attack(pi, scanner.nextInt()); 
            System.out.println();//改行
            
            if (pi.hp <= 0) {
                System.out.println("\nピカチュウは倒れた!キミの勝ちだ!");
                break;
            }
            
            System.out.println("\n--- 博士の番! ---");
            System.out.println("技を選んでね:");
            System.out.println("0: 10万ボルト");
            System.out.println("1: でんこうせっか");
            System.out.println("2: アイアンテール");
            System.out.println("3: かみなり");
            System.out.println();//改行
    
            System.out.print("選択 (番号):");
            pi.attack(hi, scanner.nextInt());
            System.out.println();//改行
            if (hi.hp <= 0) {
                System.out.println("\nヒトカゲは倒れた!キミの負けだ...");
                break;
            }
        }
        scanner.close();
    }
}

ラストバトル

私は、0 ⇒ 1 ⇒ 2 ⇒ 3 ⇒ 0 の順で技を出していくぞ!!
さあ、勝負だ!!

次回:『旅はまだ始まったばかり』

これで、大体のことはできるようになりましたね。
私に勝つことはできたかな?

さあ、いよいよパートナーポケモンと冒険に出発!
次の投稿まで――

ピッピカチュウ!!


あとがき

ここまで読んでくれて、本当にありがとうございました。

「プログラミングって難しい...」って思ってた人も、
「ちょっと楽しいかも...!」って思ってもらえたらうれしいな。

次の投稿も、よろしくおねがいします。

💬 コメント・フィードバック歓迎!

「この章わかりやすかった!」
「これ表現まちがってない?」
「次は○○をやってほしい!」などなど、
お気軽にコメントで教えてくださいね!


11
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?