数秘術関連データ 〜生命の木、タロットカードなど〜

数秘術関連データ

普遍数

<数秘術での分類>

普遍数1=パイオニア

  1. 基本原理: 男性性、陰陽の「陽」、万物を生む因子(種子)、宗教上では、主神、全てを超越した者、モナド
  2. 心理機能: 個性、自立心、目的意識、強さ、独自性、洗濯と意思決定
  3. 高次の性質: 個性化、自分らしさ、自己主張
  4. 様相: 行動
  5. エレメント: 火
  6. 支配星: 太陽
  7. 人物像: 勝者、工程、王

普遍数2=パートナー

  1. 基本原理: 女性性、二元性、揺らぎ、想像力、内省、直感
  2. 心理機能: 協調性、人間関係、バランス、分別、正義感
  3. 高次の性質: 愛情、知恵、実りの豊かさ
  4. 様相: 周囲に配慮して振る舞う
  5. エレメント: 水
  6. 支配星: 月
  7. 人物像: チームプレーヤー、パートナー、」人生の伴侶

普遍数3=伝道者

  1. 基本原理: 結合による想像、三位一体、拡大と生成、知性と行動力の両立
  2. 心理機能: コミニケーションの欲求、心の動きを重視した自己表現
  3. 高次の性質: 愛情、知恵、実りの豊かさ
  4. 様相: 話すこと
  5. エレメント: 風
  6. 支配星: 土星
  7. 人物像: コミュニケータ、講師、牧師、ダンサー、コディアン

普遍数4=建設者

  1. 基本原理: 物質界、現実、個体、正方形と立方体、考えを形にする、人間の4機能(肉体、感情、知性、霊性)
  2. 心理機能: 自制、他人とは距離を置く、一人一人の個性を認める
  3. 高次の性質: なし
  4. 様相: 不活発
  5. エレメント: 地
  6. 支配星: 地球
  7. 人物像: 科学者、彫刻家、農業従事者、園芸家、技術者

普遍数5=自由人

  1. 基本原理: 活発、創意工夫、創造性、外交的、知識欲。多芸多才、好奇心旺盛、情報伝達力に優れる
  2. 心理機能: 充実した人生を送りたいという欲求、万人の自由の権利を守ろうとする
  3. 高次の性質: なし
  4. 様相: 想像力
  5. エレメント: エーテル(風)
  6. 支配星: 水星
  7. 人物像: 作家、詩人、幻視家、冒険家、発明家、理想主義者

普遍数6=奉仕者

  1. 基本原理: 神が創造に費やした日数、六芒星、創造性、芸術、生命のリズム
  2. 心理機能: 無私の精神を発揮する
  3. 高次の性質: なし
  4. 様相: セクシーでエロティック
  5. エレメント: 地
  6. 支配星: 金星、美、愛、平和、芸術、奉仕の星
  7. 人物像(適職): 芸術家、弁護士、外交官、ヒーラー

普遍数7=夢想家

  1. 基本原理: 地球から見える7つの惑星(日〜土)、7、チャクラ(7つ)
  2. 心理機能: 本質を追求、真理に迫る、人と神をつなぐ
  3. 高次の性質: なし
  4. 様相: 活動的、抽象的な考え方をする
  5. エレメント: 風
  6. 支配星: 海王星
  7. 人物像(適職): 哲学者、科学者、教育者、著述家

普遍数8=実業家

  1. 基本原理: 立方体、4つ目の次元に時間を加える、DNAの螺旋
  2. 心理機能: 意志力と実行力
  3. 高次の性質: なし
  4. 様相: ストイック、人の上に立つ
  5. エレメント: 水
  6. 支配星: 土星
  7. 人物像: 大企業のCEO(成功経営責任者)、金融関係者、実利主義者、裁判官

普遍数9=調停役

  1. 基本原理: 最も洗練されている、完成と終了、ミューズ(ギリシャ神話の9柱の女神)
  2. 心理機能: 控えめ、自制、無私
  3. 高次の性質: なし
  4. 様相: 行動
  5. エレメント: 火
  6. 支配星: 火星、軍神マルスの星
  7. 人物像: 改革者、人道主義、自由の闘士、理想主義者、外科、精神科医

普遍数11=幻視家

  1. 基本原理: 直感、予知、予言、霊感、真理、美、陰陽のバランス、普遍的な正義の象徴
  2. 心理機能: 高次の意識状態を洞察する
  3. 高次の性質: なし
  4. 様相: 人生の意味を考える
  5. エレメント: 水と風の混合
  6. 支配星: 冥王星
  7. 人物像: カウンセラー、叡智を授ける導師

普遍数22=設計者

  1. 基本原理: 天地を結ぶ、大きな理想を実現する、マスタービルダー
  2. 心理機能: 抽象的な考え方を具現化し人の役に立てようとする
  3. 高次の性質: なし
  4. 様相: 深謀遠慮
  5. エレメント: 火と地
  6. 支配星: 冥王星
  7. 人物像(適職): 建築家、大規模な人道支援の設立者、大学の学部長

