Takunojiのプログラミング・プレイグラウンド(遊び場)

Javaプログラミングを基本にして、ゲーム作成に必要なことの調査結果、やったら面白そうなことなどを記載します。プログラミングのススメ的なことも記載します。プログラミングで楽しく遊ぶために色々と記載して行きます。

UML Design(設計)7 〜AP設計 アクティビティ図〜

今回は、テキストRPG的にダンジョン探索を行うものを作る方向で考えようと思います。考えている事がデカすぎたようで、まずは。。。というとこから始めようと思います。

今迄にクラス図の作成を一通りやりました。なのでこちらも交えつつ。。。

ダンジョン探索

ゲーム的には、キャラが1面(1F)から最後まで進んで行きボスと対決、勝利でクリアのように、シンプルな形で実装しようと思います。この部分だけ見るとつまらなそうで自分は、色々考えましたが結局答えは出ず。。。やってから考えようとなりました。

ダンジョンは、ランダムに生成するタイプではなく、決まった形のタイプで作成しようと思います。

キャラ作成

ここは今迄考え出たものと変わりません。

占いx社会人基礎力をベースにします。

しかし、社会人基礎力は偏りがあり、適当ではないので9つの知性のページを参考にパラメータを割りふろうと思います。

Java Console Game〜仕様作成ドン詰まり、現実のパラメータから解決へ〜 - Takunojiのプログラミング・プレイグラウンド(遊び場)

プログラム設計

まずは、キャラ作成から始めたいと思います。

キャラ作成には、入力として「名前(ヘボン式ローマ字)」と「生年月日」を入れます。

そうすると、以下のようなフロー図が描けます。これはアクティビティ図です。

黒丸が開始点です。終了処理に関しては記載していません。 

f:id:Takunoji:20190910212523p:plain

サンプルUML

こんな感じで、処理のイメージを作成しておくと後の工程が楽にできます。

不明点について

今回は、ダンジョン探索のゲームを作成する想定ですが、最終的には今まで考えていたものにしていきたいと思っています(決まらない点が多すぎて問題ありですが。。。)

なので「仕様変更をする」前提でアプリケーションの設計をしていきます。

オブジェクト指向で作成すると自然と仕様変更に強いアプリができます。

なので「不明点」はあとで考えれば良いように作成するにはどうしたら良いか?を考えながらいきます。

ややこしいのでは?

上に『「不明点」はあとで考えれば良いように作成』と記載しましたが、

正しくは『各処理を独立させて作成』するにはどうしたら良いか?を考えながらいきます。わかりやすいと思ってそのように記載しました。

処理を独立させるには?

「処理を独立させる」と記載しましたが、これは具体的には以下のようになります。

追伸、上記のUML図を基本にして記載します。これはサンプルコードです、起動確認していないので、写経しても意味がありません。

public class TextRPG {
   public static void main(String[] args) {
TextRPG main = new TextRPG(); // タイトル表示の処理
boolean isContinue = main.viewTitle();
// プレイヤーのデータクラス
PlayerData data = null;
if (isContinue) {
// コンテニューの時の処理
data = main.continue()
} else {
// ニューゲーム
data = main.newGame();
} // ここに入力〜結果表示の処理(無限ループ)
main.startGame(data); } }

 ここのポイント

上のUMLの「new game」=「main.newGame()」「continue」=「main.continue()」「start」=「main.startGame()」に対応している(想定)というところです。

「コードで作成する=処理フローを考える」という関係が(実質上)成り立つのでこのように設計することができます。もちろん他の方法(設計)もあるし、他にもっと良い設計があると思います。あまり深く考えないで作成したもので。。。

一旦、紙や画面上に描画(UMLツール, 紙と鉛筆など)してみるとポロンと答えが出てくることもあると思います。

ちなみに自分は出てきました。(笑)

こんな感じで作成していこうと思います。

アクティビティ図について

今回作成したのは、UMLの中にある「アクティビティ図」になります。これは大まかな処理(人の動きも含む)を一緒に描くことが可能です。今回は画面の中で完結してしまうので人間の動きは出てきませんでした。

 

でわでわ。。。

 

関連ページ