前置詞
  • 基本的に名詞をともなって、後ろから主語を修飾する

前置詞句共通の性質(詳細)
+ ...
  • 前置詞の判定においては、FLOATによる影響を受けない(FEELING FLOAT等を除く)
  • 主語に対応するもの自身は判定の対象にならない
  • 引数に「A AND B」等、複数の物体を指定した場合、その全てが条件を満たすときにその前置詞句が真
  • 引数に「A AND A」等、同じ種類の物体を複数指定した場合、指定した個数分の物体が条件を満たすときにその前置詞句が真
  • 引数に「NOT ◯◯」を指定した場合、それらはORとして繋がる
  • 引数に「ALL」を指定した場合、それらはANDとして繋がる
  • 引数に「GROUP」を指定した場合、それらはANDとして繋がる
  • 「NOT 前置詞」で条件を否定した場合、「A NOT 前置詞 引数」が真となるのは「A 前置詞 引数」が偽となる場合である
    • ただし、WITHOUT, FEELINGは例外である

ON(上の)


A ON B
  • AがBと同じマスにあるとき真
    • 例. BABA ON GRASS IS DEFEAT(babaは草と重なると負ける)

NEAR(近くの)


A NEAR B
  • AがBと同じマスか周囲8マスの計9マスにあるとき真
    • 例. WALL NEAR BABA IS HEDGE(壁はbabaが近くにくると生垣になる)

FACING(正面の)


A FACING B
  • Bには、名詞の他に方向を置ける
  • Aが向いている方向に名詞Bがあるとき真
    • 例. BABA FACING WALL IS EMPTY (babaは壁を向くと消える)
  • Aが向いている方向が方向Bであるとき真
    • 例. BELT FACING RIGHT IS SHIFT (ベルトは右を向いているとシフト効果をもつ)

本編未使用語句
+ ...

NEXTTO(隣に)


A NEXTTO B
  • AがBと隣接している(上下左右4マスにある)とき真
    • AとBが重なっているときは偽

SEEING(見ている)


A SEEING B
  • AがBを見ているとき真

詳細
+ ...
次のように用語を定める
  • 遮蔽物:HIDE状態でもPHANTOM状態でもない、固体(STOP・PUSH・PULL状態)の、無でも疑似無でもない物体
  • Aの視線:Aの向いている方向の直線上のマスのうち、最初の遮蔽物までのマス(Aのマスは含まないが、遮蔽物のマスは含む)
  • AとBの間:線分AB上のマス(端点A,Bのマスは含まない)
  • 疑似無:そのマスに存在する全ての物体がHIDE状態であるようなマス
A SEEING B
以下の条件を満たすとき真
  • Bが無でないとき
    • Aの視線上にHIDE状態でないBがある
    • AとBの間に遮蔽物が存在しない
  • Bが無であるとき
    • Aの視線上に無または疑似無がある
    • AとBの間に遮蔽物が存在しない

WITHOUT(存在しない)


A WITHOUT B
  • レベル内にBが存在しないとき真
    • 自身は判定対象にならないため、「A WITHOUT A」はレベル内にAが1つ以下存在するとき真になる
A WITHOUT B AND C
  • レベル内にBもCも存在しないとき真
A NOT WITHOUT B AND C
  • レベル内にBもCも存在するとき真

ABOVE, BELOW, BESIDE←, BESIDE→(上側、下側、左側、右側)

A(xA,yA), B(xB,yB)とする。
ただし、(x,y)はレベルの左上を(1,1)とし、右に進むとx座標が増加、下に進むとy座標が増加

A Cond B
  • ABOVE : xA=xB ∧ yA<yBのとき真
  • BELOW : xA=xB ∧ yA>yBのとき真
  • BESIDE←: xA<xB ∧ yA=yBのとき真
  • BESIDE→: xA>xB ∧ yA=yBのとき真

FEELING(感じる)


A FEELING B
  • Bには形容詞のみを置ける
  • Aが形容詞Bの属性をもつとき真
A FEELING NOT B
  • AがB以外の形容詞の属性をもつとき真
A FEELING B AND C
  • Aが形容詞Bと形容詞Cの属性を共にもつとき真
A NOT FEELING B AND C
  • Aが形容詞Bの属性も形容詞Cの属性ももたないとき真