生命の木

No. ヘブライ語 エジプト9栄神
1 ケテル(王冠) オシリス(遊離)
2 コクマー(知恵) ホルス(進入)
3 ビナー(理解) ゲブ(開放)
4 ケセド(慈悲) バステト(探索)
5 ゲブラー(峻厳) セト(分割)
6 ティファレト(美) クヌム(混合)
7 ネツァク(勝利) トト(混乱)
8 ホド(栄光) アヌビス(卓越)
9 イェソド(基礎) アトゥム(総括)
10 マルクト(王国) オシリス(遊離)

タロットとパス

No. タロット ヘブライ文字
0 愚者(進入) アレフ
1 魔術師(開放) ベート
2 女教皇(摂取) ギーメル
3 女帝(着座) ダレット
4 皇帝(接近) ヘー
5 法皇(探索) ヴァヴ
6 恋人(許容) ザイン
7 戦車(分割) ヘット
8 力(管理) テット
9 隠者(選出) ヨッド
10 運命の車輪(巡回) カフ
11 正義(連結) ラメド
12 吊られた男(順応) メム
13 死神(誘発) ヌン
14 節制(吸収) サメフ
15 悪魔(制御) アイン
16 塔(累積) ペー
17 星(浄化) ツァディー
18 月(脱出) コフ
19 太陽(融和) レーシュ
20 審判(補強) シン
21 世界(変容) タヴ

四柱推命関連のデータ1〜運命数表、十干十二支など〜

日本推命協会というサイトがある。
運命数表一番下の方にあります。

運命星表

運命星 運命数
比肩星 5.26.35.51.52.56.57.58
劫財星 43.49.54.60
食神星 14.23.39.40.44.45.46.53
傷官星 31.37.42.48
偏財星 2.11.27.28.32.33.34.41
正財星 19.25.30.36
偏官星 15.16.20.21.22.29.50.59
正官星 7.13.18.24
偏印星 3.4.8.9.10.17.38.47
印綬星 1.6.12.55

表2

干支 属性 陰陽
子(ね) 水の五行 (+)
丑(うし) 土の五行 (-)
寅(とら) 木の五行 (+)
卯(う) 木の五行 (-)
辰(たつ) 土の五行 (+)
巳(み) 火の五行 (-)
午(うま) 火の五行 (+)
未(ひつじ) 土の五行 (-)
申(さる) 金の五行 (+)
酉(とり) 金の五行 (-)
戌(いぬ) 土の五行 (+)
亥(い) 水の五行 (-)

十干

十干 属性 陰陽
甲(きのえ) 木の五行 (+)
乙(きのと) 木の五行 (-)
丙(ひのえ) 火の五行 (+)
丁(ひのと) 火の五行 (-)
戊(つちのえ) 土の五行 (+)
己(つちのと) 土の五行 (-)
庚(かのえ) 金の五行 (+)
辛(かのと) 金の五行 (-)
壬(みずのえ) 水の五行 (+)
癸(みずのと) 水の五行 (-)

五行陰陽

五行
甲(きのえ) 丙(ひのえ) 戊(つちのえ) 庚(かのえ) 壬(みずのえ)
乙(きのと) 丁(ひのと) 己(つちのと) 辛(かのと) 癸(みずのと)

陰陽五行

子(水) 寅(木) 辰(土) 午(火) 申(金) 戌(土)
丑(土) 卯(木) 巳(火) 未(土) 酉(金) 亥(水)

通変星:四柱推命の根幹をなす重要な星です。

- - -- -- -- -
吉星 食神 偏財 正財 正官 印綬
凶星 劫財 傷官 偏官 偏印
自星 比肩

十二運星:運勢の強弱、盛衰

- - -- -- --
長生 沐浴 冠帯 建禄 帝旺

強弱に分けると次のとおりです。

- -- - - --
強勢 帝旺 建禄 長生 冠帯
中勢 沐浴
弱勢

十干と方角・季節:

- - - - -- --
甲乙 丙丁 戊己 庚辛 壬癸
方角 中央 西
季節 土用

十二支と方角・季節

12 1 2 3 4 5
23~1 1~3 3~5 5~7 7~9 9~11
方角 中央 中央
季節 土用 土用
6 7 8 9 10 11
11~13 13~15 15~17 17~19 19~21 21~23
方角 中央 西 西 中央
季節 土用 土用

運命数表(サンプル)

1926(昭和元)年~1945(昭和20)年生まれ

「生まれた年」と「生まれた月」が交わる数字を導き出してください。

