前回は3回じゃんけんをした勝敗の合計を競うじゃんけんアプリを作成しました。今回は、3回先に勝った方が勝ちというルールで、じゃんけんアプリをつくってみましょう。勝負の回数をカウントすることがポイントです。
じゃんけんアプリをつくろう!
問題:「じゃんけんポン!と標準出力される。ユーザがコンソールにじゃんけんの手(0,1,2)を入力すると、じゃんけんの結果(ユーザの手、PCの手、ユーザの勝ち負けあいこ、勝敗の数)が標準出力されるプログラムをJavaで記載せよ。また、ユーザーまたは、PCが先に3勝するまで、じゃんけんを続けよ」
条件:
・ユーザーとCPの1対1のじゃんけんであること
・PCの手はランダムであること
・じゃんけんの手は次のように数字で扱うこと グー:0,チョキ:1,パー:2
・じゃんけんごとにユーザーの勝敗と通算成績(○勝□敗)を標準出力すること
・0,1,2以外の数値が入力された場合は、「0、1,2のどれかの数字を入力してください。」とメッセージを表示し、じゃんけんの手を再入力できるようにすること
解答例
解答例を用意しましたので、見ていきましょう。
package com.example.demo.controller;
import java.util.Random;
import java.util.Scanner;
public class Janeken3win {
public static void main(String[] args) {
//勝敗の数
int winCount = 0;
int loseCount = 0;
//Scannerのインスタンス化
Scanner stdin = new Scanner(System.in);
while (winCount < 3 && loseCount < 3) {
// メッセージの表示
System.out.println("じゃんけんポン!(グー:0,チョキ:1、パー:2 どれかの数字をいれてください。)");
// ユーザーの手を読み取る
int userHands = stdin.nextInt();
// 入力チェック
while (userHands < 0 || userHands > 2) {
System.out.println("グー:0,チョキ:1、パー:2 どれかの数字をいれてください。");
userHands = stdin.nextInt();
}
// PCのじゃんけんの手を準備
Random rand = new Random();
int pcHands = rand.nextInt(3);
// 結果判定
String result;
if (userHands == pcHands) {
result = "あいこです。";
} else if ((userHands == 0 && pcHands == 1) ||
(userHands == 1 && pcHands == 2) ||
(userHands == 2 && pcHands == 0)) {
result = "ユーザーの勝ちです!";
winCount++;
} else {
result = "ユーザーの負けです。";
loseCount++;
}
// 判定結果の表示
String[] hands = { "グー", "チョキ", "パー" };
System.out.println("ユーザーの手:" + hands[userHands] + ",コンピュータの手:" + hands[pcHands]);
System.out.println("結果:" + result);
System.out.println("現在:" + winCount + "勝" + loseCount + "敗");
}
// Scannerをクローズ
stdin.close();
}
}
解説
//勝敗の数
int winCount = 0;
int loseCount = 0;
while (winCount < 3 && loseCount < 3) {
//省略
}
「ユーザーまたはPCが3勝するまで続ける」をコードで表現した部分がこちらです。勝った回数、負けた回数をカウントして、繰り返しの条件にしています。繰り返す回数が特に決まっていないので、while文を使用しました。この書き方だと条件式が「&&」になっているのが意外とポイントです。
*
// 結果判定
String result;
if (userHands == pcHands) {
result = "あいこです。";
} else if ((userHands == 0 && pcHands == 1) ||
(userHands == 1 && pcHands == 2) ||
(userHands == 2 && pcHands == 0)) {
result = "ユーザーの勝ちです!";
winCount++;
} else {
result = "ユーザーの負けです。";
loseCount++;
}
勝った回数、負けた回数は結果判定の部分で、それぞれ+1しています。
*
いろんな書き方があるので、一例ととらえてもらえると嬉しいです。
解説は以上です!
*
「習うより慣れよ」ということで、8種類題材を作成してみました!
【Java】じゃんけんアプリをつくろう①~シンプルなじゃんけん~
【Java】じゃんけんアプリをつくろう②~あいこの場合はもう一度~
【Java】じゃんけんアプリをつくろう③~3回じゃんけんをしてみよう~
【Java】じゃんけんアプリをつくろう④~先に3勝した方が勝ち~
【Java】じゃんけんアプリをつくろう⑤~3人でじゃんけん~
【Java】じゃんけんアプリをつくろう⑥~後出しじゃんけん~
【Java】じゃんけんアプリをつくろう⑦~両手じゃんけん~
【Java】じゃんけんアプリをつくろう⑧~あっちむてほい~
最後まで読んでいただいた方、ありがとうございました。