プログラミンで論理回路

http://www.mext.go.jp/programin/app/

「状態がないからプログラミング難しい」「GOTOが9個しか使えないから無理」と言われたので「いや状態はあるでしょ。変数の形になってないだけで。GOTOもなくていいし」と思ってちょっといじってみた。

移動がグローバル座標系なのはどうなんだー。あと条件分岐が少なすぎて辛いね、実質的にプログラムで使えるのは衝突判定くらいか。

とりあえずNOT回路を作った

緑四角が青玉を吐きつつ、赤玉にあたったときには場所をずらすので「あたってないときに玉が飛ぶ位置」に物を置けばそれの衝突イベントは「赤玉が出ていないとき」というNOTの値になる。

お、公開すればリンクを貼れるのか http://www.mext.go.jp/programin/share/?share_id=be612f8f3bf4b925886c454813772c84 あ、でもできたアプリで遊べるだでコードを読んだり書き換えたりはできないのか。残念。

続いてAND

下の矢印から青玉、上の矢印から赤玉が出るので、その両方が緑四角にあたった時だけ紫玉を出す。

肝心のコードはこちら:

簡単にいえば緑四角は「青玉があたった時だけ上に上がって赤玉の進路に入る」&「赤玉のにあたったら(それは青玉もあたってるってことだから)紫玉を打つ」ってだけ。残りの二つのルールは緑がどっかにいってしまわないように置いてある壁(五角形・六角形)との衝突処理ね。並列実行の中に無限回実行を入れてその先頭で衝突判定を使ってwaitさせることで衝突イベントをトリガーとしたコードが書けるわけだ。


物はこちら: http://www.mext.go.jp/programin/share/?share_id=eecbde1436a30bcc6401b886ade368fe

さて、NOTとANDが作れれば二進数の足し算が出来るわけだが、もうあとは頑張るだけなのでやる気が無くなった。誰か気が向いたらやって(ぇ

参考文献: 加算器 - Wikipedia
ORはANDの入力と出力にNOTを付ければ作れる。あ、でもプログラミンではORを作るほうがANDを作るよりもコストが低いな。直接作るほうがよさそうだ。