西暦 26年 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
1月 27 32 37 43 48 53 58 4 9 14 19 25 30 35 40 46 51 56 1 7
2月 58 3 8 14 19 24 29 35 40 45 50 56 1 6 11 17 22 27 32 38
3月 26 31 37 42 47 52 58 3 8 13 19 24 29 34 40 45 50 55 1 6
4月 57 2 8 13 18 23 29 34 39 44 50 55 60 5 11 16 21 26 32 37
5月 27 32 38 43 48 53 59 4 9 14 20 25 30 35 41 46 51 56 2 7
6月 58 3 9 14 19 24 30 35 40 45 51 56 1 6 12 17 22 27 33 38
7月 28 33 39 44 49 54 60 5 10 15 21 26 31 36 42 47 52 57 3 8
8月 59 4 10 15 20 25 31 36 41 46 52 57 2 7 13 18 23 28 34 39
9月 30 35 41 46 51 56 2 7 12 17 23 28 33 38 44 49 54 59 5 10
10月 60 5 11 16 21 26 32 37 42 47 53 58 3 8 14 19 24 29 35 40
11月 31 36 42 47 52 57 3 8 13 18 24 29 34 39 45 50 55 60 6 11
12月 1 6 12 17 22 27 33 38 43 48 54 59 4 9 15 20 25 30 36 41