さらに詳細(v457時点:ベータテスト版)
+ ...
言葉でのいい説明が思い浮かばないので、いくつか例を挙げて説明する
注:ゲーム内では全ての(ANDを使った)ルールは「S V C + 条件」という形に分割されて処理されることを念頭に置くこと

「BABA IS YOU AND MOVE AND MOVE」「BABA FEELING NOT WIN AND YOU AND MOVE IS WIN」
「FEELING NOT WIN AND YOU AND MOVE」の処理方法を述べる
  1. ルールリストを、次のように構成する
    • 「BABA IS YOU」
    • 「BABA IS MOVE」
    • 「BABA IS MOVE」
    • 「BABA IS WIN + 条件:FEELING NOT WIN AND YOU AND MOVE」
  2. 自分自身のルール「BABA IS WIN + 条件:FEELING NOT WIN AND YOU AND MOVE」にマークをする
  3. 引数の順番を並び替え、「NOT ◯◯」の形の引数を最後に移す
  4. 1つめの引数「YOU」に対して、「YOU」の使われているルールを順番に調べる
  5. 「BABA IS YOU」が見つかる
  6. 見つかったルールにマークがついていないので、そのルールにマークをつけて、次の処理へ進む
  7. 2つめの引数「MOVE」に対して、「MOVE」の使われているルールを順番に調べる
  8. 「BABA IS MOVE」が見つかる
  9. 見つかったルールにマークがついていないので、そのルールにマークをつけて、次の処理へ進む
  10. 3つめの引数「NOT WIN」に対して、「WIN」の使われていないルールを順番に調べる
  11. 「BABA IS MOVE」が見つかる
  12. 見つかったルールにマークがついていないので、そのルールにマークをつけて、次の処理へ進む
  13. 全ての引数「YOU・MOVE・NOT WIN」に対して該当するものが見つかったので、条件「FEELING NOT WIN AND YOU AND MOVE」が真となる
  14. 「BABA IS WIN」が成立する

「BABA FEELING MOVE IS YOU」「BABA FEELING YOU IS MOVE」「BABA IS YOU」
「FEELING MOVE」の処理方法を述べる
  1. ルールリストを次のように構成する
    • 「BABA IS YOU + 条件:FEELING MOVE」
    • 「BABA IS MOVE + 条件:FEELING YOU」
    • 「BABA IS YOU」
  2. 自分自身のルール「BABA IS YOU + 条件:FEELING MOVE」にマークをする
  3. 引数「MOVE」に対して、「MOVE」の使われているルールを順番に調べる
  4. 「BABA IS MOVE + 条件:FEELING YOU」が見つかる
  5. 見つかったルールにマークがついていないので、そのルールにマークをつけて、条件を再帰的に処理する
    1. 引数「YOU」に対して、「YOU」の使われているルールを順番に調べる
    2. 「BABA IS YOU + 条件:FEELING MOVE」が見つかる
    3. このルールにはマークがついているので、次のルールを探す
    4. 「BABA IS YOU」が見つかる
    5. このルールにはマークがついていないので、マークをつけて次の処理へ進む
    6. 引数「YOU」に対して該当するものが見つかったので、条件「FEELING YOU」が真となる
    7. 「BABA IS MOVE」が成立する
  6. 引数「MOVE」に対して該当するものが見つかったので、条件「FEELING MOVE」が真となる
  7. 「BABA IS YOU」が成立する

「BABA NOT FEELING YOU IS YOU」
  1. ルールリストを次のように構成する
    • 「BABA IS YOU + 条件:NOT FEELING YOU」
  2. 自分自身のルール「BABA IS YOU + 条件:NOT FEELING YOU」にマークをする
  3. 引数「YOU」に対して、「YOU」の使われていないルールを順番に調べる
  4. 「BABA IS YOU + 条件:NOT FEELING YOU」が見つかる
  5. このルールにはマークがついているので、次のルールを探す
  6. 引数「YOU」に対して1つも該当するものが見つからなかったので、条件「FEELING YOU」が偽となる
  7. 条件「NOT FEELING YOU」が真となる
  8. 「BABA IS YOU」が成立する
  • 「BABA IS YOU」+「BABA FEELING YOU IS NOT YOU」は無限ループを引き起こすが、こちらは引き起こさない様子。

