#仕様
・グー:1、チョキ:2、パー:3とする。
・対戦人数は1対1とする。
・対戦回数は1回とする。
#ソースコード
##Main.java
メインクラス
package janken;
public class Main {
public static void main(String[] args) {
GameController gc = new GameController();
gc.start(); // ゲーム開始
gc.end(); // ゲーム終了
}
}
##GameController.java
じゃんけんゲームのコントローラクラス
package janken;
/**
* GameController Class
* ゲームをコントロールする
* @author user
*
*/
public class GameController {
private Hand myHand;;
private Hand opponentHand;
private Rule rule;
/**
* コンストラクタ
*/
public GameController() {
this.rule = new Rule();
this.myHand = new Hand();
this.opponentHand = new Hand();
}
/**
* start method
* ゲームを開始する
*/
public void start() {
System.out.println("じゃんけんを始めます。");
do {
myHand.setHand();
opponentHand.setRandomHand();
rule.showHands(myHand, opponentHand);
}while(rule.isDraw(myHand, opponentHand));
rule.showResult(myHand, opponentHand);
}
/**
* end method
* ゲームを終了する
*/
public void end() {
System.out.println("じゃんけんを終了します。");
}
}
##Hand.java
じゃんけんの手のオブジェクトクラス
package janken;
import java.util.InputMismatchException;
import java.util.Random;
import java.util.Scanner;
/**
* Hand Class
* じゃんけんの手のオブジェクトクラス
* @author user
*
*/
public class Hand {
private int hand;
/**
* setHand method
* 手を標準入力で設定する
*/
public void setHand() {
System.out.println("手を入力してください。");
System.out.println("グー:1、チョキ:2、パー:3");
while(true) {
try {
Scanner scan = new Scanner(System.in);
this.hand = scan.nextInt();
break;
}catch(InputMismatchException e){
System.out.println("数値で入力してください。");
}
}
}
/**
* setRandomHand method
* 手をランダムに設定する
*/
public void setRandomHand() {
Random random = new Random();
this.hand = random.nextInt(3)+1;
}
/**
* handName method
* 手の名称を返す
* @return
*/
public String handName() {
String handName = null;
if(this.hand == 1) handName = "グー";
if(this.hand == 2) handName = "チョキ";
if(this.hand == 3) handName = "パー";
return handName;
}
/**
* hand method
* 手の値を返す
* @return
*/
public int hand() {
return this.hand;
}
}
##Rule.java
じゃんけんのルールを定義するクラス
package janken;
/**
* Rule Class
* ルールを定義するクラス
* @author user
*
*/
public class Rule {
/**
* showHands method
* 自分の手と相手の手を表示する。
* @param myHand
* @param opponetHand
*/
public void showHands(Hand myHand, Hand opponetHand) {
System.out.print("私の手は、"+ myHand.handName() +"。");
System.out.print("相手の手は、"+ opponetHand.handName() +"。");
System.out.println("");
}
/**
* isDraw method
* あいこを判定する
* @param myHand
* @param opponetHand
* @return
*/
public boolean isDraw(Hand myHand, Hand opponetHand) {
if(myHand.hand() == opponetHand.hand()) {
System.out.println("あいこでしょ!");
return true;
}
return false;
}
/**
* showResult method
* 勝敗結果を表示する
* @param myHand
* @param opponetHand
*/
public void showResult(Hand myHand, Hand opponetHand) {
String result;
// 1:グー、2:チョキ、3:パー
if((myHand.hand() == 1 && opponetHand.hand() == 2) ||
(myHand.hand() == 2 && opponetHand.hand() == 3) ||
(myHand.hand() == 3 && opponetHand.hand() == 1)) {
result = "勝ち";
}else {
result = "負け";
}
System.out.println("あなたの" + result + "です。");
}
}