六十干支(各項目の占い判定サンプル)

  1. 甲子(きのえね) 素朴でまじめな人で、記憶力や数字に強い一面を持ち合わせていますが、楽天主義のため挫折に弱い一面もありす。

  2. 乙丑(きのとうし) 基本的には派手さを好まない温厚な性格で、控えめですので敵を作ることはありませんが、好き嫌いははっきりしています。 

  3. 丙寅(ひのえとら) 社交的に見え、人を率いる面もありますが、意外と繊細な部分があるためリーダーとしては弱いところも...。

  4. 丁卯(ひのとう) さっぱりとした性格で負けず嫌い、度胸もあるため普通の人を軽視するところから波乱を起こしてしまう傾向に。

  5. 戊辰(つちのえたつ) 勘の良いタイプですがソフトな印象を与え優柔不断や八方美人に見えるところがあり、情に流されやすいところも特徴です。

  6. 己巳(つちのとみ) 人当たり良く適度に批判することもあります。芸術的センスを兼ね備えビジネスでも器用にやりこなします。

  7. 庚午(かのえうま) どことなくミステリアスな部分があり、調和を欠きやすい傾向にあります。あなたの特性を生かした職に就くことで力を発揮することができるでしょう。

  8. 辛未(かのとひつじ) 真面目にコツコツ努力をしていける人で、仕事場でも縁の下の力持ちの位置がよく似合います。

  9. 壬申(みずのえさる) 神経質で、社交性も低い印象です。義理人情よりも実利を優先する見方に捉えられることも。

  10. 癸酉(みずのととり) 感受性が強くデリケートな一面から孤立することもありますが、人情があり世話好きの性格を活かせば成功することができます。

  11. 甲戌(きのえいぬ) 権力を嫌う性格。また、地味で控えめな人でもあります。周りの人のことを考えて気遣いするため、誠実な印象を与えます。

  12. 乙亥(きのとい) 理屈っぽいところもありますが、知性を感じさせる人です。正義感ある所も特徴ですが挫折に弱い一面も...。

  13. 丙子(ひのえね) 容姿端麗、頭脳明晰な人が多く、淡泊でぶっきらぼうな一面もありますが、家庭を守り切る誠実さもあります。

  14. 丁丑(ひのとうし) 好き嫌いがはっきりとした一面とは裏腹に、おっとりとした品格ある風貌です。協調性と粘り強さで世渡り上手になれそうです。

  15. 戊寅(つちのえとら) 基本的には挫折の多い人生となりがちですが、努力を続けていくことで成功を掴むこともできるのです。

  16. 己卯(つちのとう) 明るくさっぱりとした性格です。どんなことも器用にこなすため、さまざまな分野で活躍することができます。

  17. 庚辰(かのえたつ) 若い時は尖っていても年々丸くなっていく性格です。また着実にじわじわと物事をこなしていきます。

  18. 辛巳(かのとみ) 押しの強さと度胸があり、さまざまな事を独断で行おうとする人です。人の感情をくみ取る努力をしていきましょう。

  19. 壬午(みずのえうま) とっつきにくさはありますが、案外人情家です。知的好奇心が旺盛、発想がユニーク、多趣味、大器晩成型です。

  20. 癸未(みずのとひつじ) 周囲の動きを冷静に観察し、保守的なところがあります。またさまざまなアイデアを出したり企画するのが得意なのでプレゼンにも向いています。

  21. 甲申(きのえさる) 研究や学問などの世界で活躍できる性質があり、温厚で素朴な性格から、人間関係をスムーズに調整する能力に長けています。

  22. 乙酉(きのととり) ワイルドさ+知性を持つ不思議な人柄です。ヒラメキには乏しいですが、合理的な見方をするため信頼感は抜群です。

  23. 丙戌(ひのえいぬ) 温厚で人情的なため敵は少ないです。また自分の世界や理想を強く持っているため、周りにデリケートな印象を与えます。

  24. 丁亥(ひのとい) 性格は個性的なのに温厚で人当たりもいいです。合理的にものを考えやすく、直感で勝負する仕事では力を発揮できません。

  25. 戊子(つちのえね) 人情よりも自分の信念を通すところが偏屈な人と思われやすいようです。良くも悪くも思ったことを口にしてしまいます。

  26. 己丑(つちのとうし) 数字に強く情報収集能力もあり、鋭い観察眼があるゆえに保守的な傾向もあります。

  27. 庚寅(かのえとら) ユニークなアイデアマンですが人生波乱万丈の傾向があります。大組織より、小組織や自営業で力を発揮することができます。

  28. 辛卯(かのとう) 情緒不安定なところもあり、情に厚く人を管理するのに長けています。

  29. 壬辰(みずのえたつ) 常識的で冷静に相手を観察する鋭い目を持っています。また聞き上手で保守的に行動します。

  30. 癸巳(みずのとみ) 冷たい印象を与える人ですが、基本的には律儀な性格です。仕事は熱心に取り組み真面目ですがコミュニケーション不足なところもあります。

  31. 甲午(きのえうま) ガッチリとした体型の人が多く、素朴で明るい性格で人気を集めます。リーダーというよりかは二番手の補佐役がピッタリで協調性を持つと出世します。

  32. 乙未(きのとひつじ) 温厚で楽観的なのに義理人情にも厚く、律儀な性格なので人から信頼されやすい人です。組織の中では人と人を繋ぐ潤滑油的な役割がよく似合います。

  33. 丙申(ひのえさる) 短気な一面もありますが純朴な印象です。内面は意外とデリケートなので、理解してくれる人がいると成功します。

  34. 丁酉(ひのととり) 基本的には気さくで温厚な人柄ですが、なぜか周囲から浮きやすく孤立することがあります。専門技術を持つことで晩年には成功できるでしょう。

  35. 戊戌(つちのえいぬ) ものごとを知的に判断し、ワンマン体制の中で能力を発揮するタイプなので周囲と意見をすり合わせるとなおいいでしょう。

  36. 己亥(つちのとい) 知的+COOLな外面とは逆に情に厚いところがあります。要領の良い方ではありませんが、組織の参謀役として力を発揮します。

  37. 庚子(かのえね) 知性と教養を兼ね備え、努力を惜しまない人です。男性はきりっとした風貌で、女性に優しいジェントルマンが多い傾向に。

  38. 辛丑(かのとうし) 腰も低く一見愛想がいいように見えますが、実はプライドが高く理想主義者です。仕事には忠実に取り組みますが、独立心も多いことから会社勤めよりも自営業で力を発揮しやすいでしょう。

  39. 壬寅(みずのえとら) 鋭い視線でものごとの真実をつかむ能力があります。警戒心が強く、ワガママで短気な一面もあります。

  40. 癸卯(みずのとう) 社交性+精神の繊細さを持っています。組織の中では割と平和的にやっていける人なのでトラブルも少ないでしょう。

  41. 甲辰(きのえたつ) 柔和で控えめな態度から、多くの人に親しまれす。どのような組織でも重宝され、またコツコツと努力を続ける大器晩成型が特徴です。

  42. 乙巳(きのとみ) 天才的な発想と実現力を兼ね備えた実力があります。社会では浮きやすいところもありますが補佐役を得る事で実力を発揮します。

  43. 丙午(ひのえうま) 正義感があり、どっしりとした風格をしています。理論的で博識的なところもありますが、気分の上がり下がりも多い傾向です。

  44. 丁未(ひのとひつじ) 直観力があり周囲の空気を読みながらものごとを進めていく特徴もあり、基本的に親しみやすい人柄で、人の面倒見もいい方です。

  45. 戊申(つちのえさる) ワイルドな雰囲気の人が多いです。コツコツと一つのことを貫く努力家で、争いを好まない平和主義者。

  46. 己酉(つちのととり) 基本的に負けず嫌いで努力を惜しまない人ですが自分にも他人にも厳しい性格からチームワークを乱すことも...。仕事の確実さや気配りを活かせる職種を選ぶと◎。

  47. 庚戌(かのえいぬ) やさしすぎて決断出来ないところもありますが、ほぼ円満な人生を送ります。思いやりにあふれた人で芸術的センスを持っています。

  48. 辛亥(かのとい) 目的が定まれば人目を気にせず、さらに手段を選ばず突き進んでいく底力があります。人一倍プライドが高い人です。

  49. 壬子(みずのえね) 人を才能の有無で判断する傾向があります。また、一見近寄りがたい雰囲気ですが、案外バランスの取れた人です。

  50. 癸丑(みずのとうし) 前向きで過去にこだわらない性格です。また、穏やかな雰囲気でまるで少年のように純粋な心を持ち、ヒラメキに沿った行動をします。

  51. 甲寅(きのえとら) 真面目で飾り気がありません。官僚系組織の中ではよく活躍しますが、情緒性に乏しいところがあります。

  52. 乙卯(きのとう) 仕事と家庭、趣味などうまく両立する人が多い傾向です。温和な人柄ですが、意外と合理的にものを考える所もあり冷たく感じられることも。

  53. 丙辰(ひのえたつ) 考えたことを実行するパワーに欠ける傾向もあります。性格も開放的で朗らかですが、シャープな感性を持合わせています。

  54. 丁巳(ひのとみ) おっとりしている雰囲気で人を惹きつけますが、以外に運動神経がよく、反発心や闘争心も適度にあります。

  55. 戊午(つちのえうま) 若いうちは失敗も多いですが、年を取るにつれて社会での価値が上昇傾向に。さっぱりとした一本気のある性格で、誠実さが◎。

  56. 己未(つちのとひつじ) 人からよく信頼され、良好な人間関係を築けます。また、おぼこい印象を与えることもありますが、人間味溢れる人柄です。

  57. 庚申(かのえさる) 目的のためなら努力を惜しまず、現実的な実行力があるため組織の中では出世しやすい方です。頑固で理想の高い人です。

  58. 辛酉(かのととり) おおらかな人柄ですが、几帳面な一面もあり慎重で石橋をたたいて渡るようなところも...。社会では補佐的役割として能力を発揮します。

  59. 壬戌(みずのえいぬ) 人情+リーダーシップもあるので上司からの信頼を集めます。謙虚で庶民的な印象がありますが、恋なども直感的な駆け引きが得意です。

  60. 癸亥(みずのとい) 冷たい印象ですがハートは熱い人。社交性があり平和主義で人間関係は良好ですが、人の管理は苦手のようです。



