Java ゲーム データセットを作る_WikipediaAPI 〜 魔術、宗教関連 、Javaプログラム〜

実在の魔術師

人名 説明
エリファス・レヴィ 『高等魔術の教理と祭儀』 フランス
スタニスラス・ド・ガイタ侯爵 薔薇十字カバラ会 フランス
アレイスター・クロウリー 黄金の夜明け団(GD)を経てA∴A∴(銀の星)創設。OTO(東方聖堂騎士団)英国支部MMM。 イギリス・アイルランド
アーサー・エドワード・ウェイト GD。 イギリス・アイルランド
マグレガー・メイザース GDの共同創設者、指導者。後にA∴O∴創設。 イギリス・アイルランド
ダイアン・フォーチュン A∴O∴を経て内光協会(I∴L∴)創設。『心霊的自己防衛』、『神秘のカバラー』。 イギリス・アイルランド
オースティン・オスマン・スパー 画家。短期間A∴A∴で学ぶ。ケイオスマジックの元祖。 イギリス・アイルランド
ケネス・グラント ニュー・イシス・ロッジ、後のタイフォニ その他のヨーロッパ アンOTOの首領。 イギリス・アイルランド
ウィリアム・バトラー・イェイツ GD。ノーベル賞詩人。 イギリス・アイルランド
W・E・バトラー 内光協会で学ぶ。後にSOL(光の侍従)初代学習主任。 イギリス・アイルランド
ピーター・J・キャロル(ピート・キャロル) ケイオスマジックの代表的創始者。IOT共同創設者。 イギリス・アイルランド
テオドル・ロイス ドイツ。事実上のOTO創設者。 その他のヨーロッパ
フランツ・バルドン(バードン) チェコ。死後、英訳された Initiation Into Hermetics などの三部作で知られるようになった。 その他のヨーロッパ
イスラエル・リガルディー アレイスター・クロウリーの秘書を経て、GD分派S∴M∴(暁の星)に参入。後に黄金の夜明け団の儀式公開。 アメリカ
ポール・フォスター・ケース A∴O∴シカゴ支部を経てBOTA(神殿の建設者)創立。タロット研究で知られる。 アメリカ
ジャック・パーソンズ クロウリー系OTOカリフォルニア支部アガペー・ロッジ。ロケット工学者。 アメリカ
グラディー・マクマートリー アガペー・ロッジにてOTOに参入。後にカール・ゲルマーの下で休団同然だったクロウリー系OTOを再興し、カリフェイトOTO初代首領となる。 アメリカ
ミシェル・ベルティオー(マイケル・ベルテアクス) 西洋魔術とヴードゥーを折衷。古代東方聖堂騎士団(OTOA)、黒蛇団。 アメリカ
チック・シセロ(キケロ) イスラエル・リガルディーの弟子。オリジナルGDと同名の彼の団体名 The Hermetic Order of the Golden Dawn (HOGD) は米国で商標登録されている。 アメリカ
パット・サレスキー(ザレウスキー) S∴M∴の指導者ロバート・フェルキンがニュージーランド移住後に作ったウォーレ・ラ・テンプルの団員ジャック・テイラーに学ぶ。 オセアニア

伝説上の魔女

名前 説明 血縁など 書籍 使ったとされる魔法
メーデイア ギリシア神話に登場するコルキス(現在のグルジア西部)の王女 太陽神ヘーリオスの孫であり、魔女キルケーの姪 神統記 女神ヘカテーからあらゆる魔法の薬草とその扱い方: 薬草を用いて行う魔法は、炎の勢いを和らげ、炎の勢いを和らげ、川の流れを堰き止め、星々や月の運行を妨げることが出来た
キルケー 魔女(ニュンペー)である。 を太陽神ヘーリオスと海の女神ペルセーイス(ホメーロスではペルセー)の娘で、コルキス王アイエーテースの兄弟 オデュッセイア 変身の魔法、薬草学と薬学、冥府の死霊占い、予言者テイレシアースの霊を呼び寄せて予言を得る術

古代神学者とされた人物

