予約語を使った占い
「全自動4コマ」では、特殊な「予約語」も存在しています。その中で、今回は姓名判断を行う「予約語」について説明します。
「予約語」$seimei[s]
を利用すれば、$key
の文字列の画数を判定して、各種姓名判断を行うことができます。姓名判断用の「予約語」$seimei[s]
は、s
の位置に指定する文字列によって、違う結果に置換されます。
以下、s
に代入する文字列と、置換結果を表で示します。
値 | 置換結果 |
ten_str | 天格 文字 |
ten_no | 天格 画数 |
ten_res | 天格 結果 |
ti_str | 地格 文字 |
ti_no | 地格 画数 |
ti_res | 地格 結果 |
jin_str | 人格 文字 |
jin_no | 人格 画数 |
jin_res | 人格 結果 |
gai_str | 外格 文字 |
gai_no | 外格 画数 |
gai_res | 外格 結果 |
sou_str | 総格 文字 |
sou_no | 総格 画数 |
sou_res | 総格 結果 |
姓名判断を知らない人のために、一般的に行なわれる姓名判断の処理手順(アルゴリズム)を説明します。
姓名判断では、まず名前を「姓」と「名」の2つのブロックに分けます。その際、1つのブロックに1文字しかない場合は、仮字と呼ばれる「画数が1の仮想の文字」を追加します。
そして、2つのブロックの各文字列の画数を求めます。次に、その画数の組み合わせで、天格、地格、人格、外格、総格の5つのパターンの合計画数を求めます。最後に、それぞれの画数を元に運命表を参照して結果を取得します。
運命表は、画数にあたる1~nの整数と、その数字に対応する占い結果をまとめた表です。これは、画数がnを超えた場合は1に戻って計算をしなおすループ処理になっています。例えば、nが50の場合で画数の合計が53の場合は、運命表の3の場所を参照します。運命表は流派によって違いがあり、nの数字も50や60などのバリエーションがあります。
以下、姓名判断の処理手順(アルゴリズム)を、流れに沿って示します。
- 名前を、姓と名の2つのブロックに分割する。
- 各ブロックの文字が1文字の場合は、仮字(○)を外側に(姓の場合は文字列の先頭に、名の場合は文字列の末尾に)追加する。
- 各文字の画数を求める。
- 天・地・人・外・総の各格の画数を計算する。
- 天格として、姓ブロックの文字列の画数を合計する。
- 地格として、名ブロックの文字列の画数を合計する。
- 人格として、姓ブロックの末尾の文字と、名ブロックの先頭の文字列の画数を合計する。
- 外格として、姓ブロックの先頭の文字と、名ブロックの末尾の文字列の画数を合計する。
- 総格として、すべての文字列の画数を合計する。
- 天・地・人・外・総の各格の画数を元に、運命表を参照して占い結果を取得する。
天・地・人・外・総それぞれの格の意味は、次のとおりです。
格 | 占いの意味 |
天格 | 成功運 |
地格 | 人生の前半の運勢 |
人格 | 人生の全般の運勢 |
外格 | 人格の補助として利用 |
総格 | 人生の後半の運勢 |
これらの処理手順や画数の数え方、運命表の吉凶の結果は流派によって異なります。「全自動4コマ」の姓名判断では、いくつかの流派の方法を参照して、大体標準的な結果になるように、プログラムと運命表を作っています。
また、外格を利用するには、人間の微妙な判断が必要になりますので、「全自動4コマ」では割愛しています。
以下、記述例と、その結果を示します。
s($keyの成功運を表す天格は「$seimei[ten_str]」で $seimei[ten_no]画\n$seimei[ten_res]);
s(翔泳 太郎の成功運を表す天格は「翔泳」で 20画\n優秀な指導者になる 大吉);
また、実際に出力した例を示します。
//
//$list_title=姓名判断 簡易編
//
bg(255,255,167);
bs(b,r);
p(ura_5.gif,0,0);
s(姓名判断だ!\n$keyを占うぞ!);
f(7,50,45,n);
s(今日は本格的に\n占いをしよう);
f(7,10,50);
bg(255,185,185);
fl(80,50);
p(ura_2.gif,0,0);
s(成功運を表す天格は「$seimei[ten_str]」で$seimei[ten_no]画\n$seimei[ten_res]);
f(7,10,55);
bg(168,227,255);
fl(80,50);
p(ura_2.gif,0,0);
s(人生の前半を表す地格は「$seimei[ti_str]」で$seimei[ti_no]画\n$seimei[ti_res]);
f(7,10,55);
bg(255,209,165);
fl(80,50);
p(ura_6_s.gif,0,0);
s(人生の後半を表す総画は$seimei[sou_no]画で\n$seimei[sou_res]\n今後の参考に\nしてくれたまえ!);
f(7,10,55);
この機能を利用して、簡単に占いコンテンツを作成できます。