ゲーム作成のための調査 〜占いの項目をリストアップする〜

RPG的なゲームを作成しようとしていて、そのために色々と調べる必要が出たので調べることにしました。

調査する内容おに関しては、以下の通りです。

  1. カバラ: 数秘術
  2. 四柱推命: 命式

これの算出方法を調べ流必要があります。

以前数秘術に関しては調べました。

数秘術に関して

色々と調べましたが、数秘術で算出できるのが以下の項目です。数秘術調査の詳細に関してはこちら

  1. 普遍数
  2. 運命数
  3. 人格数
  4. ハート数
  5. 運命数
  6. 意思数
  7. 特性数
  8. 欠落数
  9. 成熟数

そして、四柱推命を調べる

この調査の目的は、算出した「命式」からプロパティの対象になる項目を導き出すことにあります。
数秘術で上のような項目(プロパティ)を算出したらこれらの項目をゲームプレーヤーの「ステータス」に還元します。

同様に、四柱推命でも同じことを行います。
ステータスとして算出するものが多いですが、これらは、プログラム側で計算するためのデータで、プレーヤー側には見えない想定です。

調べる前に。。。

調べた内容に関して、必要な情報などをCSVファイルなどに保存したいのでAtomを使用してドキュメントの作成も行います。
なのでAtomの使い方も調べました。

Markdownを使う

AtomでPDFを出力する方法に関して調べました。簡単にPDF出力できたのであとはどのようなドキュメントを作成するか?というところに至ります。

明確にしたいことをリストアップ

明確にしたいこと、目的を明確にします。

今回の調査では、四柱推命から命式を算出してからプレーヤーが使用するキャラクターのステータスを作成することにあります。
数秘術も合わせて算出するので、元になるデータも揃える必要があります。

データに関して

データというのは、数秘術も四柱推命もプロパティというか、いわゆるシンボルから「これは〜な傾向がある」というような言い方をするので、これらのシンボル一覧を作成する必要があります。

そのほかにも参照するべきものがあるので、それらをまとめてデータ化する必要があります。

それらを手で行うのは大変なので、HTML読み込みをして必要なデータを取得するプログラムも作成しました。

  1. Java HTML解析 〜Wikipedia 武器 ページの解析〜
  2. Java HTML解析 〜Wikipedia 武器 ページの解析2〜

ちょっと中途半端ですが、集めた情報をどのように出力するか?が未決定なので、このような状態です。

目下の目的

とりあえずは、CSVファイルを作成する方向でいきます。
CSVファイルにしてしまえば、DBにもインポートできるので、プログラムで扱いやすくなります。

ある程度の手作業は仕方ないのかもしれません。

今回はこの辺で。。。

でわでわ。。。



Java プロコンゲーム 〜Socket通信を実装する〜

イントロダクション

