2008年10月9日木曜日

JavaScriptでMVPパターン(ぷよぷよ編)

せっかくUIパターンについて3つも記事を書いた(UIパターン その1UIパターン その2UIパターン その3)ので、自分でもコードを書いて試してみようと思った。

連鎖シミュレーションツール
ぷよぷよ連鎖シミュレーションツールの画面キャプチャ


JavaScriptのコードはこれ(puyopuyo.js)
オブジェクト図(全体)

モデルは2つ。fieldModel (6x12のフィールド)と、nextModel (次ぷよ)。observersフィールドにビューを追加しておくと、適宜update()関数をキックしてくれる。
fieldModelを書いたときにはgetter/setterをつけてみたのだが、まどろっこしかったのでnextModelではフィールドを直接公開してみた。
オブジェクト図(Model)

ビューも2つ。fieldViewと、nextView。どちらもupdate()関数を持つ。ビューを組み立てるときにはHTML DOMのノードコレクションを渡すようにしている。
オブジェクト図(View)

プレゼンターは1つ。といってもあまりやることがない。
オブジェクト図(Presenter)

作ってみて気がついたが、Observerパターンを単純に実装すると困る。何が困るかって、アニメーションだ。
ぷよの落下と消滅はアニメーションするように作らないと、一瞬で終わってしまって何のことやらわからん。
ところが、JavaScriptでアニメーションするときって、完了後の処理はコールバック関数として渡さないといけないわけだ。
今回は手を抜いて、画面を更新するたびにダイアログを表示することにした。結果は情けないことになっているが、本来の目的はMVPのサンプル実装なので、大目に見てくれ。

ちなみに、なぜ「ぷよぷよ連鎖シミュレーション」にしたかというと、ぷよぷよが下手で連鎖を組めないからだ。これでじっくり研究できるぞ。

0 件のコメント:

コメントを投稿