blog.bouzuya.net

2016-01-14 Terminal で動く FreeCell をつくった

2016-01-11 につくった bouzuya/freecell のことを書く。

bouzuya/freecell は Terminal で動く FreeCell 。 4 つの free cell を使って配置されたすべての card を home cell に片付ける 1 人遊び。 Windows に標準搭載されているものだ。いまはどうだか知らないけれど……。

今回の目的は、特にない。しいて挙げるなら TypeScript の練習だろう。 Windows 10 の upgrade をしつこく要求されており、その待ち時間に FreeCell を遊んだら楽しかったので衝動的につくった。「思ったことをすぐかたちのあるものにできる人」は 2016 の goal なので問題ないだろう。

実装は Node.js + TypeScript + Babel 。いつもどおりの構成だ。特別な点として今回は mocha + power-assert を追加して unit testing を考慮した。

TypeScript → es2015 → es5 と変換する。src/ および test/ は次のように変換される。

  • src/.tmp/src/ (ts → es2015) を経て lib/ (es2015 → es5)
  • test/.tmp/test/ (ts → es2015)

.tmp/test からは espower-babel で es2015 -> es5 変換と power-assert 変換を兼ねている。詳細は以下を参照してほしい。

(いま気づいたのだけど espower-babel-loader の pattern が間違っているのになぜか動いている……)

TypeScript は CoffeeScript に比べると function({}); のような閉じ括弧が多いうえ、mocha は arrow function を使わないほうがいいのでつらい。今日び this で context 共有って……と思われるかもしれないけれど、mocha はそこそこ古いので仕方ない。

ひとまず TypeScript でも mocha を利用できると確認できたのは良かった。

もうすこし改良するとともに Web 向けの View を追加したい。