前回は、Socket通信の設計を行いました。
今回は、プロコンゲーム(プログラミングコンテスト向けゲーム)の作成を続きでSocket通信の実装を行います。

そして、前回作成した処理順を見ながら作成します。

処理フロー

Server

  1. サーバー起動、受付開始
  2. クライアント受付、プレーヤー登録
  3. スタートボタン押下
  4. バトルMapの表示
  5. キャラクター(Playerなど)配置
  6. クライアントへのレスポンス送信
  7. リクエスト受信
  8. 各キャラクターの操作と描画
  9. 操作後の情報をクライアントへレスポンス送信
  10. 7〜9を繰り返す

Client

  1. プレーヤー定義情報の読み込み
  2. サーバーへの接続
  3. プレーヤー定義情報の送信
  4. サーバーからのレスポンス受信
  5. 何かしらの処理(今後設計する)
  6. サーバーへリクエスト送信
  7. 4〜6を繰り返す
  8. 終了コマンドを受け取った時にアプリ終了

そして、自分の反省も踏まえ、設計をしないとどうなるか。。。以下に記載します。これも前回記載しています。

プログラムの実装の前に

前回、プロコンアプリを作成した時には、設計を行わないで実装したので、汚いソースができました。これらのコードは Githubにアップしてあります。

以前作成したゲームループ処理の記事もあるので参考にどうぞ。

ゲームループの実装イメージ

ServerSocketの実装

処理フローの通りに実装して行きます。
なので、とりあえずは入れ物→メソッドから作成して行きます。参考にするのはUMLクラス図です。

ここのConstructorと書いてあるのは「コンストラクター」で、このクラスのインスタンスを生成する時に実行する処理になります。
とりあえず、すぐに実装できるところは実装して見ます。実装してみると「あ、これも必要だな・・・」というところに気がつきます。とりあえずはプロコンサーバークラスのコードです。(第一段)

public class ProconServer extends Application {
    /** アクセスキー */
    public static final String ACCESS_KEY = "LetItBe";
    private SocketController serverSocket;

    @Override
    public void start(Stage primaryStage) throws Exception {
        // FXMLのロード
        Parent baseNode  = FXMLLoader.load(getClass().getResource("/ProconServer.fxml"));
        Scene scene = new Scene(baseNode);
        scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
        primaryStage.setScene(scene);
        primaryStage.show();

        // サーバーソケット作成
        serverSocket = new SocketController();
        // プレーヤー受付開始
        serverSocket.execute();

    }

