インサイドUJML:解説6(2006/01/29)
ソースのInside UJML
http://developer.uievolution.com/docs/ja/InsideUJML/index.html
隙間時間に書いているので、文体に統一感無く読みにくいかもしれません。随時時間を見つけて修正する予定です。
今回はRemoving Boxesから。
【Removing Boxes:選択された箱を消去する話】
ユーザーが選択した箱を消去するとき、隣り合った同じ色の箱は全て消去されます。ここでは、次のようなロジックを実装しています。
・消す箱の範囲を判定:隣り合った同じ色の箱は消去します。
・消した後の残った箱の移動:上にあった箱は落ちてきます。
サンプルUJMLのujinn4.ujmlは長いソースコードになっていますが、覚えるべきポイントは少しだけです。
■ includeという謎のステートメントが出てきました。外部のコンポーネント使うための宣言です。stack.ujmlにて実装されているコンポーネントを活用します。stack.ujmlにはStringStackとIntStackという二種類のstackが実装されていますが、「ここではIntStackを使います」と宣言しています。
切り抜き:
<state-machines>
<include file="ujlib/stack.ujml" state-machine="IntStack"/>
</state-machines>
■ 前回の解説5の最後に書いた、スクリプトエンティティの実例がたくさん出ています。これで慣れます。
切り抜き:
if (numBoxesToBeRemoved > 1)
while (row < &MAX_ROWS;)
sRemoveColumns = gCol < &MAX_COLS;;
↑ステート変数に評価結果をそのまま代入
スタックについて知らない方は「スタック キュー」でGoogleを使って検索すると良いと思います。スタックは「後入れ、先出し」の方です。
IT用語辞典を引用:スタック
---
最後に入力したデータが先に出力されるという特徴をもつ、データ構造の一種。
本を机の上に積み上げるような構造になっており、データを入れるときは新しいデータが一番上に追加され、データを出すときは一番上にある新しいデータが優先して出てくる。
---
次回はReusable Stackから。次の項の最初の一文がCOOLなので予告で引用します。
---
Given that a central theme and goal of UJML is to allow developers to implement an application once and deploy it to many platforms, it follows that developing reusable UJML “components” is an important topic in the context of code reuse and redeployment.
---
UJMLが目指すところっていうのは、「開発者が一回作ったら多くのプラットフォームにデプロイできるようにする。」ということなんで、コードの再利用とか再デプロイの考え方からすると再利用可能なUJML"コンポーネント"の開発っていうのは重要なんです。
ここにきてようやくUJML開発者として重要な点が明らかになりました。それはもちろん、
「いかに、再利用しやすいUJMLコンポーネントを開発するか?」
ということであり、優れたUJML開発者は、
「容易に再利用できるUJMLコンポーネントを開発できる人」
ということになる、、と思います。それだけじゃ充分じゃ無いだろうけど。さて、明日から何をすべきか?
コメント