Java オブジェクト指向5 〜テキストRPG Bodyクラスを作る〜

以前、テキストRPGを作成する方向でJavaの基本に関して記載しました。
しかし、学習順序を、ちょいと飛ばしてしまったように思い。追記する次第です。

今までにやってきたものは下関連ページに記載しております。
まとめると、ミニゲームを作成する中でJavaの基本を理解していこうというものです。ちなみに「基本」と言ってもいろんな意味があるので、詳細はオブジェクト(クラス)を組み合わせてどんなものを作っていくか?を考えるための基本というところです。

ここでいう基本は。。。

クラスを作成して、クラスとクラスの関連をどのように作り、どのような形で動かしたら良いか?

を考えるための基本になります。
作成途中になりますが、イメージとしては下のような感じです。そしてこのような「絵」のことをUMLを呼びます。全世界共通語ですので、言葉が通じなくてもこのUMLでの会話であれば全世界共通です。

参考に「デザインパターンなどを調べてみるのも1つです。このデザインパターンというのは現代ではすでに常識(JavaAPIで実装済)なので、意識して使用することは少ないかもしれません。

RPGキャラクター

RPGと言ってもいろんなRPGがあるのですが、ここではテキストRPG(TRPG)を考えていこうと思います。具体的には下のようなキャラクター(職業?)がいます。

  1. 勇者
  2. 戦士
  3. 僧侶
  4. 魔法使い
  5. 商人
  6. 遊び人
  7. 賢者

テキストRPGは文言のみでストーリー、ゲームを進行していきます。絵がないので、UI(ユーザーインターフェース)は人間の「想像力」になります。世界最高のGPU(グラフィック・プロセッシング・ユニット)を使用したゲームということになります(笑)。

「RPGのキャラクター」と一言で言ってもイメージがぼやけてしまうので、考える(言葉の)範囲を絞っていきます。RPGの中の「ドラゴンクエスト」を土台にして考えます。

前回は、PC(PlayerCharactor)を作成する方向で進んで、戦士を作成(中途半端ですが)できたので、詳細部に突入いたします、つまりBody(体)を作成します。

Bodyを作る

PlayerCharactorクラスのフィールド(プロパティ)にBodyクラスを定義しました。

Bodyクラスは、「体」を表し、装備する武器、防具を設定するためのクラスです。また、ステータス(強さ、体調)や精神を持っています。
「精神」に関しては、科学的な証明ができない認識なので下の格言に従い、Bodyクラスで保持することにしました。

健全なる精神は健全な肉体に宿る

具体的に、Bodyクラスは以下のプロパティを持っているとします。

  1. 頭(頭部につける装備をセットするスロット)
  2. 武器(武器装備用のスロット、両手を使用する武器を持った時は盾が装備できないなど判定した上で武器をセットできる)
  3. 補助武器(手で考えると聞き手の反対側、両手を使用しない時には盾を装備できる)
  4. 胴体(胴体、腹回りを示す。主に鎧などを装備するスロットとして使用する)
  5. あし(両足よう防具を装備するためのスロット)
  6. ステータス(体調、毒、病気、目くらましなど体調の状態を表す。また各職能の熟練度を表す。)
  7. 精神(霊などの実体を持たないキャラクターに関してはBody#isIntamgible=trueに設定する。
    また、神、上級悪魔など実体を持つ精神体はSprit#isEntity=trueに設定する。)

上のクラス図に「isIntagible」を追加しています。
英語の意味は「実体のない」ということなのですが、「実体がある」というフラグを持っているのもおかしいだろうと思い、このようなフラグを持つことにしました。
クラス図にすると下のようになります。

このような、設計部分で「どうあるべき?」というのを開発メンバーで議論できるととても面白いと思います。

とりあえずは

今回も、中途半端な感じですが、一旦ここで考えを止めます。
「中途半端」が続いていますが、これは世間でよくいう「アジャイル」とか「イテレーション開発」という開発方法です(現状は設計のみですが。。。)
最終的には「動かしてみないと話にならない」ということがあるので、「まずは動かす」ということを目標に作成しています。しかし、あまりにも的外れでは「設計」の意味がないので、「ある程度」→「中途半端な感じ」になっているわけです。

ちょっと言い訳臭かったですが。。。

次は何を考えるか?

次は、精神に関して考えます。精神は、みんな大好き「魔法、呪文、霊能力」という未知の領域に直結するものなので、工夫を凝らしていこうと思います。
それこそ、議論がしたいところです(笑)。
開発メンバー一人なので。。。(泣)

精神の定義

精神は、その人の性格、(心の)世界、自然(精霊や神など)とコンタクトを取るための「マナス」を持っている

こんな風に定義しても、性格〜マナスまで表現することができません(笑)
なので、工夫してみました。テキストRPGなので、ほぼ小説と同じように『「読者」に伝われば良い』というところに重きを置き。。。

  1. 「性格」→「信条」「信仰」「キャラクターの物語」
  2. 「(心の)世界」→「信条」「信仰」「キャラクターの物語」
  3. マナス」 → 考え中

上記のように表現し、ゲームのプレーヤーに想像してもらえるような情報を保持するようにしようと考えています。
そして、忘れてはいけないのが、魔法の類です。
これらのスキルを使用するためには、いろんな条件があると思いますが、それらの条件を満たす、もしくは満たしたことを示す「もの」を定義する必要があります。

「魔法の類」の定義について

精神に関してもそうですが、未知の領域なのでなんともし難いのですが、世の中は広いので「その類」の情報も(ネットに)落ちていました(笑)。

ここら辺に関しては、長くなってしまうのでこちらのページに記載しました。

そんなわけで、上のリンク先の情報(調査結果)を踏まえて「精神クラス」の定義をしていこうと思います。

今回も、中途半端ですが。。。
今回はここまでにしておきます。

でわでわ。。。

関連ページ

Java Basic

  1. Java Basic Level 1 Hello Java
  2. Java Basic Level2 Arithmetic Calculate
  3. Java Basic Level3 About String class
  4. Java Basic Level 4Boolean
  5. Java Basic Level 5If Statement
  6. Java Basic Summary from Level1 to 5
  7. Java Basic Level 6 Traning of If statement
  8. Java Basic Level8 How to use for statement
  9. Java Basic Level 8.5 Array
  10. Java Basic Level 9Training of for statement
  11. Java Basic Level 10 While statement 
  12. Java Basic Swing〜オブジェクト指向〜
  13. Java Basic Swing Level 2〜オブジェクト指向2
  14. サンプル実装〜コンソールゲーム〜
  15. Java Basic インターフェース・抽象クラスの作り方
  16. Java Basic クラスとは〜Step2_1
  17. Java Basic JUnit 〜テストスイートの作り方〜

<ins class="adsbygoogle"
style="display:block"
data-ad-format="fluid"
data-ad-layout-key="-6t+ed+2i-1n-4w"
data-ad-client="ca-pub-7367785927150581"
data-ad-slot="3284986237">

投稿者:

takunoji

音響、イベント会場設営業界からIT業界へ転身。現在はJava屋としてサラリーマンをやっている。自称ガテン系プログラマー(笑) Javaプログラミングを布教したい、ラスパイとJavaの相性が良いことに気が付く。 Spring framework, Struts, Seaser, Hibernate, Playframework, JavaEE6, JavaEE7などの現場経験あり。 SQL, VBA, PL/SQL, コマンドプロント, Shellなどもやります。

コメントを残す