wonderfl CHECKMATE professional
2009/07/19 23:20 - AS3.0
ねんがんのプロフェッショナルにとうこうしたぞ!
てなわけで、二作品ばかり投稿してみました。ってもいろんなもんのパクリだけどな!
池田亮司 data.tron のパクリ
これは先だって東京都現代美術館で見てきた「池田亮司」展で展示されていた、data.tron そのままです。
パターンビルダークラスでドットパターンを作れ、というお題なら、コンテスト開始早々話題をかっさらった Quasimondo 作品や、超絶的に美しいインベーダー nutsu 作品 などのような、ある程度決まったサイズの同一模様を敷き詰めるものがオーソドックスなんでしょう。
でも二次元配列書くのメンドくさいし、そもそもセンスないからなー、どーしよーかなー、と先行作品を拝見しているうちに、とても気になるコードを発見しました。
それは Dive into Cyberspace のコードです。 二次元配列による記述が無いのにアルファベット26文字をドットで表現している、いったいどうやってるんだ?
当該部分の _build() メソッドの解析をしてみたところ、実に素晴らしいコードであることを知りました。
これは16進数を2進数に変換し、その2進数の各数字をパターン用の配列要素に置き換えるということをしています。
例えば、16進数の5を2進数にすると0101になりますが、これをパターンビルダークラスの元データの配列[0,1,0,1]に置き換える、というやり方で二次元配列を作っています。つまり16進数1つで配列要素の4個分が作れるわけですね。
ここで思い出したのが、先般の池田亮司展で見てきた数字。あの数字は幅3ドット×高さ5ドットで表現されていました。
ってことは、この _build() メソッドの原理を使えば16進数1つで幅一つ分を表すことができるから、16進数を6個用意すれば余白を含めて一つの数字をドットで描くことができる。
例えば 0xE8E2E0 なら、以下のような二次元配列を作ることができます。
E → [1,1,1,0] 8 → [1,0,0,0] E → [1,1,1,0] 2 → [0,0,1,0] E → [1,1,1,0] 0 → [0,0,0,0]
1 を文、0を地にすると、右1列と下1行を余白とする数字の5をドットで表現したことになります。
実にエレガントじゃあありませんか。素晴らしい。
data.tron.clock
上記ではランダムに数字を並べているだけですが、こちらでは時計にしています。
ここではオレ的に新機軸を導入しています。
先般購入した「ActionScript 3.0 : デザインパターン」で得た知見を実践導入してみました。
この本の50~72ページでは MVC パターンを使った時計の作り方が解説されていますが、それを使ってみました。 といってもビュークラスは存在しません。今回はメインクラスがビューになっています。 またコントローラに相当する部分もありません。 ユーザインタラクティブがないのでコントローラはいらないわけです。
いやーしかし MVC パターンってのはスゴイですねー。 このパターンに則ってコード化すれば、実に分かりやすいコードが書けますよ。 びっくりしました、こんなに素晴らしいものだとは。 でも私、これはデザインパターンというよりは、アーキテクチャーパターンだと思います。