テニススコア集計アプリ書いてみました。
みなさんアプリのソースコードを公開されているので、
// // SetScorer class // class SetScorer { private int player1 = 0; private int player2 = 0; private final int setScore = 7; private final int winScore = 6; private final int loseScore = 5; // // min // private int min(int x, int y) { return x < y ? x : y; } // // max // private int max(int x, int y) { return x > y ? x : y; } // // isGameTied // private boolean isGameTied(int leaderScore, int loserScore) { return leaderScore == loserScore; } // // isGameSet // private boolean isGameSet(int leaderScore, int loserScore) { return (leaderScore >= setScore) || ((leaderScore >= winScore) && loserScore < loseScore); } // // gameWon // public void gameWon(int playerno) { if (playerno == 1) player1++; else player2++; } // // getSetScore // public String getSetScore() { int leader = player1 > player2 ? 1 : 2; int leaderScore = max(player1, player2); int loserScore = min(player1, player2); if (isGameTied(leaderScore, loserScore)) { // even return "Set is tied at " + leaderScore; } else if (isGameSet(leaderScore, loserScore)) { // game set return "Player" + leader + " wins the set " + leaderScore + " - " + loserScore; } else { // now playing return "Player" + leader + " leads " + leaderScore + " - " + loserScore; } } }
最初から自分で書くのであればgetSetScore()メソッドだけでなく、ゲーム状態やリードプレイヤーを返すなどのメソッドを実装するところですが、インタフェースはそのままで書いてみましたが、いかがでしょうか!?
今回初めてJava 2 SDKをインストールしてみました。コマンドラインで使えるところがいいですね。書き方とかJavaらしくないところがあるかと思いますが、どうかご容赦を。min/maxなんていかにもありそうだよなあ。
元の記事のサンプルコードが見やすいかどうかはさておき、いろいろな方のコードを見ることができて楽しかったです。機会があれば、またコーディング大会をしてみたいですね。自分のコードの出来は問わないってことで。:)
過去の関連記事:
yasuhoの隠れ家 - 自分の書くコードは美しいか