0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Javaでじゃんけんゲームを作った(CLI)

Posted at

#仕様
・グー:1、チョキ:2、パー:3とする。
・対戦人数は1対1とする。
・対戦回数は1回とする。

#動作画面
janken.gif

#ソースコード
##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 + "です。");
	}

}

#Github
https://github.com/TakumiKondo/janken

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?