Math.random()
を使ったおみくじアプリです。
javac OmikujiApp.java
java OmikujiApp
工夫したことは2つある。
1つ目は、画面のを構成する部品一つ一つをクラスに分けたことだ。部品をcomponents
というディレクトリに入れ、そのcomponentを使うクラスをscreens
というディレクトリに入れた。OmikujiBtnComponent.java
を例にすると、これは「おみくじを引く」ボタンのコンポーネントで、JButton
を継承し、ActionListener
を実装することで、ボタンのデザインや押した時の反応は全てこのクラスで定義している。そして、MainScreen.java
内でJPanel
にaddしている。これによるメリットは、MainScreen.java
のコードが見やすくなったことだ。MainScreen内ではaddしかしておらず、コンポーネント固有の設定はコンポーネントに任せている。
2つ目は、おみくじの結果をCSVファイルに記録するようにしたことだ。おみくじを引くとdata.csv
というファイルが生成され、結果が記録されるようにし、履歴というボタンを押すと、そのCSVファイルを読み込んでおみくじの結果を閲覧できるようにした。仕組みは、「おみくじを引く」ボタンを押すとOmikuji
クラスのlot()が実行され、その結果OmikujiResult
オブジェクトが返される。このオブジェクトは、大吉か中吉かの情報(OmikujiTypeというenumを定義)とくじを引いた時刻(java.util.Dateを使用)を変数として持つ。そのオブジェクトをResultService
クラスのwirte()に渡すとCSVに追記する。また、履歴ページに遷移したときはResultService
クラスのreadAll()が実行されOmikujiResult
の配列が返され、テーブルに反映される。CSVファイルに記録することで、アプリケーションを落としても履歴が消えないのでゲームっぽくなったのではないだろうか。
find . -name "*.class" | xargs rm
zip -r ex4.zip .