名前 説明 関連情報
ヘルメス・トリスメギストス 神秘思想・錬金術の文脈に登場する神人であり、伝説的な錬金術師である。「錬金術師の祖」 ヘルメス・トリスメギストスが「トリスメギストス」の名を持っている理由の説明としては、エメラルド・タブレットの「全世界の英知の三部門を知る」という記述を根拠にするものがある。この3つの分野の知識とは、すなわち錬金術・占星術・神働術である
ゾロアスター ゾロアスター教開祖、ザラスシュトラ(アヴェスター語)(ツァラトゥストラ(ペルシャ語をドイツ語読みしたもの)) ザラスシュトラはアフラ神群とマズダー(叡智)を結び付け、アフラ・マズダーとして唯一の崇拝対象とした。また、アフラ・マズダーは宇宙に秩序をもたらそうと努力していると説き、これが後に二元論に発展した
オルフェウス 、ギリシア神話に登場する吟遊詩人であり、古代に隆盛した密儀宗教(英語版)であるオルペウス教の始祖とされる。 アポロドーロスによれば、ムーサイのひとりカリオペーとオイアグロスの子として、ただし名義上の父親はアポローン神として、オルペウスは生まれたとされる

問題

ここら辺を手で調べていくと100年はかかりそうだ。。。
では、どうしてやろうか?と考えたところ。
WikipediaAPIというものがあるではありませんか!パラメータ作成ツールもある
というわけで、プログラムにここら辺の作業をやらせようと考えたわけです。

Javaプログラム

必要なもの、今回の参考にしたサイトはこちらです、Javaを使用してWebAPIにアクセス、欲しいデータの取得。。。

以上のような処理を行う処理のサンプルです。そこで使用するライブラリが「JSON」ライブラリです。
自分はMavenの方が慣れているのでPOMファイルを使用します。
POMファイルは下のように、リポジトリ要素と依存関係要素を追加してmvn installするだけです。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>ProconServerRPG</groupId>
  <artifactId>ProconServerRPG</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>プトコンゲームサーバー</name>
      <!-- ここの部分を追記 -->
  <repositories>
    <repository>
      <id>jsonRepo</id>
      <url>https://mvnrepository.com/artifact/org.json/json</url>
    </repository>
  </repositories>
      <!-- ここの部分を追記 -->
  <dependencies>
    <!-- https://mvnrepository.com/artifact/org.json/json -->
    <dependency>
        <groupId>org.json</groupId>
        <artifactId>json</artifactId>
        <version>20190722</version>
    </dependency>
  </dependencies>
  <build>
    <sourceDirectory>src</sourceDirectory>
    <testSourceDirectory>test</testSourceDirectory>
    <resources>
      <resource>
        <directory>src</directory>
        <excludes>
          <exclude>**/*.java</exclude>
        </excludes>
      </resource>
      <resource>
        <directory>resources</directory>
        <excludes>
          <exclude>**/*.java</exclude>
        </excludes>
      </resource>
    </resources>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.7.0</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

こんな感じで、参照するリポジトリと依存関係を追加します。
そしたらメイベンインストールします。実行したときにエラーが出ますが、テストクラスのエラーなので無視してOK!

テストの起動を行わない設定もあるのですが、今回は(見つからなかったので)飛ばします。

そしてダウンロードしたライブラリ(json.jar)を使用して実装します。参考サイト

Javaコードサンプル

作成したものはGithubにアップしてあります。

public JSONObject getJSON(String search) throws Exception {
    String url = ROOT_URL + "action=opensearch&format=json&search=" + search;
    System.out.println("URL: " + url);
    InputStream is = new URL(url).openStream();
     try {
          BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
          String jsonText = readAll(rd);
          JSONObject json = new JSONObject(jsonText);
          return json;
     } finally {
          is.close();
     }
}

private String readAll(Reader rd) throws IOException {
  StringBuilder sb = new StringBuilder();
  int cp;
  while ((cp = rd.read()) != -1) {
    sb.append((char) cp);
  }
  System.out.println("test: " + sb.toString());
  return sb.toString();
}

しかし、JSONが取得できない。。。

curlコマンドを使用してデータを取得してみるが、レスポンスにXMLが帰ってくるだけで、データがうまく取得できていません。

色々と試したところ、以下のようなコードでデータの取得はできました。が、検索パラメータは英語のみ。。。

