【Java】ジャンケンゲーム作成-4。勝敗の判定

3回目の続きとなります。
まだ読んでいない方は是非どうぞ。

あわせて読みたい
【Java】ジャンケンゲーム作成-3。手を出す。 2回目の続きとなります。まだ読んでいない方は是非どうぞ。 https://kazunaka.com/java-janken-2/ 相手(PC)が出来上がったので、次はこちらからも手を出していきます。...

お互い「手」を出し合ったので、勝敗を決したいと思います。
ジャンケンにおいての判定は1行のコードでできます。
あとはその結果をJSPに渡すだけです。

下記は参考にしたジャンケンのアルゴリズムです。

Qiita
じゃんけんアルゴリズムをちょっと応用 - Qiita じゃんけんの勝敗判定グー・チョキ・パーの3種類で判定じゃんけん勝敗判定アルゴリズムの思い出こちらの記事を参考にさせていただきました。グー = 0チョキ = 1パー = 2と...

簡単ですぐ終わりますので、早速参りましょう!!

目次

JankenServlet.javaの編集

上記参考記事にて1行で判定を行い、JSP側に渡すためのコードを1行追加します。

//勝負の判定。0: あいこ 1: 負け 2: 勝ち
int judge = (userHandNumber - rand + 3) % 3;

request.setAttribute("judge", judge);

今回はJSP側で、if文を使って表示を制御したいと思います。
とりあえずなんとなく理解できればOKです。

Janken.jspの編集

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
	<%
		//JankenServletで生成したデータを受け取る
		String pcHand = (String)request.getAttribute("pcHand");
		String userHand = (String)request.getAttribute("userHand");
		Integer judge = (Integer)request.getAttribute("judge");
	%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<script type="text/javascript" src="./js/method.js"></script>
		<title>ジャンケンゲーム</title>
	</head>
	<body>
		<form name="janken" action="JankenServlet" method="get">
			<p>Jankenゲーム</p>
			<%if(judge != null) {%>
				<p>PCの手は<%= pcHand%></p>
				<p>あなたの手は<%= userHand%></p>
				<%if(judge == 0){ %>
					<p>あいこです</p>
				<%} %>
				<%if(judge == 1) { %>
					<p>負けです</p>
				<%} %>
				<%if(judge == 2) { %>
					<p>勝ちです。</p>
				<%} %>
			
			<%} %>
			<input type="hidden" name="hand" value="" />
			<a href="javaScript:select('0')">グー</a>
			<a href="javaScript:select('1')">チョキ</a>
			<a href="javaScript:select('2')">パー</a>
		</form>
	
	</body>	
</html>

実行すれば分かりますが、
<%if(judge != null) {%>で初期は表示させないようにしています。
「judgeがnullじゃない場合は表示する」と言う意味です。
初期はnullなので表示されません。

実行

今回もJanken.jspファイル上で右クリックし、実行します。
ローカルホストにアクセスして下さい。

http://localhost:8080/Janken/JankenServlet

nullが表示されず、下図のようになってればOKです。

リンクをクリックして結果が出ればうまくプログラミングが動いています。
私は「グー」を出しましたが負けてしまいました。。。

うまくいかなかった人はデバッグしてみて下さい。
根気よくやればエラーは必ず解決します。

あわせて読みたい
【Java】デバッグのやり方 動作確認レベルの簡単な説明になります。触っていけば慣れますので初学者の方は是非参考にしてみて下さい。 下記記事での番外編となっています。まだ読んでない方は是非...

よろしければJankenServlet.javaのdoGetのコードを載せておきます。
参考にどうぞ。

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String JANKEN_PAGE = "Janken.jsp";
		request.setCharacterEncoding("UTF-8");
		
		//ジャンケンの手を配列にで定義する
		String[] hands = {"グー", "チョキ", "パー"};
		//0〜2の数字をランダムに生成する
		int rand = (int)(Math.random() * 3);
		//PC側の手を決定
		String psHand = hands[rand];
		
		//ユーザの手の番号を受け取る
		int userHandNumber = Integer.parseInt(request.getParameter("hand"));
		//ユーザ側の手を決定
		String userHand = hands[userHandNumber];
		
		//勝負の判定。0: あいこ 1: 負け 2: 勝ち
		int judge = (userHandNumber - rand + 3) % 3;
		
		//画面側へデータ受け渡し
		request.setAttribute("pcHand", psHand);
		request.setAttribute("userHand", userHand);
		request.setAttribute("judge", judge);
		
		RequestDispatcher rd = request.getRequestDispatcher(JANKEN_PAGE);
		rd.forward(request, response);
		
	}

これで一応、ジャンケンの機能的な部分は終わりです。
次回はもう一枚ページを作ってページ遷移を行いたいと思います。

あわせて読みたい
【Java】ジャンケンゲーム作成-5。ページ遷移 4回目の続きとなります。まだ読んでいない方は是非どうぞ。 https://kazunaka.com/java-janken-4/ タイトル通り、ページ遷移を行いたいと思います。簡単な流れとして、...

本記事最後までご覧いただきありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次