プチコンで遊ぼう! (はてなブログ版)

任天堂3DSのプチコンで遊ぼう! [twitter:@eida_s]

はてなダイアリーから移行しました。 はてなダイアリーのURLを開いても自動的にこちらにリダイレクトされますのでご了承ください。

タートルグラフィックス for プチコン

簡易的なタートルグラフィックスをプチコンで実現するプログラムを書きました。

五芒星も簡単に描けます。

上から2行目の「RP 5 FW 50 RT 144 ER」がこれを書くプログラムです。それ以降は実行過程の表示となります。

さらに中央が交差していない星も簡単です。

普通にBASIC等の言語でやろうとすると座標計算が面倒ですが、座標を全く考えずに描くことができます。


テキストエディタでソースを表示したところですが、
「RP 5 FW 30 RT 144 FW 30 LT 72 ER」だけです。

さらにもうちょっと複雑な下のような図形も簡単です。

「RP 36 RP 36 FW 5 RT 10 ER 0 RT 10 ER」だけです。
RP〜ERで、FOR〜NEXTのようなループを形成しますが、この例では2重ループを使っています。


ソースの変更がたびたびあると予想されるので、ソースはGist.GitHubで公開しました。
https://gist.github.com/1029452

また、テキストエディタ連携を限定的ですが組み込んでおり、テキストエディタ側も修正したのでテキストエディタもあわせてGist.GitHubで公開しました。
https://gist.github.com/1029492
テキストエディタの修正箇所:
 1〜4行目変更、27行目変更、28行目追加、59行目追加、223〜232行目追加)


プチコンの仕様により小数点以下の精度が悪いので、表示を若干ごまかしていますが、まあまあまともに表示できるようになりました。

とはいえ、エラー処理もまともにしていないなど、完成度はまだまだです。
現状では空白で区切らないといけないですが、将来的に改良するかもしれません。(ただし、ソースがちょっと長くなりますが。)
ということで仕様は変更になる可能性大ですが、現段階では以下のとおりです。

仕様(V0.1)

  • コマンド、オペランドの順に並べて書く
  • コマンドおよびオペランドは空白で区切る
  • コマンドは以下の通り。
    • FW 前に進む。オペランドで歩数を指定。
    • BW 後ろに進む。オペランドで歩数を指定。
    • RT 右に回転。オペランドで回転の度数(0〜360)を指定。
    • LT 右に回転。オペランドで回転の度数(0〜360)を指定。
    • PU ペンを上げる。この状態ではFW、BWで線が残らない。
    • PD ペンを下げる。この状態ではFW、BWで線が残る。
    • PC ペンの色変更。正のオペランドで色の絶対値、負のオペランドで現在のペンの色からの増を指定。
    • RP ERまでにある命令を繰り返す。オペランドで繰り返しの回数を指定。
    • ER RPからこの前までの命令を繰り返す。(オペランドは無視される)
    • CL 画面をクリアし、初期位置に戻る。
    • EX ファイル名(MEM)を入力し、そのプログラムを実行する。
    • ST タートルのX,Y,角度、ペンの上げ下げ、ペンの色などの状態を表示する。
    • LS ファイルが読み込まれている場合、そのプログラムを表示する。
    • ED ファイルが読み込まれている場合、そのプログラムをテキストエディタで編集する。
    • LD ファイル名(MEM)を入力し、そのプログラムを読み込む。
    • RN ファイルが読み込まれている場合、そのプログラムを実行する。
    • QT 終了。