いまいちな感じですが、現状の実行結果を記載します。

実行プログラム(JUnit)

@Test
public void testDownloadJSON() {
    JSONArray res = null;
    try {
        res = api.getJSON("town");
    } catch (Exception e) {
        e.printStackTrace();
    }
    res.forEach(System.out::println);
}
private void showKeysInJSONObject(JSONObject obj) {
    Iterator<String> it = obj.keys();
    while(it.hasNext()) {
        System.out.println("value: " + it.next());
    }
}

作成プログラム

public class WikiPediaApi {
    /** WikipediaのURL(エンドポイント) */
    public static String ROOT_URL = "https://ja.wikipedia.org/w/api.php?";
    public WikiPediaApi() {

    }

    public JSONArray getJSON(String search) throws Exception {
        String url = ROOT_URL + "action=opensearch&namespace=0&format=json&search=" + search;
        System.out.println("URL: " + url);
        InputStream is = new URL(url).openStream();
         try {
              BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
              String jsonText = readAll(rd);
              JSONArray json = new JSONArray(jsonText);
              return json;
         } finally {
              is.close();
         }
    }

    private String readAll(Reader rd) throws IOException {
      StringBuilder sb = new StringBuilder();
      int cp;
      while ((cp = rd.read()) != -1) {
        sb.append((char) cp);
      }
      System.out.println("test: " + sb.toString());
      return sb.toString();
    }
}

そして、実行結果

URL: https://ja.wikipedia.org/w/api.php?action=opensearch&namespace=0&format=json&search=town
test: ["town",["TOWN/\u604b\u306f\u6d41\u661f","TOWN AGE","TownsGEAR","Townbeats","TOWNS","TOWNACE","TOWN WORK","Town Memory","TOWN","TOW-NET"],["","","","","","","","","",""],["https://ja.wikipedia.org/wiki/TOWN/%E6%81%8B%E3%81%AF%E6%B5%81%E6%98%9F","https://ja.wikipedia.org/wiki/TOWN_AGE","https://ja.wikipedia.org/wiki/TownsGEAR","https://ja.wikipedia.org/wiki/Townbeats","https://ja.wikipedia.org/wiki/TOWNS","https://ja.wikipedia.org/wiki/TOWNACE","https://ja.wikipedia.org/wiki/TOWN_WORK","https://ja.wikipedia.org/wiki/Town_Memory","https://ja.wikipedia.org/wiki/TOWN","https://ja.wikipedia.org/wiki/TOW-NET"]]
town
["TOWN/恋は流星","TOWN AGE","TownsGEAR","Townbeats","TOWNS","TOWNACE","TOWN WORK","Town Memory","TOWN","TOW-NET"]
["","","","","","","","","",""]
["https://ja.wikipedia.org/wiki/TOWN/%E6%81%8B%E3%81%AF%E6%B5%81%E6%98%9F","https://ja.wikipedia.org/wiki/TOWN_AGE","https://ja.wikipedia.org/wiki/TownsGEAR","https://ja.wikipedia.org/wiki/Townbeats","https://ja.wikipedia.org/wiki/TOWNS","https://ja.wikipedia.org/wiki/TOWNACE","https://ja.wikipedia.org/wiki/TOWN_WORK","https://ja.wikipedia.org/wiki/Town_Memory","https://ja.wikipedia.org/wiki/TOWN","https://ja.wikipedia.org/wiki/TOW-NET"]



Java ゲーム作成 〜データセットを作る2(Java Batch) 〜

前回作成した、中途半端な表を完成させるのにはとても時間がかかるので、プログラムで作成することにしました。

そして、作ってみました。

その1

その2

プログラムの設計

前回は概要だけ記載しました。
しかし、このままでは意味がわからないので、下にまとめます。

設計開始

まずINとOUTを決めます。

IN: ファイルのパス
OUT: CSVファイル(書き出し)

そして、実装していきますが、はじめにテストケースを作成します。

@Test
public void testReadFile() {
    String path = "resources/csv/materialCsv/1.Asia.csv";
    target = new CSVReader();
    List<String> list = null;
    try {
        list = target.readCSVAddID(path, null);
    } catch(Exception e) {
        e.printStackTrace();
        fail();
    }
    assertNotNull(list);
    assertEquals(25, list.size());
    assertEquals(2, list.get(0).split(",").length);
}

