読者です 読者をやめる 読者になる 読者になる

S.F. Page

Programming,Music,etc...

three.jsで2Dシューティングゲームの続きを作る(5)

シューティングゲーム JavaScript three.js HTML5 ゲーム

今コードをジェネレータを使って書き換えている。やっぱりジェネレータを使ったほうが状態保持のための変数を用意・管理しなくていいしね。これをしなくていいのはジェネレータがyieldを発動した時点の状態を保持してくれるからだけど。面倒な部分を言語が肩代わりしてくれるのだ。

ジェネレータのこのような使い方はコルーチン(マイクロスレッド)とも呼ばれる。C++言語を使って遊んでいたころ、このコルーチンという言葉は何度かC++界隈をにぎわした。やねうらお氏もかつてマイクロスレッドを使ったタスクシステムを提唱していたように記憶している。

天才プログラマー養成ギプス

昔このページをよく読んだなぁ。。昔のホームページっぽい感じが歴史を感じさせるわ。。

また郵便はみがきさんのコルーチンライブラリも素敵であった。

なにしろゲーム(特にシューティングゲーム)はコルーチンと相性が良い。ゲームはインタラクティブなリアルタイム・アニメーションであり、1コマごとに状態を管理しなければいけないからね。

そういうわけで、ジェネレータ関数は思い入れがあるので、そこかしこで使いたくなってしまうのである。