2×「BABA NOT FEELING NOT WIN IS YOU」
一方のルール(ルールA)の処理方法を述べる
  1. ルールリストを次のように構成する
    • 「BABA IS YOU + 条件:NOT FEELING NOT WIN」…ルールAと表記する
    • 「BABA IS YOU + 条件:NOT FEELING NOT WIN」…ルールBと表記する
  2. ルールAにマークをする
  3. 引数「NOT WIN」に対して、「WIN」の使われていないルールを順番に調べる
  4. ルールAが見つかる
  5. このルールにはマークがついているので、次のルールを探す
  6. ルールBが見つかる
  7. ルールBにはマークがついていないので、ルールBにマークをつけて、ルールBの条件を再帰的に処理する
    1. ルールBの引数「NOT WIN」に対して、「WIN」の使われていないルールを順番に調べる
    2. ルールAが見つかる
    3. このルールにはマークがついているので、次のルールを探す
    4. ルールBが見つかる
    5. このルールにはマークがついているので、次のルールを探す
    6. 1つも該当するものが見つからなかったので、条件「FEELING NOT WIN」が偽となる
    7. ルールBの条件「NOT FEELING NOT WIN」が真となる
    8. ルールBの「BABA IS YOU」が成立する
      • この成立はルールAの判定のためだけの成立であって、実際に成立しているわけではない
  8. ルールAの引数「NOT WIN」に対して該当するものが見つかったので、条件「FEELING NOT WIN」が真となる
  9. ルールAの条件「NOT FEELING NOT WIN」が偽となる
  10. ルールAの「BABA IS YOU」が不成立となる
    • ルールBも上と同様の手順を踏み、不成立となる

3×「BABA NOT FEELING NOT WIN IS YOU」
ルールAの処理方法を大雑把に述べる
  1. ルールリストを次のように構成する
    • 「BABA IS YOU + 条件:NOT FEELING NOT WIN」…ルールAと表記する
    • 「BABA IS YOU + 条件:NOT FEELING NOT WIN」…ルールBと表記する
    • 「BABA IS YOU + 条件:NOT FEELING NOT WIN」…ルールCと表記する
  2. ルールAにマークをつける
  3. ルールBにマークをつけて、ルールBの条件を再帰的に処理する
    • 注:ルールA,Bにマークがついた状態で、再帰処理が行われる
    1. (中略)ルールBが不成立となる
  4. ルールCにマークをつけて、ルールCの条件を再帰的に処理する
    • 注:ルールA,B,Cにマークがついた状態で、再帰処理が行われる
    1. (中略)ルールCが成立する
  5. ルールAの引数「NOT WIN」に対して該当するものが見つかったので、条件「FEELING NOT WIN」が真となる
  6. ルールAの条件「NOT FEELING NOT WIN」が偽となる
  7. ルールAの「BABA IS YOU」が不成立となる
    • ルールB,Cも上と同様の手順を踏み、不成立となる
  • 注:再帰処理時には、マークのリストのコピーが渡される。そのため、再帰処理の中で新たに付与されたマークは、再帰処理から抜けるとリセットされる。「WIN」以外のルールを順に調べていく過程では、マークのリストはリセットされない。

  • これにより、2以上の奇数個の「BABA NOT FEELING NOT WIN IS YOU」が存在するとき、それらは全て不成立となる

「BABA IS YOU」「BABA FEELING NOT WIN IS NOT YOU」
  1. 内部で「BABA NOT FEELING NOT WIN IS YOU」というルールに変換される
  2. よって上で述べた処理より、「BABA IS YOU」は成立する

「BABA IS YOU AND YOU」「BABA FEELING NOT WIN IS NOT YOU」
  1. 内部で2×「BABA NOT FEELING NOT WIN IS YOU」というルールに変換される
  2. よって上で述べた処理より、「BABA IS YOU」は成立しない

「BABA IS YOU」「BABA FEELING YOU IS NOT YOU」
  1. ルール解析時に、「BABA NOT FEELING YOU IS YOU」を作るのではなく無限ループになるルールが存在すると解析され、無限ループ処理が発生する
  2. 無限ループの判定は、前置詞の処理とは全く別

タグ:

+ タグ編集
  • タグ:
最終更新:2022年06月19日 01:19