対象のメソッド「readCSVAddID()」の第二引数は読み込んだファイルのデータにインデックスを追加するためにつけています。
そして、インデックスを追加しないときは「null」にするという仕様にしました。

テスト対象になる「CSVReader」が実装クラスです。

そして、実装したい処理をどこに書くのか?これは作成するメソッドに書きます。
なので、テストで使用する「readCSVAddID()」はメソッドの定義(中身が何もない状態)で作成します。

こんな感じです。細かい部分は実装した時の動画があるので下の動画をみていただくとわかりやすいと思います。

出力した結果

一応、CSVからマークダウンへの変換もJavaでやりました。
コードは下のような感じです。

public void convertCsvToMdTable(String path, String outPath, Integer index) throws Exception {
    List<String> csvList = this.readCSVAddID(path, index);
    PrintWriter write = null;
    try {
        write = new PrintWriter(new FileWriter(outPath));
        String sep = System.lineSeparator();
        for (String str : csvList) {
            str = "| " + str.replace(", ", " |") + " |";
            write.write(str + sep);
        }
    } catch(Exception e) {
        e.printStackTrace();
        throw e;
    } finally {
        write.close();
    }
}

1.アジア

ID CountryName AreaID
0 インド 1
1 インドネシア 1
2 カンボジア 1
3 シンガポール 1
4 スリランカ 1
5 タイ 1
6 韓国 1
7 中国 1
8 ネパール 1
9 パキスタン 1
10 バングラデシュ 1
11 東ティモール 1
12 フィリピン 1
13 ブータン 1
14 ブルネイ 1
15 ベトナム 1
16 マレーシア 1
17 ミャンマー 1
18 モルディブ 1
19 モンゴル 1
20 ラオス 1
21 北朝鮮 1
22 台湾 1
23 香港 1
24 マカオ 1

2.大洋州

ID CountryName AreaID
0 オーストラリア 2
1 キリバス 2
2 クック諸島 2
3 サモア 2
4 ソロモン諸島 2
5 ツバル 2
6 トンガ 2
7 ナウル 2
8 ニウエ 2
9 ニュージーランド 2
10 バヌアツ 2
11 パプアニューギニア 2
12 パラオ 2
13 フィジー 2
14 マーシャル 2
15 ミクロネシア 2

3.アメリカ大陸

ID CountryName AreaID
0 米国 3
1 カナダ 3
2 アルゼンチン 3
3 アンティグア・バーブーダ 3
4 ウルグアイ 3
5 エクアドル 3
6 エルサルバドル 3
7 ガイアナ 3
8 キューバ 3
9 グアテマラ 3
10 グレナダ 3
11 コスタリカ 3
12 コロンビア 3
13 ジャマイカ 3
14 スリナム 3
15 セントビンセントおよびグレナディーン諸島 3
16 セントクリストファー・ネービス 3
17 セントルシア 3
18 チリ 3
19 ドミニカ国 3
20 ドミニカ共和国 3
21 トリニダード・トバゴ 3
22 ニカラグア 3
23 ハイチ 3
24 パナマ 3
25 バハマ 3
26 パラグアイ 3
27 バルバドス 3
28 ブラジル 3
29 ベネズエラ 3
30 ベリーズ 3
31 ペルー 3
32 ボリビア 3
33 ホンジュラス 3
34 メキシコ 3

4.ヨーロッパ

ID CountryName AreaID
0 アイスランド 4
1 アイルランド 4
2 アゼルバイジャン 4
3 アルバニア 4
4 アルメニア 4
5 アンドラ 4
6 イタリア 4
7 ウクライナ 4
8 ウズベキスタン 4
9 英国 4
10 エストニア 4
11 オーストリア 4
12 オランダ 4
13 カザフスタン 4
14 北マケドニア 4
15 キプロス 4
16 ギリシャ 4
17 キルギス 4
18 クロアチア 4
19 コソボ 4
20 サンマリノ 4
21 ジョージア 4
22 スイス 4
23 スウェーデン 4
24 スペイン 4
25 スロバキア 4
26 スロベニア 4
27 セルビア 4
28 タジキスタン 4
29 チェコ 4
30 デンマーク 4
31 ドイツ 4
32 トルクメニスタン 4
33 ノルウェー 4
34 バチカン 4
35 ハンガリー 4
36 フィンランド 4
37 フランス 4
38 ブルガリア 4
39 ベラルーシ 4
40 ベルギー 4
41 ポーランド 4
42 ボスニア・ヘルツェゴビナ 4
43 ポルトガル 4
44 マルタ 4
45 モナコ 4
46 モルドバ 4
47 モンテネグロ 4
48 ラトビア 4
49 リヒテンシュタイン 4
50 リトアニア 4
51 ルーマニア 4
52 ルクセンブルク 4
53 ロシア 4

