befunge.rbでネギを振ってみた

とりあえずまともになったので作った befunge.rb にて以下を実行してみた。

動いた。ちょっと感動。(注:端末モードは sjisで)

最初のパープルで囲んだストレッチが、(7,3)からの"r s "の中身を自己書き換えで初音さんに作り変えてるところ。(7,3) は 0x0d(CR), 次(8,3)は 0x81e6 (∵)を作ってる。ので 一行クリアしてから顔(∵)を書いて手を書き込んでぇ、、、として初音さんをつくっている。
次の緑色ブロックがウェイトループ。ループ回数は紫ブロックを出た直後の 9 がそれ。ここをたとえば **999 とかにしてスピード調整(デフォルトのままだと抜けそうな勢いで腕を振ってしまうw)。
最後の青ブロックが腕を振っているところと表示するところ。(5,1)が現在の手の状態で これを [手] = 0x36 *4 - (5,1) と計算している。この定数 0x36*4 = ord('y') + ord('_') であり、これから 'y'か '_'をひくわけだから この二つを交互に繰り返すことになる。後は:でdupして、顔にくっつけて、表示する。
その後 (0, 1)のところで左に行ってまた逆(右)から出てきてループ変数初期化 & 緑色ループブロック、となる。

良く出来てるなあ。凄いなあ。