導入
忘年会のシーズンが始まります。忘年会といえばビンゴ。賞品が当たるかどうかは別として,
今回はビンゴマシンを作ることを通して,
展開
ビンゴマシンを作ろう
ビンゴゲームとは
おそらく知らない人は少ないと思いますが,
ビンゴゲームとは
- 5行5列の正方形マス目にランダムな番号の書かれたカードを用います。
- 参加者はこのカードを一人一枚持ち,
司会の読み上げる数字が自分のカードにあれば, カード上の数字にチェックを入れます。 - カード上のチェックが縦・
横・ 斜めいずれかの方向で5つ連続すればあがりです。その際 「ビンゴ!」 とコールします。 - チェックが4つ並んだ時点で
「リーチ!」 とコールする必要があります。
このビンゴゲームで,
Processingでビンゴマシンを作り終えたました
このビンゴマシンをProcessingで開発しました。シンプルながら,
このsketchを実行すると,
このコードをリファクタリングしていきましょう。意図的に臭いを発生させていますので,
テストを作成する
このコードは正しい実行結果を残しますから,
- ビンゴ数列は,
1から75までの数がランダムに, 一つずつもれなくだぶりなく並んだ数列であること。 - これを順に取り出せること。
現在のビンゴマシンの機能はこれだけですから,ArrayList
のオブジェクトbingosuuretsu
の要素が適切かをチェックするコードが必要です。
現在のsketchは,
この作業は,
メソッドの抽出
(Extract Method) 長すぎて読みにくいコードから,
処理のかたまりを切り分けてメソッドにする。
Extract Method
本来は上述の定義のように,
このような流れで変更し,
テストモードと実行モードを切り替えるフラグTEST_
を定義し,
ビンゴ数列を発生するメソッドはcreateBingoPermutation
で,ArrayList
のオブジェクトへの参照を受け取り,
ビンゴ数列をチェックするテストメソッドがtestBingoPermutation
です。ArrayList
のオブジェクトへの参照を受け取り,
テストは問題があればコンソールにメッセージを表示します。 本来はその他のメッセージをコンソールに表示しないところですが,