Java Web应用小案例:猜数小游戏

举报
howard2005 发表于 2021/11/19 05:32:12 2021/11/19
2.8k+ 0 0
【摘要】 Java Web应用小案例:猜数小游戏 文章目录 一、演示Python版猜数游戏 二、JSP版猜数游戏程序运行效果 三、项目实现步骤 1、创建Web项目NumberGuess 2、在web目录里创建首页文件index.html 3、在web目录里创建猜数页面numguess.jsp 4、启动tomcat服务器...

Java Web应用小案例:猜数小游戏


文章目录

一、演示Python版猜数游戏

二、JSP版猜数游戏程序运行效果

三、项目实现步骤

1、创建Web项目NumberGuess

2、在web目录里创建首页文件index.html

3、在web目录里创建猜数页面numguess.jsp

4、启动tomcat服务器,查看运行效果

5、注意事项

四、详细操作步骤

1、设计numguess.jsp界面

2、设置猜测目标

3、设置猜测次数

4、编写游戏业务逻辑

5、利用JavaScript在页面显示游戏业务逻辑处理的信息


一、演示Python版猜数游戏

课堂练习:编程实现Java版猜数游戏。

二、JSP版猜数游戏程序运行效果

三、项目实现步骤

1、创建Web项目NumberGuess

2、在web目录里创建首页文件index.html

3、在web目录里创建猜数页面numguess.jsp


      <%@ page contentType="text/html;charset=UTF-8" language="java" %>
      <html>
      <head>
         <title>Number Guess Game</title>
      </head>
      <body>
      <p id="prompt"></p>
      <form id="frmNumGuess" method="get">
          I'm thinking of a number between 1 and 100.<br/>
          What's your guess?
         <input type="text" name="num">
         <input type="submit" value="submit">
      </form>
      <%
          // 猜测目标
          int target = 0;
          if (session.getAttribute("target") == null) {
              // 产生[1, 100]之间随机整数作为猜测目标
              target = (int) (Math.random() * 100) + 1;
              // 将猜测目标随机整数存放到session里
              session.setAttribute("target", target);
          } else {
              // 从session里获取猜测目标随机整数
              target = (int) session.getAttribute("target");
          }
          // 猜测次数
          int count = 0;
          if (session.getAttribute("count") == null) {
              // 在session里创建count属性
              session.setAttribute("count", 0);
          } else {
              // 从session里取出count属性值
              count = (int) session.getAttribute("count");
          }
          // 游戏业务逻辑
          String message = "";
          try {
              // 获取用户猜的数字
              int num = Integer.parseInt(request.getParameter("num"));
              // 猜测次数累加1
              count++;
              // 将用户猜的数字与猜测目标随机整数进行比较
              if (num > target) {
                  // 将猜测次数写入session
                  session.setAttribute("count", count);
                  // 设置提示信息
                  if (count > 1) {
                      message = "Good guess, but nope. Try <b>lower</b>. You have made " + count + " guesses.";
                  } else {
                      message = "Good guess, but nope. Try <b>lower</b>. You have made " + count + " guess.";
                  }
              } else if (num < target) {
                  // 将猜测次数写入session
                  session.setAttribute("count", count);
                  // 设置提示信息
                  if (count > 1) {
                      message = "Good guess, but nope. Try <b>higher</b>. You have made " + count + " guesses.";
                  } else {
                      message = "Good guess, but nope. Try <b>higher</b>. You have made " + count + " guess.";
                  }
              } else {
                  // 设置提示信息
                  message = "Congratulations! You got it. And after just " + count + " tries.<br/>" +
                              "Care to <a href='numguess.jsp'>try again</a>?";
                  // 删除session里的猜测目标与猜测次数
                  session.removeAttribute("target");
                  session.removeAttribute("count");
              }
          } catch (NumberFormatException e) {
              System.err.println(e.getMessage());
          }
      %>
      <script type="text/javascript">
         // 拿到JSP脚本里提示信息变量
         var message = "<%= message %>";
         // 如果猜对了,隐藏表单内容
         if (message.charAt(0) == 'C') {
             document.getElementById("frmNumGuess").hidden = true;
          }
         // 在prompt页面元素里显示提示信息
         document.getElementById("prompt").innerHTML = message;
      </script>
      </body>
      </html>
  
 

4、启动tomcat服务器,查看运行效果

5、注意事项

(1)如果表单form的action属性不设置,那么表单提交的数据就由当前页面接受并处理。

(2)猜测目标与猜测次数必须存放到会话属性里使用,否则每次猜错时两者都会重新初始化。

(3)JavaScript脚本里可以通过JSP的表达式元素<%=...%>访问JSP脚本里的变量。


四、详细操作步骤


1、设计numguess.jsp界面

启动服务器,查看运行效果:

输入一个数字:

单击[submit]按钮:

2、设置猜测目标

思路:如果session里有猜测目标,就直接取出来用;如果没有猜测目标,那么就创建一个放进去。

启动服务器,查看运行效果:

可以看到,每次提交猜测数字,猜测目标都保持不变。

3、设置猜测次数

启动服务器,查看运行效果:

可以看到,每次提交猜测数字,猜测次数都会累加1。

4、编写游戏业务逻辑

启动服务器,查看运行效果:

修改代码,添加异常处理:

重启服务器,查看运行效果:

5、利用JavaScript在页面显示游戏业务逻辑处理的信息

重启服务器,查看运行效果:

虽然一次就猜中的可能性很小,但是我们的程序还是应该考虑这种小概率事件。

思考题:大家可以考虑一下能够采用面向对象的方法,创建一个猜数游戏的Java类来处理游戏数据与逻辑呢?

文章来源: howard2005.blog.csdn.net,作者:howard2005,版权归原作者所有,如需转载,请联系作者。

原文链接:howard2005.blog.csdn.net/article/details/101193270

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。