Java オブジェクト指向 〜テキストRPGキャラクター作成(戦士)〜

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

今までにやってきたものは下関連ページに記載しております。

コンセプト

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

ここでいう基本は。。。

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

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

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

RPGキャラクター

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

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

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

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

ゲームのプレーヤーは、主人公になりゲームを進めていきます。仲間もいますが、まずは主人公にスポットを当てて考えます。

戦士を作る

「ドラクエの主人公」と言えば「勇者」ですが、勇者はなんでもできるので、出来る事が多く、実装がややこしくなりそうなので、わりかし簡単そうな「戦士」から入っていこうと思います。
今回作成する「戦士クラス」は戦士をTRPGや作成するゲームでも使用することができるようなものを作成します。なぜかというと「プログラム」なので使えないと話にならないからです(笑)

操作する人から考える

当然ゲームなので「操作する人」がいます。そして、操作する人が「勇者」「戦士」「魔法使い」などになるわけです。なので今回はこれらの「登場人物」のうち「戦士」に関して記載します。※くどいかもしれませんが。。。

そして「操作する人」をクラスで表現すると下のようになります。前提としては以下の通りです。

操作するプレーヤーはHPとMPを使用してキャラクターを操作する方向性を決めます。そして、キャラクターの強さの指標としてレベルを見ます。

public class Player {
   private int hp;
   private int mp;
   private int level;
}

上のコードは、全てのプレーヤー(操作する人)が持っている情報を表すものです。クラスの中にメンバ変数を持たせてデータを保持します。

そして、実際に動かす「戦士」に関しては、プレーヤーに操作されるので下のようにクラス同士の継承関係を作ります。また、行動するときに使用するコマンドは、「たたかう」「ぼうぎょ」「どうぐ」「とくぎ」です。

public class Fighter extends Player {
   /** たたかう */
   public void attack() {
   }
   /** ぼうぎょ */
   public void difence() {
   }
   /** どうぐ */
   public void item() {
   }
   /** とくぎ */
   public void specials() {
   }
}

プレーヤークラスにはメンバ変数を、戦士クラスにはメソッドを作りました。メンバ変数は、保持するデータを格納できます。

また、作成したメソッドはメンバメソッドと言いクラスの振る舞いを作ります。

まだ、各コマンド(メソッドの処理)の詳細が決まっていないので、から実装になります。
そして、UMLで表現すると下のようになります。

こうして、「絵」にしてみると色々とイメージが湧いてくると思います。そして、プログラミングの面白いところはまだまだ序盤です。

今回はここまでにしておきます。

次回 Java オブジェクト指向2 〜テキストRPG NPCを作る〜

でわでわ。。。

関連ページ

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 4〜Boolean〜
  5. Java Basic Level 5〜If 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 9〜Training 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などもやります。

コメントを残す