14
1

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】Lv10:『選べ、キミの一撃!』〜メソッド②〜

Posted at

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

👉 【ポケモン×Java】Lv9:『新技!ピカチュウ、アイアンテール!』〜配列〜


🎮 技を使って攻撃だ!

ピカチュウはすでに4つの技を覚えた。
次は、それを実際に使って攻撃する番だ!

💡 配列 × メソッド で攻撃処理!

▷ 選んだ技で攻撃できるようにしよう!

以下のように、技のインデックス番号を指定すれば、その技で攻撃できるよ!

Pikachu.java
class Pikachu {
    String name = "ピカチュウ";
    int hp = 100;
    String[] moves = {"10万ボルト", "でんこうせっか", "アイアンテール", "かみなり"};
    int[] powers = {20, 10, 15, 30};

    void attack(Hitokage hi, int moveIndex) {
        System.out.println(name + " の " + moves[moveIndex] + "!");
        hi.hp = hi.hp - powers[moveIndex];
        System.out.println(hi.name + " に " + powers[moveIndex] + " のダメージ!");
        System.out.println(hi.name + " の HP は " + hi.hp + " になった!");
    }
}

📒 トレーナーメモ

  • attack(Hitokage hi, int moveIndex) で、相手と技の番号を指定!
  • moveIndex2 なら、「アイアンテール」で攻撃だ!

配列の構造イメージ:

index moves powers
0 10万ボルト 20
1 でんこうせっか 10
2 アイアンテール 15
3 かみなり 30

▷ 実際に使ってみよう!

BattleStage.java
package pokemon;

class BattleStage {
    public static void main(String[] args) {
        Pikachu pi = new Pikachu();
        System.out.println(); // 改行
        
        Hitokage hi = new Hitokage();
        System.out.println(); // 改行

        // 2番目の技(アイアンテール)で攻撃!
        pi.attack(hi, 2);
    }
}

▷ 出力結果

ピカチュウ がバトルに登場!
ピカ〜〜ッ!!

ヒトカゲ がバトルに登場!
カゲェ〜〜ッ!!

ピカチュウ の アイアンテール!
ヒトカゲ に 15 のダメージ!
ヒトカゲ の HP は 85 になった!

✍️ 練習

以下のコードの ??? を埋めて、ヒトカゲにも同じような攻撃メソッドを作ってみよう!

Hitokage.java
class Hitokage {
    String name = "ヒトカゲ";
    int hp = 100;
    String[] moves = {"かえんほうしゃ", "ひのこ", "なきごえ", "ひっかく"};
    int[] powers = {20, 10, 0, 15};

    void attack(??? ???, int moveIndex) {
        System.out.println(name + " の " + ??? + "!");
        ???.hp = ???.hp - ???;
        System.out.println(???.name + " に " + ??? + " のダメージ!");
        System.out.println(???.name + " の HP は " + ???.hp + " になった!");
    }
}

次回:『キミが技を選ぶ番だ!』〜Scannerで選択〜

次はついに、プレイヤー自身が技を選んで攻撃!
CUI(コンソール)から入力して、技を使い分ける仕組みに挑戦しよう!
次の投稿まで――

ピッピカチュウ!!


あとがき

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

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

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

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

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


✅ 回答例(ヒトカゲバージョン)

Hitokage.java
package pokemon;

class Hitokage {
    String name = "ヒトカゲ";
    int hp = 100;
    String[] moves = {"かえんほうしゃ", "ひのこ", "なきごえ", "ひっかく"};
    int[] powers = {20, 10, 0, 15};

    void attack(Pikachu pi, int moveIndex) {
        System.out.println(name + " の " + moves[moveIndex] + "!");
        pi.hp = pi.hp - powers[moveIndex];
        System.out.println(pi.name + " に " + powers[moveIndex] + " のダメージ!");
        System.out.println(pi.name + " の HP は " + pi.hp + " になった!");
    }
}
BattleStage.java
package pokemon;

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

        hi.attack(pi, 0); // ヒトカゲの「かえんほうしゃ」
    }
}

🔍 今のプロジェクトの様子

image.png

14
1
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
14
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?