Hatena::ブログ(Diary)

ラシウラ このページをアンテナに追加 RSSフィード Twitter

2011-05-21

ECMAScript5を使ってSameGameを書いてみた

ECMAScript5の追加ArrayメソッドObject.freeze/Object.createを使い、JavaScriptでSameGameを書いてみました。

f:id:bellbind:20110522082433p:image

意識した部分

for文を避けるため、Array(n).forEach(...)/map(...)は機能しない仕様(呼び出しても引数を実行しない)のようなので、range(n)関数を用意しています。Selected.pointsはArrayのindexOfを使うため、座標を"x,y"形式の文字列にして保持させています。

コード

ブコメを見るとどうも誤解されているようですが、1個のSelectedが可能なのはバグではないです。デモUIの初期値が全部消せる設定になっているのも、コード最後まで走れる(isClearがtrueになるところまで)ようにするため。

1個のSelectedが成立する設計意図的なものです(そもそも0個のSelectedだって可能だ)。Boardが上書きせず、別Boardを生み出す構造設計であるのと同様、数判定を混ぜないのも工夫によるものです(ヒントはコヒージョン)。

追記: 設計をいくつか更新

感想


リソース

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。

トラックバック - http://d.hatena.ne.jp/bellbind/20110521/1305995233