UML Design(設計)9 〜AP設計 クラス図の作成1〜
前回作成した、役割分担よりクラスの一覧ができたので、クラスに何をさせるのか?を考えていきます。作成したクラス一覧は以下の通りです。
- A. TextRPGクラス(Main)
- B. Titleクラス(Command)
- C. CharactorCreatorクラス(Command)
- D. Dungeonクラス(Command)
- E. Utilクラス
- F. Commadクラス: コマンドの数だけ作る
ここで、注意しておきたいのが、A〜Dのクラスは全てFのクラスに入るところです。
Fのクラスは、インターフェースクラス・・・インタフェースを実装するクラスにするのでUtilクラス以外は全てCommandクラスのカテゴリに入ります。
コードで書くと下のような感じになります。
public class TextRPG {
public static void main(String[] args) {
// メインクラス
TextRPG main = new TextRPG();
// コマンドインターフェースクラス
CommandIF cmd = null;
// 標準入力
Scanner scan = new Scanner(System.in);
String input = scan.nextLine();
// 入力コマンドから完全クラス名取得
String className = main.getProperty(input);
// クラスオブジェクト取得
Class<CommandIF> clazz = Class.forName(className);
// クラスのインスタンス取得
cmd = clazz.newInstance();
// コマンドクラスの「execute()」実行
cmd.execute();
・
・
・
}
}
上のように、完全クラス名からクラスのインスタンスを取得する方法でコマンドクラスを取得、実行する形で実装しようとしています。
上記の処理の詳細はこちらの記事を参照してください。
サンプルコードはGitにアップしてあります。
PracticeJava1/Lv3_3_RefactorLv2.java at master · ZenryokuService/PracticeJava1 · GitHub
<実行結果>
クラス図
まずは、初めのメインクラス=TextRPGクラスのクラス図を作成しました。
ここでのポイントは、メインメソッドを持っているところです。
「TextRPG」はクラス名、Properties, firstFlgがある部分はフィールド変数下の部分はメソッドです。
これがクラス図の最小単位になります。このクラスが他のクラスとどのような関係を作り、想定する機能を実現するのか?
これを考えるのが設計になります。
続きは次回に。。。
でわでわ。。。
UML Design(設計)8 〜AP設計 クラス図の準備〜
今回は、クラス図の作成に向けて、必要な仕様を決めていこうと思います。 前回は、アクティビティ図でゲームの処理フローを作成しました。概要のみなので詳細がありません。
クラス図は詳細設計
クラス図を書くために明確にする事は以下のようになります。
早い話が
- どんな処理をするか?
- どんなクラス構成で実現するか?
これらを明確にすればクラス図が書けます。 今回の場合は、タイトル表示〜new game〜キャラ作成〜ゲーム開始の処理フローに着目して考えてみようと思います。
クラス図を作る
アーキテクチャ
まずは、アプリケーションの骨組み(アーキテクチャ)部分を決定する必要があります。これは、ゲームループ付きの学習用アプリのロジックを使用しようと思います。 処理フローとしては以下のようになります。
- 入力待ちを行う
- 入力された文字からコマンドクラス取得
- 入力されたコマンドに対する処理を実行
アクティビティ図で描くと下のようになります。
<アクティビティ図>
処理一覧
- 処理(ゲーム)開始時にタイトル表示
- タイトル画面でA.new game, B.continueを選択
- A.を選択した場合は、キャラ作成を行う。現状continueは保留
- キャラ作成は、名前(ローマ字)と生年月日を入力→「キャラ作成」処理参照
- ダンジョン表示(テキスト表現)
- ダンジョン内のコマンド実行
- 終了処理
とりあえずは、こんな感じで処理を行います。
役割分担をする
前提として、オブジェクト指向で作成しますので、クラス毎に役割分担をしてやります。
<処理一覧から>
- メイン処理(アーキテクチャ部分)
- タイトル表示
- キャラ作成
- ダンジョン表示
- その他ユーティリティ(便利処理)
クラス一覧
- TextRPGクラス=アーキテクチャ部分の処理(メインメソッド)
- Titleクラス=タイトル表示
- CharactorCreatorクラス=キャラ作成
- Dungeonクラス=ダンジョンの文章描画
- Utilクラス=その他ユーティリティ
- コマンドクラス=実行するコマンドのクラス
。。。のようになりました。
まとめ
クラス図の作成準備として以下の疑問点を明確にしました。
- どのようなアーキテクチャ(全体の処理フローの仕組み)で実装するか?
- 必要なクラスは何か?
そして、各疑問に対する答えは以下のようになります。
- JavaMidBasicで使用しているゲームループ処理
- 必要なクラス
- A. TextRPGクラス
- B. Titleクラス
- C. CharactorCreatorクラス
- D. Dungeonクラス
- E. Utilクラス
- F. Commadクラス: コマンドの数だけ作る
こんな感じで必要な情報が揃ったので、次回はUML(クラス図)の作成に入っていこうと思います。
でわでわ。。。
Java Console Game 〜世界観作成ドン詰まり、業界と現実世界と精神世界を考える〜
テキストRPGの仕様で「いろんな世界を行き来する」と言うのを考えています。なので「いろんな世界」と「いろんな業界」をリンクさせてゲームを作成したいと思っております。
現在(2019-09-03)、テキストRPGの仕様作成で詰まっています。「現実世界と精神世界の交差点」をテーマにしているのですが、これがなかなか難題で。。。
自分で考えておいて言うのも何ですが、結構無茶してるなぁ。なんて思っています。
しかし、ここで諦めたら男がすたるので。。。諦めずに色々と調べながらやっています。
業界のカテゴリ一覧を作る
「いろんな世界=いろんな業界」とリンクを貼るのですが、まずは情報の整理が必要だと思い、以下のようにまとめます(失敬してきました(笑))。参考にしたのはこちらのサイト(マイナビ)です。
-
- メーカー
- モノをつくる
-
- 商社
- モノを動かして利益を得る
-
- 小売
- モノを消費者に売る
-
- 金融
- お金を動かして利益を得る
-
- サービス
- かたちのないものを売る
-
- マスコミ
- 情報を大勢の人に一度に伝達して利益を得る
-
- ソフトウエア・通信
- 情報に付加価値をつけて売る
-
- 官公庁・公社・団体
- 国と地方公共団体の役所
このように、業界のカテゴリを見ていると現実世界の縮図が見えるようで面白いです。
カテゴリの一覧を出したところで、これらの世界をどのように精神世界とリンクさせるのか?が大きな問題です。。。
もともとゲームを作ろうとしているのだからゲーム的な解釈はどうだろうか?
ドラクエⅢ的に
以前、ゲームブックで下のようなものがあったので、それをプレイ(読む?)して見ました。
このゲームブックでは、ご存知の方はあれですが、地上世界と地下世界があり繋がっています。入り口になるのは「 ギアガの大穴 」で。。。と続くのですが、このような各t業界への入り口は現実の世界にはたくさんあり、その業界に入ったら(働き始めたら)その業界内での世界観が広がってくるのが現実だと思うのです。
ちなみに、小さなコミニティ(例えば、自分の仲間内とか)にも「世界観」がありその世界でコミニケーションもしくは何かのやりとりを行なっていると思います。
この「世界観の入り口」をゲームの中でどのように表現しようか?と模索中です。
何か良いアイディアはないものか?
イメージとしては、RPGよろしく「世界を旅する」と言うことなのですが、大半のものは「(クリエイターにより)創造された世界を旅する」ものだと思います。
が、しかし
今回自分がやろうとしているのは、現実的な世界(ノンフィクション小説のような世界)経由で精神世界(異世界などの小説(ライトノベル)のような世界)へ旅して回ると言うものをイメージしています。
正直のところ、とっかかりが掴めずになんか愚痴っぽくなってきてしまいましたが、何とかしてこのような物語を作りたいと思っています。
そこで業界地図
上の方に記載した業界のカテゴリが8つあります。それぞれに「世界」がありそれぞれの事業者、従業員、フリーランスの人々が活躍しているであろう世界です。
その各世界の「物語」を一人で書くのは不可能(やる気もありません)なので、そこらへんの物語を集める必要があります。ここら辺は自分が、「システム屋」なので何とかなりそうだと思っているのですが、それらの話をつなげるためのインターフェースになるもの(物語?仕組み?)がわからない状態です。
しかし、この部分をさておきにして、業界=世界と言う考え方は使えそうですので8業界の世界と異世界などの精神世界の関連を調べてみることにします。
ちょっと注意
構想を練る段階では、(自分の場合)話が大きくなる傾向にあるので、話が大きくなったら、それを分解して、実現できる所までブレーク(落とし込み)をしましょう。→ 気をつけます。。。
でわでわ。。。
Java Console Game〜仕様作成ドン詰まり、復習をする〜
イントロダクション
前回は、キャラクター作成のためのパラメータ作成部分で、「占い」が使えそうだと思い、色々と調べたことを記載しました。 しかし、答えは一向に見つからず、一旦諦めて、アプローチ方法を変えることにしました。
ファンタジーの入口
一言で「ファンタジー」と言っても千差万別なようで。。。例えば「アニメ」の世界でいえば作品の数だけ「世界」が存在しています。(もちろん想像の中ですが)しかし、星の数ほどある「世界」はやはり、今自分らが生活しているこの世界が土台になっているように思います。なぜかというと今自分らが生きているこの世界で、作られたもの(世界)だからです。
魔術
この「現実世界」から派生しアニメ・漫画の世界ができているという仮説は、的外れではないようです。というのは「魔術」の存在が上記の「空想の世界」を肯定しているように思えるからです。(あくまで自分の考えです)。
さて、魔術と聞いてみなさんはどのようなイメージを抱かれるでしょうか?手品のようなものでしょうか?人それぞれにイメージがあると思います。 自分が読んだ書籍は下の広告リンクにある本を読みました。
この本は、よくある小説のような形で話が展開するのですが、普通の高校生が「魔術」を覚え「世界を救う」という話でした。。。確か。。。ちなみに高校生の名前は「ケン」と「リュウ」です。旅先は以下の場所です。
- エジプト
- イギリスはロンドン
- アフリカ
- インド
- 中国
- 日本
実際にある建造物(有名なものです)ストーンヘンジや宗教、神話などが出てきました。
<ストーンヘンジ>
ja.wikipedia.org
そして、神話の類は以下のものが出てきました。他にもあります。 1. エジプト神話 2. ポルターガイスト 3. 錬金術 4. ギリシャ神話 5. 北欧神話 6. ケルト神話 7. 仏教・密教 8. 神仙道
魔術の現実
我々は日本人なので日本の「魔術」について記載したいと思います。そう魔術の第一人者といえば「Mr.マXXク」。。。の話ではなく、「修験道」に関して記載がありました。(広告リンクの本の内容です)
具体的な地名として山形県「羽黒山」に関して記載があり、現在は神社の公式ホームページがりました。
なんかオカルトのような話になってきてしまいましたが、実際にある話なので、ちょっと興味深いものがあります(笑)。 実際の事例で行くと、「修行のご案内」というものがあり、そこから(精神的に)一歩高いところへ行けるであろうということが伺えます。
ファンタジーと現実の交差点
上のような「話」がまさにファンタジーと現実の交差する部分だと思うのです。 これをゲームに取り込んで、世界中にある「交差点」をスマートホンから覗けるようなアプリを作りたいと思っているのです。。。がしかし、未だ道のりはとおく。。。うーん。。。
まとめ
今回は、この計画の出発点を振り返ってみました。 世界各地に、伝承があり、それを今に伝える機関、もしくは団体があり、現在進行形で動いている。ということが伺えます。
何かがつかめそうで、何もつかめてないな。。。 んーもっと復習しよう。。。
でわでわ。。。
Java Console Game〜キャラ作成、仕様作成 実装プラン2nd〜
イントロダクション
前回は、数秘術を参考にしてゲーム用のキャラクタ・パラメータを作成できないかと検討しました。
そもそもの話ですが、現実と空想の交差点をゲームに持って来たいと思っているので、「占い」はとっても魅力的なのです。
占いは「空想」だ。。。というわけではありませんが、「ここがこうなるから、このような結果になるんだ」と説明のできないことの代表格に当たると思います(暗示で予想する)。それ故に多くの人が(特に女性が多いように思います)魅了されている物事の1つだと思うので「占い」に着目した次第です。
占いとキャラクタパラメータ
キャラクターパラメータと占い。。。全く関係のないものですが。。。
色々と調べて見たのですが、未だに答えが見えません。そこでやったことを復習してみようと思います。ついでに記事にもしていなかったので記事にしてまとめようかと思います。とりあえず現状では以下のような認識を持っています。
調査の結果
自分の勝手な思い込みでは、「占い」=「人間分類学」のようになっていて分類するポイントが明らかになれば、パラメータとして使用できると思う。そして結構な割合で「現実味」が増すと思います。例えば、「XX年X月XX日に生まれた、あなたのアバター(仮)はXXXです。」その根拠は。。。と占いのように自分用のキャラクターを作成する行為はとても面白いであろうと思うのです。
そんなわけで。。。
上記の「数秘術」並びに「九星気学」などを調べてみました。数秘術に関しては左のリンク先に調査結果(各数字の意味を記載)があります。
しかし、いまいち抽象的すぎて特徴が掴めない状態にいます。
これをなんとかしたくて頭をひねっているのですが。。。
こんな時は、手当たり次第に勉強する
「 下手な鉄砲も数打てば当たる」というように、アイディアが出ないのならいろんなところからインプットしてやると解決しそうです。(思い込みか?いや、やってみればわかるだろう(笑))
とりあえずは、復習
今まで調査したもの(本)を再度眺めてみることにします。キーポイントとしては、ゲームのキャラクター・パラメータを作成するための引き出しとして見ていくことにあります。
アイディアの元
この「『現実と空想の交差点』を描いたら面白いであろう」というアイディアの元になったのは下の広告リンクですが、なかなか考えさせられました。「魔術」に関して、世界各国にその痕跡と書籍(口伝?)が残っているし、アフリカの方では法律で「魔法禁止」されているらしいです。なんでこんなことになったのか?
ファンタジーをリアルに考える
ここか出発点でした、昔システムを一個作って儲けてやろうと考え、実行に移そうとしたところ計画が不十分でやりたいことが何もできず、結局元のサラリーマンに戻った経歴のある自分は、この時の無念があり、今実行中です。
上記の経験を元に、以下のことを学んだので少しずつ、ちまちまと計画の実行中です。
- 大きなことは達成するのに時間がかかる
- 一人でできることは高が知れている、仲間と時間が必要だ
- 自分が何かを始めないと誰もついてこないし仲間もできない
- 継続は力なり
- 健康第一(心身ともに)
そんなわけで、売れるアプリを考えていたのですが、やはりモチベーションが続かないと「継続」ができないので目的を達成することができないと思うのです。
なので、目標達成するためのキーワードは「継続」にあると思います。
そして、継続するのにやることを見失ってしまうと続きません。どのように進んで良いか分からない時は、中断しなくてはなりませんので「やることを見失う」のは大きな問題です。などなど、いろんな障害がありますが、それらを解決するための手法を考えました。それは「目標達成プロジェクト」にまとめてあり、それのテストを行っている最中です。つまり、上記の理論が使えるものなのか?を実践を持ってテスト中ということです。余談でした。。。
初心に戻る
上記のように考えて、目標達成のために動き始め「面白いアプリとはなんぞや?」をずーっと考えていましたが、結局わからず「面白いと思うアプリ」をとりあえず作っていこうという判断に至り、作成しようとやり始めたら思いの外難しく、大規模なものになってしまったので、それらを分解し、1つずつ作り始めている最中です。
ゲームを作る
上記で分解したものの中にある1つが「ゲーム」です。このゲームというのは正確には「ゲーム性」であり、まともなゲームでありません。意図するところは「実際に頑張ってやったこと」を記録、履歴として残し次へのステップへつなげるためのものなのですが、しかし「継続する」ことを考えると「作業履歴をつける」という行為がつまらないと「継続する」のが難しいと思います。なので「ゲーム」なのです。
そして、参考にした書籍は下の「魔術への旅」という書籍です。すごくファンタジーで世界の文化、宗教などがよくわかる内容でした。歴史的な観点で見ても面白いと思います。
でわでわ。。。
関連ページ
- Java Mid Basic 〜Lv1Javaの基本を理解する(ゲームループ付き)〜
- Java Mid Basic 〜Lv2_Javaの基本(コードの書き方)ゲームループ付き〜
- Java Mid Basic 〜Lv2_1_Javaの基本(四則計算)ゲームループ付き〜
- Java Mid Basic 〜Lv2_2_Javaの基本(リファクタリング)ゲームループ付き〜
- Java Mid Basic 〜Lv2_3_Javaの基本(リファクタリング実践)ゲームループ付き〜
- Java Mid Basic 〜Lv2_4_Javaの基本(Dirコマンドを作る)ゲームループ付き〜
- Java Mid Basic 〜Lv2_5_Javaの基本(コマンド履歴を作る)ゲームループ付き〜
- Java Mid Basic 〜Lv2_6_Javaの基本(プロパティファイルを読む)ゲームループ付き〜
- Java Mid Basic 〜Lv2_7_Javaの基本(ファイルを読む)ゲームループ付き〜
- Java Mid Basic 〜Lv2_8_Javaの基本(Mapを使う)ゲームループ付き〜
- Java Mid Basic〜リファクタリングLv2構成を考える〜
- Java Mid Basic〜リファクタリングLv2 処理の整理とクラス分け(準備編)〜
- Java Mid Basic 〜Lv3_2_Javaの基本(リファクタリングLv2)ゲームループ付き
- Java Mid Basic〜Lv3_3_リファクタリングLv2 Mainメソッドを作る〜
- Java Mid Basic〜リファクタリングLv2 プロパティファイルで無修正ものを作る〜
Java Console Game〜キャラ作成、仕様作成 実装プラン〜
イントロダクション
前回は、仕様の作成とその前提になる部分に関して記載しました。そして、実装するのに数秘術から取得したパラメータをゲームで使用するのにはどうしたら良いか?を考えました。以下のような分類を行いそれを数秘術での分類とリンクさせようというものです。
<ゲームでの分類>
- HP: 生命力(ヒットポイント)
- MP: 魔法力(マジックポイント)
- 力: 物理攻撃力(体力テストから算出)
- 素早さ: 攻撃時に、先手を取りやすい
- 知力: 知識の応用力、パズルやナゾナゾ、問題の解決をした回数
- 協調性: 算出方法検討中、ゲーム内の「パートナー」との連携力を示す
- 行動力: 算出方法検討中、ゲーム内の魔法の効力を決定する
<数秘術での分類1: 普遍数での分類>
- 基本原理
- 心理機能
- 高次の性質
- 様相
- エレメント
- 支配星
- 人物像
<数秘術での分類2: カルマ数などによる分類>
- 人格数
- ハート数
- 運命数
- 意思数
- 特性数
- 欠落数
- 成熟数
今回はその続きです。参考にする本は以下のものになります。下のリンクは広告です。
バイト変換を使う
数字を「数値」として見た場合にこの10進数を2進数に変換することができます。※ 1byte= 8bit = 8桁の2進数 なので、例として「普遍数1」をサンプルにしてバイト変換を行なってみます。
<普遍数1> 「10進数の1」を2進数に変換すると「0000001」になります。計算方法は、こちらのリンクを参照してください。そして、上から順に7項目を割り当てます。
<数秘術: 2進数の値>
- 基本原理: 0
- 心理機能: 0
- 高次の意識: 0
- 様相: 0
- エレメント: 0
- 支配星: 0
- 人物像: 1
んー全く意味がわかりません、正直のところまだ頭をひねっていないので。。。捻ります(笑)。ポクポクポク、チーン!
はい!捻りました。以下のような方法でやろうと思います。
上記の分類は「基本原理〜人物像」は別なところで使用することにして、この本の続き部分、もっと内容を理解してからやることにします。くどいようですが、占いは全く関係ありません。
計算の結果
「数秘術」では名前などその人の情報から、以下のものを算出して占うようです。
- 人格数
- ハート数
- 運命数
- 意思数
- 特性数
- 欠落数
- 成熟数
これも7種類、ラッキーなことです。そして、付属する数値もあるようですが、とりあえず置いておきます。
バースデーサイエンス
なんでこの占いが出てきたのか?という部分に関して、以下の理由で持ってきました。
「誕生日より、人間のタイプを分類できるから」
この占いより、以下の情報を導きだします。
- ゲームの世界での職業(戦闘スタイル)
- 同様に、特殊能力の土台
上記の占いは以下のタイプで分類します。※参考サイトはこちら
<基本分類>
- 人柄重視
- 結果重視
- 直感重視
<6つのタイプ>
- レベルアップ(日々成長)型
- セーフティ(安心追及)型
- ドリーム(目標明確化)型
- オウンマインド(熟慮納得)型
- パワフル(即行動)型
- ステータス(品行方正)型
これらの要素から、以下のように割り当てて外観を決定する
<生物種>
- 人型: 通常の人間と同じ容姿の生物種です。
- 獣型: 獣の要素が混じっている生物種(獣人、竜人など)
- 妖型: 妖怪や、天使のような生物種
<戦闘スタイル>
- 無手と付随する何か(魔法・武器・トラップ)を基本とする
- 武器、道具を基本とする
- 魔法を基本とする
- トラップ、投石・弓(遠距離射撃)を基本とする
- パートナー(獣や物の怪)との連携を基本とする
- 回復魔法、医術などを基本とする
最終的に
数秘術で算出した各数字(7項目)とバースデーサイエンスより導きだしたタイプを合わせて、最終的なステータスを決定する。
しかし
今日のところは、ステータスの算出までできそうにありませんので、次回。。。
でわでわ。。。
Java Console Game〜キャラ作成、仕様作成〜
イントロダクション
今迄、Javaの基本的な事を学習(実装)しながらコンソールゲームの元を作ってきました。
ポイントとしては、Javaの基本パッケージ(JavaSE)のクラスにあるList, Map, String配列などをかいつまんで実装しました。
そして、今後の方針としては「テキストRPG」の実装に向けて必要な技術を習得しながら製造していこうという次第です。
まずは仕様を決める
プログラミングで最も難しく、楽しい部分「仕様作成」です。
まずは、作成するイメージ(やりたいことを考える時と同じ要領です。)
イメージを形にする方法
上記のリンク「やりたいことを考える」に詳細は記載していますが、大雑把におぼろげなイメージから具体的な実行するべきことを洗い出す手順を記載しています。
今回の仕様
RPGについて考えてみると、下のよう要素が必要だと思いました。詳細に関してはこちらに記載しています。
- ストーリー、世界観、などの設定(前提)
- バトルシステム、戦い(競争)のルール
- ゲーム(プレイヤー)の目的(何かを育てる、魔王を退治など)
そして、コンセプトとして配下のようなものをイメージしています。
リアルとファンタジーの交差点
「リアルとファンタジーの交差点」というのは以下のような要求から出てきました。
- ゲームと現実を部分的にリンクさせたい
- 現実で頑張ったことなどをゲームにフィードバックしたい
- ゲームとして楽しめる読み物にしたい
これらを網羅するための1番の障害となったのは「リアル」と「ファンタジー」のリンク方法でした。
ここの部分の解決策として(100%満足ではないが。。。)「世界中の神話」に着目してみました。理由は「現存する神話の足跡がある」という事実があるからです。
例として、以下のものをあげておきます。
などがあげられます。
今回作成する「テキストRPG」はゲームブックと近しいものを感じたのでサンプルに「ドラゴンクエストⅢ(ゲームブック)」をやってみました。
ゲームブックをやってみる - Takunojiのプログラミング・プレイグラウンド(遊び場)
ゲームブックをやって見る2〜テキストRPGを作るために〜 - Takunojiのプログラミング・プレイグラウンド(遊び場)
このドラゴンクエストⅢの現実との接点に関しては「ムウ」という土地(楽園)があげられます。ストーリーの中ではウワサの「ムー大陸」かどうか?に関しては触れられていません。が「連想」させるのは否めないところだと思います。結局のところは「そーかもしれない。。。」の領域を出ませんが、それはそれでよいことだと思います。
キャラク作成
正直のところ、まだ確定の領域まではきていないのですが、割と身近にあるファンタジックなものの1つとして「占い」があると思います。そして、パソコン(計算機)との相性が良い占いとして「数秘術」に着目、使用する事にしてみました。
数秘術の特徴
大雑把に、生年月日、名前などから数字を導き出して一定の法則ものと計算した結果を占いに使用するというものです。ちなみに自分は占い師ではないのであくまで「調べてみた」結果です。 この占いで導き出した「XXナンバー」が被術者の今後や運命などを決定づけるキーになります。
ゲームでの用途
上の「XXXナンバー」をゲームで使用するキャラクターのステータスや特徴に紐付けしてキャラク作成を行う想定です。
情報整理
まずは整理してどのような形で表現するか?に対する答えを出していきたいと思います。 つまり、数秘術で使用する「数字」=「占いの判定材料」を一覧化してどのような用途に使用するか?を決定していく作業になります。
数字のカテゴリ
参考にした書籍によると以下のような分類ができます。下のリンクは広告です。
<前提として書く数字は11種類ある>
- 普遍数: 数秘術で使用する土台(基本)になる数字
- 人格数: 生まれつきの性格、行動パターンなど
- 運命数: どんな生き方をするか?の特徴を示す
- カルマ的な数: カルマ数、ハート数、意思数がある
上記の分類ができるようで、ここからステータス or キャライメージに結びつけたいと思います。前提としては、表現方法が「文章」であり、「絵ではない」ところがミソです。
上の各分類の数からして、作成できる項目数は「11 x 4」の44個になります。
今回のゲーム(RPG)で使用したい項目 = 表現したいパラメータは以下の通り、なのでこれらを下のパラメータに振り分けます。
- HP: 生命力(ヒットポイント)
- MP: 魔法力(マジックポイント)
- 力: 物理攻撃力(体力テストから算出)
- 素早さ: 攻撃時に、先手を取りやすい
- 知力: 知識の応用力、パズルやナゾナゾ、問題の解決をした回数
- 協調性: 算出方法検討中、ゲーム内の「パートナー」との連携力を示す
- 行動力: 算出方法検討中、ゲーム内の魔法の効力を決定する
今のところは上記のような感じで分類しようと思っています。 となると、数が全然違うのでちょっと頭をひねります。
プログラマちっくに
上に紹介した本を見てみると普遍数の説明部分に以下の特徴を分類するカテゴリが載っています、ラッキーな事にこれが丁度7つ(笑)。でわ早速。。。
<数秘術の本>
- 基本原理
- 心理機能
- 高次の性質
- 様相
- エレメント
- 支配星
- 人物像
上記のパラメータの数が7つなので上記の普遍数を7バイトの2進数に変換します。
ちょっと記事が長くなってきたので次回に持ち越します。
でわでわ。。。
Java Console Game 〜コマンドを腐る程作る〜
イントロダクション
前回は、プロパティファイルを読み込む処理の実装をやりました。これにより、以下の事が可能になります。
1. キーにより中の値を取得する
2. つまり、文書を表示する時にロケール(ホームページなどにアクセスしてきたユーザーの国)により、英語、日本語を切り替えて表示する事も可能です。
3. 作成、学習中のコンソールアプリではコマンドに使用します。キー=コマンドとして、キーに対して色んな処理を呼び出す方法を使います。
その他、アイディア次第でいくらでも出来る事が増えます。
インターフェース
以前、リストを使ったコマンド(dir)の作成時にインターフェースを使用しました。
前回の段階では、別のクラスを1つの変数で使用出来ると記載しましたが、詳細については触れませんでした。作り方に関してはこちら
しかし一度は使って見た事があれば、インターフェースの理解も難しくないであろうと思いますので、記載します。
「インターフェースを利用するとクラスをカテゴリ毎にまとめる事が出来る」という事が今回の記載したい事です。
クラスのカテゴライズ
クラスをカテゴリ別に分類するとどんなメリットがあるでしょうか? 例えば、今現在(2019/08/14)実装しようと考えているのは「腐る程コマンドを大量生産する」ということです。 ここでのカテゴライズは「コマンド」です。「コマンドでカテゴリわけ」するということは。。。
コマンド実行する
上記の一言でいろんなコマンドが実行できれば「カテゴリわけ」の意味があると思います。 しかし、クラスを別々に作成すれば、それは別モノ。。。「なんとかならないの?」という思いに応えてくれる仕組みが「インターフェース」です。具体的には以下のように実装します。
/** コマンドインターフェース */ public interface Command { /** 実装するメソッド */ public void execute(): } /** 実装クラス1 */ public class Cd implements Command { public void execute() { System.out.println("CDコマンド"); } } /** 実装クラス2 */ public class Dir implements Command { public void execute() { System.out.println("Dirコマンド"); } } /** 実装クラス3 */ public class IpConfig implements Command { public void execute() { System.out.println("ipconfigコマンド"); } } ・ ・ ・
上記のような形でインターフェースを実装してやると。。。
public static void main(String[] args) { Command cd = new Cd(); cd.execute(); Command dir = new Dir(); dir.execute(); Command ipconfig = new IpConfit(); ipconfig.execute(); Command[] cmds = {cd, dir, ipconfig}; for(Command cmd : cmds) { cmd.execute(); } }
なんて実装も可能です。
早い話が
インターフェースを使えば、インターフェースを実装(implements)したクラスは全部インターフェースの抽象メソッドを実行できるということです。 なんか当たり前な感じですが。。。 インターフェースは、抽象メソッドのみを持っていて処理内容がありません。なのでインターフェースを実装するクラスは抽象メソッドを実装する必要があります。(実装しないとビルドエラーが出ます)
この実装を行う前に、クラスのリファクタリングをやりますので、その後に実装したものをアップロードしたいと思います。 でわでわ。。。
ゲームブックをやってみる2
ドラクエⅢ(中)
前回は、ゲームブックを購入しドラクエⅢ(上)をやり始めました。今のところの感想としては、「小説+ゲーム」な感じで、カテゴリ的にはノベルゲームになるのかな?と思っています。
昔やったファミコン版(リンクはスマホ版)の内容よりも深く世界を描いていて、単純にストーリーとして面白いと思ってます。
ゲームとして
小説として読むなら、あっちのページ、こっちのページと移動しないといけないので、読むのが面倒ですが、色んな選択肢があり、柔軟なストーリー展開が楽しめる様に出来ています。正直のところファミコン版より面白いと思います。
ポイント
- 選択して、ストーリーを進めるという要素
- 戦闘を行い、経験値とお金を取得、装備やアイテムの購入などプレーヤーの状態をなんらかの形で記録する必要がある
- 戦闘は、本の端にある数字を乱数的に扱い、ダメージ判定を行なっているので油断するとゲームオーバーになる
現在プレイ中ですが、上巻に比べ戦闘回数も増えて、ボス戦もあり、なかなか白熱していますが、1日の時間は24時間なので、ちょいとずつ進める感じです。
そして、ゲーム自体が文章なので、本に書いていない部分は全て脳内GPU(想像)を使用して描画するのですが、想像し始めるとゲームの世界が、暗闇に光を当てるかの様に見えてきます。
本の中にある挿絵が、キーポイントだと思っていますが、これの良し悪しも検討する必要があると思います。
何が問題か?
絵が入っていると、例えば魔法使いの絵とか、キャラクターの絵が入っているとその絵にイメージが持って行かれると思うのです。読み手にしては、自分で描画しなくて良いので楽かも知れませんが「自分でイメージを描きたい人」には邪魔になるのでは?とも思うのです。
右を立てれば左が立たず状態ですが、検討の余地があると思います。
最終的には「決め」の問題…つまりどっちを選ぶか?になると思うのです…悩ましい…
ですが、こういう敢えて絵を入れない…文字情報のみのグラフィックも面白いと思う次第です。
でわでわ。。。
ゲーム作りを解剖する〜RPGを切る〜
イントロダクション
テキストRPGゲームを作ろうと、以前から頭を捻っていますが、やはりアイディアが出ないし、ストーリー考えている時間もないので、考えました。昔流行った「RPG」をベースにして考えてみようと思い至った次第です。
RPG
皆さんご存知のRPGゲームを指しますが、今回参考にするのは「元祖RPG」です。TRPGと呼ばれるものとは違うであろう事に注意して頂きたい。 昔の人の文書の書き方も特徴があり、なかなか面白い調査になりました(笑)
歴史
参考サイトはWikiです。 「ロールプレイングゲーム」はもともとテレビゲームではなく、現代の「テーブルトークRPG」のようなアナログゲームでした。
分類
- 普通のRPG -> テレビゲーム
しかし、これらの中にゲームブックRPGは入らないのだろうか?
RPGとは?
「ロールプレイするゲーム」となるが、TRPGなどは「創造」しながら楽しむので「ロールプレイ」ではない様な気がしますがジャンルとして確立している以上「そーゆーもんだ」と納得してやるしかありません。因みに不満もありません(笑)
まとめ
シンプルに以下の様な特徴がある、認識になりました。
1. そのゲームには1つの「世界観」がある
2. ゲームの中にはバトルがあり「世界観」をベースにバトルが展開される
3. なんやかんやとゲーム(シナリオ)を進め、ゴール(ゲームクリア)となる。しかし、ゴールのないものもある。
必要な要素
- ストーリー、世界観、などの設定(前提)
- バトルシステム、戦い(競争)のルール
- ゲーム(プレイヤー)の目的(何かを育てる、魔王を退治など)
こんな感じです。
でわでわ。。。