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

  • 2020.06.22
  • 2021.01.24
  • Java
NO IMAGE

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

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

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

https://qiita.com/mpyw/items/3ffaac0f1b4a7713c869

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

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です。

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

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

よろしければ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カテゴリの最新記事