亀場でプログラミング:開発状況
このページでは、「亀場」について、現在進行中のアイデアやコードについての情報をまとめておきます。
最近の更新
15-NOV-2021 golang用のAPIを試作(turtle.go)
21-JUL-2019 GLUTの代わりにGLFWを使用したバージョンを試作(macOS用テスト版)
10-JUN-2019 Windows版亀場サーバーの不具合を修正。
19-JUN-2017 Python用API(python.py)のバグ修正。Python用のサンプル集を追加。
09-JUN-2017 亀場にトランプのカードを表示する機能を追加。
17-AUG-2015 Windows版で表示がおかしくなる(画像が次第に消える、色が変・・)不具合に対応。
11-JUL-2013 同時に複数の亀場サーバーを起動した際に警告を表示。POINTモード追加。
05-JUL-2013 LW()で線幅を0にすると落ちるバグを修正。
04-JUL-2013 相対ジャンプRJUMP()を追加。
02-JUL-2013 毛筆モードの仕様を一部変更。TCPサーバーの応答を一部変更。
27-JUN-2013 「亀場ライブ」でブラウザ側から強制切断された場合の処理を修正 。
26-JUN-2013 Windows版「亀場ライブ」のバグを修正 。
24-JUN-2013 「亀場ライブ」機能を追加 。
11-JUN-2013 Windows版でFINDERを使うと落ちるバグを修正。
10-JUN-2013 同報(同胞)通信(BCAS(), Q_BCAS())追加。通信の際の文字列の扱いを変更。
05-JUN-2013 BRUSH(毛筆)モードのバグ修正。
02-JUN-2013 BRUSH(毛筆)モードを追加。
01-JUN-2013 簡単なヘルプ画面を追加。hキーを押すか、メニューから About Turtle Field を選択
疑似三次元表示
亀場での物体の座標は二次元的に扱われていますが、描画にOpenGLを使っていますので、立体的な表示も可能です。
画面上で数字の3
キーを押すと、表示が通常モードと三次元モードとの間を切り替わります。
+
キーでズームイン、-
キーでズームアウト、 <
キーと >
キーで
視点を回転させることができます。
「ゲーム感覚」で使いたい方はお試しください。
三次元版での迷路モードの表示例
01-JUN-2013 FINDERやRADERに補足されたとき、亀からターゲットとなる物体に「ビーム」が走るようにしてみました。
FINDERビームは赤、RADERビームは青色です(表示はBattle mode中のみ有効)
各言語への対応
Go
Go言語用のAPIを試作してみました。まだ動作確認は十分に行っておりません。turtle.goを適切なディレクトリに置いてお使いください。 あらかじめモジュールと、importのところの調整を行っておかないと "build command-line-arguments: cannot find module for path ..."エラーが出ますので、ご注意ください。
以下に、ヒルベルト曲線を描くコードの例を示します(import
のfoo
は適宜修正のこと)。
package main import ( "foo/turtle" ) const ( STEP = 13 ) func hilbert(t *turtle.Turtle, level int, angle float64) { if level<=0 { return } t.Rt(angle) hilbert(t,level-1,-angle) t.Fd(STEP) t.Lt(angle) hilbert(t,level-1,angle) t.Fd(STEP) hilbert(t,level-1,angle) t.Lt(angle) t.Fd(STEP) hilbert(t,level-1,-angle) t.Rt(angle) } func main() { ttl := new(turtle.Turtle) ttl.Connect("localhost") ttl.Clr() ttl.Rst() ttl.Lw(2) ttl.Col(1.0,1.0,0.0) ttl.Bk(200) ttl.Lt(90) ttl.Fd(200) ttl.Rt(90) ttl.Pd() hilbert(ttl,5,90.0) ttl.Fire() }
Racket (Scheme)
Schemeの処理系として色々な機能が整備されているRacketでも 亀場がいじれるように、とりあえず動くプログラムを作ってみました。 Racketにはもともとタートルグラフィックスなどが内蔵されていますので、亀場などはじめから必要ないようなものですが・・・ 左のリンクから turtlefield.rkt をダウンロードして、 Racketのプログラムと同じ場所に保存しておけば、 以下のようにして亀を操ることができます。
#lang racket (require "./turtlefield.rkt") (tf-con "localhost") (tf-clr) (tf-rst) (tf-pd) (tf-fd 100) (tf-lt 90) (tf-fd 100) (tf-lt 90) (tf-fd 100) (tf-lt 90) (tf-fd 100) (tf-discon)
JavaScript + Node.js
JavaScriptの練習用に、Node.jsを使って亀場と通信するためのAPIもこしらえてみました。 亀場は画面の更新に合わせて同期的に動作するソフトである一方、Node.jsは非同期的な動作が前提であるため、 正直、あまり使い勝手は良くありません。
分かっているバグ
Windows版の亀場サーバーの不具合
Windows版でのテクスチャ描画が大変遅い場合があるようですが、今のところ解決法は見つかっていません(2015-08-17)。