🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付

👉 【寶可夢×Java】Lv11:『該你選擇技能了!』〜用 Scanner 來選擇〜


🎮 現在就把所有能做到的都發揮出來吧!

第0章~第11章辛苦了!!
可能有些說明不夠詳盡或者難度比較高,但
謝謝你一路跟到這裡。

那麼,最後就來一場激烈的戰鬥吧!


💡 把到目前為止學到的所有東西結合起來

  • 使用 Scanner 來指定技能。
  • 寶可夢可以使用四種技能。
  • 在任一方的 HP 降至 0 之前重複進行戰鬥。
  • 兩位訓練師都要選擇技能。

(給能做到的人)

  • 使用道具恢復(例如:用療傷藥恢復 HP 20!)
  • 在自己回合時,讓雙方的 HP 可以看到
  • 其實有時候 HP 會小於 0,所以要處理這種情況。
    等等...讓我們盡量接近實際的寶可夢戰鬥吧!

✍️ 練習(試著挑戰,不要看下面的提示)

提示 1 使用 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();
    }
}

提示 2 使用 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();
    }
}

📒 訓練師備忘錄

  • while 迴圈 Scanner scanner = new Scanner(System.in); 要在這行之後寫哦!
    ⇒ 反過來寫會導致多次呼叫輸入功能。只需一次就好。
    scanner.close(); 也同理!!

提示 3 使用 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 的順序發出技能!!
那麼,開始吧!!

下次:『我還在旅途的開始』

這樣大致上應該都做到了吧。
你能打敗我嗎?

那麼,終於要和夥伴寶可夢一起出發冒險了!
期待下一個投稿――

皮卡丘!!


後記

謝謝你讀到這裡。
即使是認為「程式設計好難...」的人,
也希望你能稍微覺得「好像有點有趣...!」。

希望下次的投稿也能繼續受到大家的支持。


💬 歡迎留言、反饋!
「這一章好簡單明瞭!」
「這個表達是不是有錯?」
「下次想要做○○!」等等,


原文出處:https://qiita.com/hitomin_poke/items/24b9bf90cfdeea398a70


精選技術文章翻譯,幫助開發者持續吸收新知。

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
站長阿川
📝13   💬4   ❤️4
438
🥈
我愛JS
📝1   💬3   ❤️2
46
🥉
酷豪
1
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付