5.アフリカ

ID CountryName AreaID
0 アルジェリア 5
1 アンゴラ 5
2 ウガンダ 5
3 エジプト 5
4 エスワティニ 5
5 エチオピア 5
6 エリトリア 5
7 ガーナ 5
8 カーボベルデ 5
9 ガボン 5
10 カメルーン 5
11 ガンビア 5
12 ギニア 5
13 ギニアビサウ 5
14 ケニア 5
15 コートジボワール 5
16 コモロ 5
17 コンゴ共和国 5
18 コンゴ民主共和国 5
19 サントメ・プリンシペ 5
20 ザンビア 5
21 シエラレオネ 5
22 ジブチ 5
23 ジンバブエ 5
24 スーダン 5
25 セーシェル 5
26 赤道ギニア 5
27 セネガル 5
28 ソマリア 5
29 タンザニア 5
30 チャド 5
31 中央アフリカ 5
32 チュニジア 5
33 トーゴ 5
34 ナイジェリア 5
35 ナミビア 5
36 ニジェール 5
37 ブルキナファソ 5
38 ブルンジ 5
39 ベナン 5
40 ボツワナ 5
41 マダガスカル 5
42 マラウイ 5
43 マリ 5
44 南アフリカ 5
45 南スーダン 5
46 モザンビーク 5
47 モーリシャス 5
48 モーリタニア 5
49 モロッコ 5
50 リビア 5
51 リベリア 5
52 ルワンダ 5
53 レソト 5

関連ページ

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 〜テストスイートの作り方〜


Eclipse 使い方 〜ファイルの拡張子を設定する〜

Eclipseでファイルを開こうとした時に、HTMLエディタとかテキストエディタなど選択する方法と、リストに存在しないファイルの拡張子を追加する方法を動画にしてみました。

関連ページ

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 〜テストスイートの作り方〜


Java ゲーム作成 〜データセットを作る1 〜

ゲームを作成するために、調べたことや、まとめたことなどはデータとして持っておきたいものです。
そして、ゲームの中で使えるものは使えるようにしたいと思うのが人情だと思います。

そんなわけで、今回はCSVデータを作成しそれをDBに登録する方法に関して記載したいと思います。

前提

・DBはレンタルサーバーなどで、使用できるphpAdminなどのツールを使用している
・CSVファイルを読み込ませてDBに登録できないときは、プログラムでデータをINSERTする

まずはテーブルを考える

シンプルに、データを保存して管理するには、DBを使うのが一般的です。
今後、仕事でもDBを使用することは多くなると思います。(あてにはなりませんが、そんな気がする。。。)
というわけで、簡単にテーブルの概念を理解してCSVを作成しようと思います。

突然出てきた「CSV」は

カンマ区切りのデータが記述された、テキストファイル』です。

そして、サンプルとして以下のようなものを作りました。

ID, AreaName
1, アジア
2, 大洋州
3, 北米
4, 中南米
5, 欧州
6, 中東
7, アフリカ

世界の地域を7つに分類してあります。参考はこちらのサイトです。外務省のページなので問題ないでしょう。。。

ここで、ちょっと疑問を持ってみてください。
「左の数字派なんだ?」、「カンマ区切りの。。。はいいけどなんで区切ってるの?」。。。

これらの疑問に対する答えは、下のような目的のためです

  1. 番号(ID)を振っておくとテーブル同士を関連づけするときに楽
  2. DBのデータは「テーブル」という領域に保存されます。テーブルは「カラム」という枠を持っていてそこにデータを保存します。

