ポケモンバトルをオブジェクト指向で考えてみた
こんにちは、新入社員のア行の人です。(イニシャルで書くとア行の人はア行以外の5倍バレるのでは……?)
新入社員に向けて行われるプログラミング研修では、Javaを使って学んでいきます。
Javaはオブジェクト指向のプログラミング言語といわれます。
オブジェクト指向について私の現段階の理解をもとに大雑把に説明すると、変数や関数、あるいはそれらがまとまったものといったあらゆるものをオブジェクトと称して、それらの関係・つながりを考えてプログラムを設計していくというものです。
今回はオブジェクト指向をポケモンバトルを題材にして説明しようと思います。
なぜポケモンバトルか?ポケモンのファンなので!
しかし、いざ説明するとなると途端に難しく……拙い説明かもしれませんがお付き合いいただければ幸いです。
ポケモンバトルでは、以下の要素が必要です。
- バトルシステム
- ポケモン(キャラクター)
- わざ
- タイプ
これをJavaの言い方で表すと、そのそれぞれを「クラス」といいます。
さらに、その要素の中には以下のように具体的な属性が含まれています。
- バトルシステム:例えばターン制、1vs1 / 2vs2 / 1vs2以上、途中交代有無、天候など
- ポケモン(キャラクター):例えばピカチュウなど
- わざ:例えば10まんボルト
- タイプ:例えばでんきタイプ
これをJavaの言い方で表すと、「フィールド」といいます。
ポケモンバトルでは、そうした「クラス」に働きを持たせます。
- バトルシステム:ターンを進める
- ポケモン(キャラクター):わざを使う(例えばピカチュウがコイキングに10まんボルトを当てるなど)
- わざ:威力や効果をポケモンに与える(例えば10まんボルトが当たって50ダメージを与えたうえでまひ状態にするなど)
- タイプ:タイプ相性を設定する(例えばでんきタイプのわざがみずタイプのポケモンに当たった場合に通常の2倍のダメージになるなど)
これをJavaの言い方で表すと、「メソッド」といいます。クラスにはフィールドとメソッドのどちらか一方だけがある場合があります。クラスに属性と働きを持たせることを「クラスを実装する」といいます。
Javaでは、はっきりと「○○を使います」と宣言しないとそのクラスを利用できません。
これをJavaの言い方で表すと、「インスタンスを生成する」といいます。
まとめると、
- 必要なクラスを書き出し、
- そのクラスにフィールドやメソッドを含めさせ、
- インスタンスを生成してそのクラスの中のフィールドやメソッドを利用できるようにする。
というのが、オブジェクト指向の基本になります。
編集後記
まだ習ったばかりの概念ゆえに、応用が難しかったです。
説明も要領を得ていないかもしれません。
これを研修の片手間でやるのは骨が折れます。
次にまた順番が回ってきたらもっと楽な題材にしよう……
イラスト:いらすとや(https://www.irasutoya.com/)より