UNOのプログラムとテスト

 すっかり仕事でプログラミングをすることがなくなってしまったので、家でプログラムを作ってプログラミング勘を忘れないようにしている。その一環でテーブルゲームであるUNOをするプログラムをJavaで作った。自分も遊べるしコンピュータが相手もしてくれる。今後はネットワーク対戦を可能にしたい。
 で、ためしにコンピュータ4人プレイで何万回か勝手にやらせてみた。同じプログラムで動作しているので、実力はまったく同じであり、勝率はどれも約二割五分。で、平均得点はどれも30点をちょっと超えるぐらい。つまり人間同士でも4人プレイで、平均30点を超える人は基本的に下手ということか。
 ちなみにもとにしたルールは下記。
http://www.geocities.jp/unoassoc/rule.html
プログラムは、がんばってかなりコンパクトにしたのだが、その分非常に難読なプログラムとなってしまう。マケイブ数はすごいことになっているのではないであろうか。
 こういうプログラムは、プログラムからホワイトボックス的にパス網羅を目指したテストを書こうとするとパスが複雑で大変なことになる。そのためブラックボックス的にテストファーストで開発を進めたほうが良く、実際そうしたので効率よく開発できたと思われる。
 まあ、要するにプログラミングは楽しいってこった。