具体的に。。。

TABLE名: World_Area
カラム名1: ID
カラム名2: AreaName

簡単に定義してみました。ちなみにこれらのテーブルを定義するのに使用するのは「SQL」というプログラミング言語です。こんな感じです。

テーブル名が一番上にあり、中にカラム名があります。
そしてその横には「データ型」があります。

テーブルを作成したと仮定して話をすると、作成した国名のテーブルと地域のテーブルを結合してやると国名と地域の関連付けした形の表を作ることができます。

いわゆる「SELECT文」を使用します。
「SELECT * FROM XXXX」のような形でSQLを書きます。

他にも「制約」をつけたり、色々とできますが、今の所はここらへんで。。。

データセットを作る

ちょいと作った「世界の地域」テーブル用のCSVデータは表にすると下のようになります。

世界の地域一覧

ID AreaName
1 アジア
2 大洋州(オセアニアを含む)
3 北米
4 中南米
5 欧州
6 中東
7 アフリカ

この状態では、自分の欲しい情報が何も載っていないので追加します。

国名一覧(今後更新していきます)

ID CountryName AreaID
1 アイスランド共和国 5
2 アイルランド 5
3 アゼルバイジャン共和国 5
4 アフガニスタン・イスラム共和国
$ アメリカ合衆国
6 アラブ首長国連邦
7 アルジェリア民主人民共和国
8 アルゼンチン共和国
9 アルバニア共和国 5
10 アルメニア共和国 5
11 アンゴラ共和国
12 アンティグア・バーブーダ
13 アンドラ公国
14 イエメン共和国
15 イスラエル国
16 イタリア共和国 5
17 イラク共和国
18 イラン・イスラム共和国
19 インド
20 インドネシア共和国
21 ウガンダ共和国
22 ウクライナ 5
23 ウズベキスタン共和国 5
24 ウルグアイ東方共和国
25 英国(グレートブリテン及び北アイルランド連合王国) 5
26 エクアドル共和国
27 エジプト・アラブ共和国
28 エストニア共和国 5
29 エスワティニ王国
30 エチオピア連邦民主共和国
31 エリトリア国
32 エルサルバドル共和国
33 オーストラリア連邦
34 オーストリア共和国 5
35 オマーン国
36 オランダ王国 5
37 ガーナ共和国
38 カーボベルデ共和国
39 ガイアナ共和国
40 カザフスタン共和国 5
41 カタール国
42 カナダ
43 ガボン共和国
44 カメルーン共和国
45 ガンビア共和国
46 カンボジア王国
47 北マケドニア共和国 5
48 ギニア共和国
49 ギニアビサウ共和国
50 キプロス共和国 5
51 キューバ共和国
52 ギリシャ共和国 5
53 キリバス共和国
54 キルギス共和国 5
55 グアテマラ共和国
56 クウェート国
57 クック諸島
58 グレナダ
59 クロアチア共和国 5
60 ケニア共和国
61 コートジボワール共和国
62 コスタリカ共和国
63 コソボ共和国 5
64 コモロ連合
65 コロンビア共和国
66 コンゴ共和国
67 コンゴ民主共和国
68 サウジアラビア王国
69 サモア独立国
70 サントメ・プリンシペ民主共和国
71 ザンビア共和国
72 サンマリノ共和国 5
73 シエラレオネ共和国
74 ジブチ共和国
75 ジャマイカ
76 ジョージア 5
77 シリア・アラブ共和国
78 シンガポール共和国
79 ジンバブエ共和国
80 スイス連邦 5
81 スウェーデン王国 5
82 スーダン共和国
83 スペイン 5
84 スリナム共和国
85 スリランカ民主社会主義共和国
86 スロバキア共和国
87 スロベニア共和国
88 セーシェル共和国
89 赤道ギニア共和国
90 セネガル共和国
91 セルビア共和国 5
92 セントクリストファー・ネービス
93 セントビンセント及びグレナディーン諸島
94 セントルシア
95 ソマリア連邦共和国
96 ソロモン諸島
97 タイ王国
98 大韓民国
99 タジキスタン共和国 5
100 タンザニア連合共和国
101 チェコ共和国 5
102 チャド共和国
103 中央アフリカ共和国
104 中華人民共和国
105 チュニジア共和国
106 チリ共和国
107 ツバル
108 デンマーク王国 5
109 ドイツ連邦共和国 5
110 トーゴ共和国
112 ドミニカ国
113 ドミニカ共和国
114 トリニダード・トバゴ共和国
115 トルクメニスタン 5
116 トルコ共和国
117 トンガ王国
118 ナイジェリア連邦共和国
119 ナウル共和国
120 ナミビア共和国
121 ニウエ
122 ニカラグア共和国
123 ニジェール共和国
124 ニュージーランド
125 ネパール連邦民主共和国
126 ノルウェー王国 5
127 バーレーン王国
128 ハイチ共和国
129 パキスタン・イスラム共和国
130 バチカン市国 5
131 パナマ共和国
132 バヌアツ共和国
133 バハマ国
134 パプアニューギニア独立国
135 パラオ共和国
136 パラグアイ共和国
137 バルバドス
138 ハンガリー 5
139 バングラデシュ人民共和国
140 東ティモール民主共和国
141 フィジー共和国
142 フィリピン共和国
143 フィンランド共和国 5
144 ブータン王国
145 ブラジル連邦共和国
146 フランス共和国 5
147 ブルガリア共和国 5
148 ブルキナファソ
149 ブルネイ・ダルサラーム国
150 ブルンジ共和国
151 ベトナム社会主義共和国
152 ベナン共和国
153 ベネズエラ・ボリバル共和国
154 ベラルーシ共和国 5
155 ベリーズ
156 ペルー共和国
157 ベルギー王国 5
158 ポーランド共和国 5
159 ボスニア・ヘルツェゴビナ 5
160 ボツワナ共和国
161 ボリビア多民族国
162 ポルトガル共和国 5
163 ホンジュラス共和国
164 マーシャル諸島共和国
165 マダガスカル共和国
166 マラウイ共和国
167 マリ共和国
168 マルタ共和国 5
169 マレーシア
170 ミクロネシア連邦
171 南アフリカ共和国
172 南スーダン共和国
173 ミャンマー連邦共和国
174 メキシコ合衆国
175 モーリシャス共和国
176 モーリタニア・イスラム共和国
177 モザンビーク共和国
178 モナコ公国 5
179 モルディブ共和国
180 モルドバ共和国 5
181 モロッコ王国
182 モンゴル国
183 モンテネグロ 5
184 ヨルダン
185 ラオス人民民主共和国
186 ラトビア共和国 5
187 リトアニア共和国 5
188 リビア
189 リヒテンシュタイン公国
190 リベリア共和国
191 ルーマニア 5
192 ルクセンブルク大公国 5
193 ルワンダ共和国
194 レソト王国
195 レバノン共和国
196 ロシア連邦 5

