じゃんけんゲームのレビューのお願い
レビューのお願い
JavaでじゃんけんのCLIアプリケーションを作成しました。気づいた点があれば全て指摘いただけるとありがたいですが、特に以下の点においてレビューをいただきたいです。
- 保守性・可読性(命名規則は一般的であるか。命名は分かりやすいものであるか。また、もっと分かりやすい例はあるか)
- 拡張性(デスクトップやウェブで動くアプリケーションにしたり機能を追加したりする際、どれだけスムーズか。またはスムーズでないか)
- 機能面(UIは十分であるか。また、不十分なものは何か)
アプリ仕様
ファイル数:2
インターフェース:CLI
参考元:【if編】Java言語で『じゃんけんゲーム』を作る
意識した点
オブジェクト指向に則ったクラスとメソッドの定義
コード
Janken.java
package Janken;
import java.util.Scanner;
public class Janken {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String[] hands = {"グー","チョキ","パー"};
while (true) {
System.out.println("じゃんけん…");
System.out.println("グー:0, チョキ:1, パー:2");
int playersHands = sc.nextInt();
int computersHands = (int)(Math.random()*3);
Judge judge = new Judge(playersHands, computersHands);
String result = judge.result();
if (playersHands < 0 || playersHands > 2) {
System.out.println("不正な入力値です");
continue;
}
System.out.println("プレイヤー:" + hands[playersHands]);
System.out.println("コンピューター:" + hands[computersHands]);
System.out.println("結果:" + result);
}
}
}
Judge.java
package Janken;
public class Judge {
private int playersHands;
private int computersHands;
public Judge(int playersHands, int computersHands) {
this.playersHands = playersHands;
this.computersHands = computersHands;
}
public String result() {
if (playersHands == computersHands) {
return "あいこ";
}
switch (playersHands) {
case 0:
return (computersHands == 1) ? "勝ち" : "負け";
case 1:
return (computersHands == 2) ? "勝ち" : "負け";
case 2:
return (computersHands == 0) ? "勝ち" : "負け";
default:
return "不正な入力";
}
}
}