    public static void main(String[] args) {
        try {
            launch(args);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

そのほかのクラスもありますが、その部分はクラス図と合わせて次回記載します。

補足

下の方に、補足情報を記載しておきます。
今までの記事(プロコンサーバー作成)にも記載している内容です。参考にどうぞ。

JavaFXの基本的なところ

細かい書き方などは下のリンク先に記載しています。

  1. UML 世界を作る 〜RPGでの世界を作る場合〜
  2. UMLの書き方(読み方)〜概要とクラス図〜
  3. UMLツール Star UML〜ユースケース図を書いて見た〜
  4. UMLツール 〜Star UMLを使う〜

javaFXはフレームワークです。なのでとりあえず下のように作成しました。参考にどうぞ。
JavaFXのパッケージにあるjavafx.application.Applicationを継承して作成します。
ここで、上のクラスを継承して実装することにより、画面表示を行うための細かい処理(Xサーバーへのアクセス及び、描画処理)を自分で作成しなくてよくなります。

つまり、作成するアプリに集中できるわけです。
その代わり、このフレームワークの使用方法を理解する必要があります。「JavaFXの〜」にあるリンクからOracleのドキュメントページに遷移できます。

自分の作成した記事は以下になります。
初心者でもわかる。。。というより作って動かして。。。とやってみるのが一番なのでその手順と実装サンプル、動かしてみたときのイメージを記載しています。

  1. JavaFX チュートリアル〜今度こそ、初めてでも大丈夫:Label〜
  2. JavaFX チュートリアル〜今度こそ、初めてでも大丈夫2:Label〜
  3. JavaFX チュートリアル〜今度こそ、初めてでも大丈夫3:Button〜

プロジェクトの作成方法

  1. プロジェクトエクスプローラーを右クリックします。
  2. JavaFXプロジェクトを作成します。
  3. プロジェクト名をつけます。使用するJDKは1.8です。JShellとか使用する予定がないので。。。

作成したプロジェクトは下のような感じです。

以前追加した、シーンビルダーというプラグインが入っているので、使用します。下は操作したときの動画です。今回作成するものではありませんので。。。

そして、作成したものは、下のような見た目です。

作成したときの動画は以下になります。途中で落ちましたが(笑)とりあえずは、使用するPCのスペックでメモリ不足(だと思う)により落ちる可能性があるので、File -> Save Asなどで時々保存すると良いと思います。

SceneBuilder

SceneBuilderは下のように作成しました。
SceneBuilderのセットアップはこちらを参照ください。

前回SceneBuilderを使用して作成した、FXMLは下のようEclipseのリソースフォルダへコピーしてプログラムから参照できるようにします。

まとめ

今回は、Socketを使用して実装するのにどう処理を行うかを考えました(設計しました)。
実装してみれば、Socket通信に関して理解ができると思います。
そして、低レベルAPIなので現在使用されるほとんどのデータ通信の土台になります。

つまり、ここがわかれば、他も理解できるということです。

今回はここら辺で。。。
でわでわ。。。

次回;Java プロコンゲーム 〜プレーヤー生成の設計準備〜

関連ページ

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 プロコンゲーム 〜Socket通信を設計する〜

今回は、プロコンゲーム(プログラミングコンテスト向けゲーム)の作成を続きでSocket通信の設計を行います。

フローチャート

「フローチャート」を作成し処理の流れを可視化します。
今回作成するSocket通信の役割は、大まかに以下のようなものです。

  1. 通信してプロコンゲームの受付をする。
  2. ゲーム開始後にプレーヤーの挙動を受信、画面上の操作を行い、レスポンスをクライアントアプリに返す。

上のようなイメージです。なので前回作成した画面部分から今度は処理部分(画面表示なし)を作成します。

最終的には画面を起動してSoket通信を起動して、画面の表示と通信を同時に行う予定です。(マルチスレッド処理)

Socket通信とは

「通信」と名前がついているので、何かしらの通信を行うであろうと想像はつくと思います、しかし、HTTP通信とか、TCPとか、XML、JSONとか。。。
どれよ?と思う人も多いでしょう(自分は頭から煙を吹いていました(笑))

通信を行うときは、どの通信処理でも最終的に「TCP/IP」で通信を行います。特殊なものを覗きますが。。。だいたいJavaで実装するとか、JSなど最近の言語であればほぼTCP_IPの通信になります。

そして、TCP/IPはデータを送信するためのポートから対象になるURLやIPアドレスに向けて送信します。

URL(文字列)は最終的にDNSで変換されてIPアドレスになるので、結局は 指定されたIPアドレスに送信されるというわけです。

細かい話をしましたが、早い話がポートから対象のアドレスへデータを送信します。
この時に使用する「ポート」これを「ソケット」と呼びます。つまり「Socket通信」を行うというわけです。

早い話

通信処理の中でも低レベルな通信方法で、大体の通信処理は実装可能という事です。

Scoketクラスとは

いろんな言語で「ソケット通信」用のクラス、がAPIとして用意されています。当然Javaにもあり、それは「低レベルAPI」と呼ばれる部類に入ります。
つまりは、やりたい放題なAPIというわけです。*その代わり実装する量が多くなります。
Javaで使用するSocketクラスはファイル入出力の処理に似ています。
Fileの作成、読み取り、書き込みこれらの処理で使用する「ストリーム」を使用して通信を行うためです。
なのでFIleクラスの扱い方を理解しているとあとあと楽ができます。

Socketの実装

まず、Socketには2種類あります。以下に示すようにサーバーとクライアントがあります。*JavaDocへのリンク

  1. Socket
  2. ServerSocket

Socketクラスは、ソケット通信を送信ためのクラスで、クライアントプログラムになります。つまり、リクエストを送信し、レスポンスを受け取る側のプログラムです。

以下のような処理を行います。

  1. 送信するポートを指定
  2. 対象のサーバーに接続
  3. リクエストの送信
  4. レスポンスの取得

ServerSocketの実装

それに対してServerSocketはサーバーサイドプログラムで、レスポンスを返す側のプログラムです。
なので使用するときは、単純に、ServerSocketクラスのインスタンスを作成し、通信を待ち受けます。

まとめると以下のような処理です。

  1. インスタンスの生成、待ち受けるポートの指定
  2. リクエスト受信の待機

そして、待ち受けはリクエストを受けたら。。。なにがしかの処理を行うので、ゲームループと同じような実装を行い、サーバーを終了させるには別の手段が必要になります。
例えば、『リクエストの「bye」という文字を受信したらプログラムを終了する』というような処理です。

プログラムの実装の前に

前回、プロコンアプリ(U16-プログラミングコンテスト)を作成した時には、設計を行わないで実装したので、汚いソースができました。これらのコードは Githubにアップしてあります。

以前作成したゲームループ処理の記事もあるので参考にどうぞ。

ゲームループの実装イメージ

なので、設計から入り、どの様に実装するのか?を明確にして実装します。

更に、各処理の仕様を作ってから開発するので、テスト駆動開発でやります。*テスト駆動開発をやってみた時の記事へのリンクです。

Socket通信の設計

UMLに追記する形で、設計を行います。
大まかに下のような形で設計しました。

詳細は、以下の通りです。

とりあえずは、ServerSocketから実装し行きますが、受信ポートと、受付処理の実装を行うのでそこの部分をメソッド、クラスに分担してやるように設計します。

実装イメージを考える

ServerSocketの実装は上記の通りに以下のようになります。

  1. インスタンスの生成、待ち受けるポートの指定
  2. リクエスト受信の待機

なので、受付した時のイメージファイルの取得とかデータからプレーヤステータスの作成とか細かい部分に関しては、ServerSocketを実装するクラスで行いたくありません。

具体的には、下のように
JSONを使用してデータの通信を行います。
これは、JavaだけでなくPythonや C#などの多言語での実装を可能にするためです。

なので、PlayerDataクラスをJSONにコンバートして送受信します。送受信するJSONのデータ形式に関しては、ドキュメントにて実装者にわかるようにします。

しかし、設計を進めていく中で、クラスをクライアントからサーバーへ送信したいと思い、その様な設計にしたので現状はしJavaでのみ通信可能な設計になっています。

処理フロー

Server

  1. サーバー起動、受付開始
  2. クライアント受付、プレーヤー登録
  3. スタートボタン押下
  4. バトルMapの表示
  5. キャラクター(Playerなど)配置
  6. クライアントへのレスポンス送信
  7. リクエスト受信
  8. 各キャラクターの操作と描画
  9. 操作後の情報をクライアントへレスポンス送信
  10. 7〜9を繰り返す

Client

  1. プレーヤー定義情報の読み込み
  2. サーバーへの接続
  3. プレーヤー定義情報の送信
  4. サーバーからのレスポンス受信
  5. 何かしらの処理(今後設計する)
  6. サーバーへリクエスト送信
  7. 4〜6を繰り返す
  8. 終了コマンドを受け取った時にアプリ終了

上のような感じで処理を行おうと考えています。

下の方に、補足情報を記載しておきます。
今までの記事(プロコンサーバー作成)にも記載している内容です。参考にどうぞ。

UML の基本的なところ

細かい書き方などは下のリンク先に記載しています。

  1. UML 世界を作る 〜RPGでの世界を作る場合〜
  2. UMLの書き方(読み方)〜概要とクラス図〜
  3. UMLツール Star UML〜ユースケース図を書いて見た〜
  4. UMLツール 〜Star UMLを使う〜

UML で大まかな設計をして、使用するクラスの一覧を作ってしまいます。

画面作成JavaFX

javaFXはフレームワークです。なのでとりあえず下のように作成しました。参考にどうぞ。
JavaFXのパッケージにあるjavafx.application.Applicationを継承して作成します。
ここで、上のクラスを継承して実装することにより、画面表示を行うための細かい処理(Xサーバーへのアクセス及び、描画処理)を自分で作成しなくてよくなります。

つまり、作成するアプリに集中できるわけです。
その代わり、このフレームワークの使用方法を理解する必要があります。「JavaFXの〜」にあるリンクからOracleのドキュメントページに遷移できます。

自分の作成した記事は以下になります。
初心者でもわかる。。。というより作って動かして。。。とやってみるのが一番なのでその手順と実装サンプル、動かしてみたときのイメージを記載しています。

  1. JavaFX チュートリアル〜今度こそ、初めてでも大丈夫:Label〜
  2. JavaFX チュートリアル〜今度こそ、初めてでも大丈夫2:Label〜
  3. JavaFX チュートリアル〜今度こそ、初めてでも大丈夫3:Button〜

プロジェクトの作成方法

  1. プロジェクトエクスプローラーを右クリックします。
  2. JavaFXプロジェクトを作成します。
  3. プロジェクト名をつけます。使用するJDKは1.8です。JShellとか使用する予定がないので。。。

作成したプロジェクトは下のような感じです。

以前追加した、シーンビルダーというプラグインが入っているので、使用します。下は操作したときの動画です。今回作成するものではありませんので。。。

そして、作成したものは、下のような見た目です。

作成したときの動画は以下になります。途中で落ちましたが(笑)とりあえずは、使用するPCのスペックでメモリ不足(だと思う)により落ちる可能性があるので、File -> Save Asなどで時々保存すると良いと思います。

SceneBuilder

Java FXでの画面作成ツールです。ボタン押下時の処理などは別途実装が必要になります。

SceneBuilderは下のように作成しました。
SceneBuilderのセットアップはこちらを参照ください。

前回SceneBuilderを使用して作成した、FXMLは下のようEclipseのリソースフォルダへコピーしてプログラムから参照できるようにします。

まとめ

今回は、Socketを使用して実装するのにどう処理を行うかを考えました(設計しました)。
実装してみれば、Socket通信に関して理解ができると思います。
そして、低レベルAPIなので現在使用されるほとんどのデータ通信の土台になります。

つまり、ここがわかれば、他も理解できるということです。

今回はここら辺で。。。
でわでわ。。。

関連ページ

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