しかし、ここまでやるのに時間がかかったので、やはりプログラムで表を作成する方向にシフトしようと思います。
実際に手で作業をしてみたので、手順はすでに頭の中にあります。

問題はどのように、地域別にデータを作成するか?というところですが、こちらのページに地域別の国名リストがあるのを発見したので、こちらを失敬しようと思います。

素材のCSVファイルを作る

「素材の〜」というのは、プログラムに食わせる(渡す)ためのCSVです。
大まかな設計としては下のようなものです。

  1. 地域別のCSVを作成する
  2. 地域別のIDを付与して全ての(地域別の)CSVをまとめて1つのCSVにする

大まかな設計なので、いまいちピンと来ないと思いますが、下のように作成します。

1. 素材CSVファイルを作成する

世界の地域を7つに分けました。以下のような表になります。 ID AreaName
1 アジア
2 大洋州(オセアニアを含む)
3 北米
4 中南米
5 欧州
6 中東
7 アフリカ

そして、それぞれの地域にリンクを貼り付けておきます。
上の表地域名から参考ページに遷移できます。

CSV作成

上の名前のCSVファイルを作成します。ID=1であれば「アジア.csv」というファイルを作成します。

そしてこれをJavaプログラムに食わせます。

Javaでファイル読み込み

JUnitでのFile読み込みのテスト及びソースをこの記事に記載しています。
こんな感じでFileを読み込みます。愚多的には、全ての作成したCSVを読み、それをプログラムで整形して改めてCSVに出力します。

