Zenn
✡️

MistelとPila~魔法陣言語Gr3のデザイン的特異性

2025/03/31に公開

この記事は

10才からはじめられる(かもしれない)魔法陣プログラミング

の補足記事です。

別記事にした理由

筆者が製作中の魔法陣言語Gr3(グリム)は、ただ魔法陣を使ったプログラミングが出来るだけでなく、

  • デザイン性
  • 自由度

においても他の言語とは独自色を打ち出すように設計してます。
簡単に言うと「カッコよく、かつ自分好みの魔法陣を配置できる」ようになっており、
それでいて最低限可読性、「見やすさ」も維持しています。

具体的に言うと普通に書いたら

のようになる魔法陣を

のように書き換えても動作するように、です。
(なおこれは初期案なので今後デザインは変更になる予定)

これを実現するためにGr3にはMistel(ミステル)とPila(ピラ)という、この言語特有の独自機能があります。

Mistel

例えばJavasやC言語などで使われる

for(i=0;i<10;i++){
 if(a==0){
 処理1
  }
}

のような{}の入れ子構造を、Gr3では魔法円(クライス)に小さな魔法円をつけることで表現してるのですが、
それだと円同士の置ける位置が限られ自由度が損なわれます。
かといって円の間隔を離してしまうと、どの小円がどの大円と入れ子なのかという親子構造が分からなくなります。

それを解消するため、Gr3にはMistel(ミステル:ドイツ語でヤドリギの意味)という機能があって

このように親子関係の円を移動させると棒状の枝が伸び、接続が分かるようになってます。
実際に現存する魔法陣にも似たような表現があって、現行のGr3では未実装ですがイラストのようにMistel上にコメント文字を表記できる仕様にする予定。

関連記事
https://grandseacrow.hatenablog.com/entry/2025/01/17/113714

Pila(とPila-B)

同じく魔法円の配置に関連する表記ですが、今度は親子関係でなく並び順。
魔法円クライスを自由に配置できるがゆえに、あちこちに移動させるとどの順番で実行されるかがわからなくなります。

それを解消するのがPila(ピラ:ドイツ語で槍の意味)と呼ばれる、白で接続された曲線。
なお当初は矢印にする予定だったのですが、それぞれの魔法円にローマ字表記の番号を振ることで順序が分かるようにしています。

そして、この曲線ですが曲がり具合を変えたり、あるいは直線で接続したりと微調整をかけるための機能がPila-B(ピラ-べー。BはBiegenビーゲン、ドイツ語で曲げるの意味)

二次元ペジェ曲線の特性を利用した機能で、灰色■で表記されたこれらをドラッグで動かすことにより

このように曲がり具合の調整が可能です。

関連記事
https://grandseacrow.hatenablog.com/entry/2025/01/18/082231
https://grandseacrow.hatenablog.com/entry/2025/01/28/081550

最後に

とまあGr3独自の機能を紹介しましたが、この魔法陣の表記機能設定ごと保存・再現ができるのがこの言語の強みです。すべては浪漫のために。

開発過程をブログで公開中!
https://grandseacrow.hatenablog.com/

Discussion

ログインするとコメントできます