とりあえずは、設計がまとまらないのでここで中断します。

でわでわ。。。



Java ゲーム作成 〜ステーテス作成ロジック〜

今までに、設計してきたうちの「ステータス作成」の部分を実装したいと思います。関連する記事は以下になります。

  1. Java プロコンゲーム 〜プレーヤー生成のシュミレーション〜
  2. Java プロコンゲーム 〜プレーヤー生成のステータスについて〜
  3. Java ゲーム作成 データ作成 〜タロットカードの意味と性格〜
  4. Java ゲーム作成 〜ステータス作成 for キャラ作成〜
  5. Java ゲーム作成 〜ステータス生成処理の設計〜

ステータス作成ロジック

大まかに、手順は以下のようになります。

  1. プレーヤー(クライアントアプリ)からSocket通信でXMLデータとイメージファイルを受信。
  2. 受診したXMLから「名前(ローマ字)」と「生年月日」を取得する
  3. 数秘術のネームチャート(数字の出し方参照)から算出した数字に対応する値(マップ)を取得する
  4. 取得したマップから各値を合計する

マップの値

作成したマップは以下のようになっています。

☆数字 1 2 3 4 5 6 7 8 9 11 12 備考
目的達成
個性
自立
愛情
知識
許容
連帯感
認知
創造
リーダーシップ
真理の探究
奉仕
承認
意思貫徹
霊性
論理
空間把握
無私
自制
具現化
行動を起こす
思慮深い
表現

例えば、人格数が「1」の場合は上記の丸がついているところのステータスが3加算されます。
つまり「人格数はx3の値を設定する」というところです。

ステータス生成ロジック内容

名前と数字の変換表
1 2 3 4 5 6 7 8 9
A B C D E F G H I
J K L M N O P Q R
S T U V W X Y Z

算出方法に関してはこちらの記事を参照願います。

そして、サンプルで算出したものからステータス生成ロジックに当てはめてみます。

名前は漢字で書くと「七志野 多久之次」ですが、ローマ字で処理を行うので「Nanashino Takunoji」になります。
数秘術の変換方法はこちらの記事を参考に変換しました
その結果は以下の通りになります。

そして、運命数は生年月日から算出します。
西暦は2桁ずつ、月日も2桁ずつ。。。

ハリソンフォードの場合: 1942年7月13日
年(右): 1 + 9 = 10 => 1 + 0 =1
年(左): 4 + 2 = 6
年= 1 + 6 => 「7」
月日:7+1+3 = 「11」
運命数 = 7 + 11 = 18 => 1 + 8 = 「9」

なので、「七志野 多久之次」は2018年5月2日生まれなので(ブログ開始日)以下のような式になります。

(2) + (1 + 8) + (5 + 2) = 18 => 1 + 8 =「9」
運命数= 「9」

上のようになります。ちなみに、こちらの記事に記載していますが、ステータス生成に使用する数字をまとめると以下のようになります。

人格数=「9」( x3)
運命数=「11」 (x1)
ハート数=「9」 (x2)
意思数=「6」 (xX(X倍する))
特徴数=「1, 5」(x1)
欠落数=「4, 7」(x(-1))

ここに出てきた数字を上の表から計算します。ここはプログラムで算出したいので、現状ではからの状態にしておきます。

ステータス計算結果

  1. 目的達成 =
  2. 個性 = 0
  3. 自立 = 0
  4. 愛情 = 4
  5. 知識 = 4 + X
  6. 許容 =
  7. 連帯感 =
  8. 認知 =
  9. 創造 =
  10. リーダーシップ =
  11. 真理の探究 =
  12. 奉仕 =
  13. 承認 =
  14. 意思貫徹 =
  15. 霊性 =
  16. 論理 =
  17. 空間把握 =
  18. 無私 =
  19. 自制 =
  20. 具現化 =
  21. 行動を起こす =
  22. 思慮深い =
  23. 表現 =

プログラムの作成

UMLでの設計では下のようになっています。

なのでPlalyerStatusUtilクラスにその処理を一任しようと考えています。。。

プログラムの実装は次回というところで。。。

でわでわ。。。