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

举报
howard2005 发表于 2021/11/19 05:32:12 2021/11/19
【摘要】 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


  
  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  2. <html>
  3. <head>
  4. <title>Number Guess Game</title>
  5. </head>
  6. <body>
  7. <p id="prompt"></p>
  8. <form id="frmNumGuess" method="get">
  9. I'm thinking of a number between 1 and 100.<br/>
  10. What's your guess?
  11. <input type="text" name="num">
  12. <input type="submit" value="submit">
  13. </form>
  14. <%
  15. // 猜测目标
  16. int target = 0;
  17. if (session.getAttribute("target") == null) {
  18. // 产生[1, 100]之间随机整数作为猜测目标
  19. target = (int) (Math.random() * 100) + 1;
  20. // 将猜测目标随机整数存放到session里
  21. session.setAttribute("target", target);
  22. } else {
  23. // 从session里获取猜测目标随机整数
  24. target = (int) session.getAttribute("target");
  25. }
  26. // 猜测次数
  27. int count = 0;
  28. if (session.getAttribute("count") == null) {
  29. // 在session里创建count属性
  30. session.setAttribute("count", 0);
  31. } else {
  32. // 从session里取出count属性值
  33. count = (int) session.getAttribute("count");
  34. }
  35. // 游戏业务逻辑
  36. String message = "";
  37. try {
  38. // 获取用户猜的数字
  39. int num = Integer.parseInt(request.getParameter("num"));
  40. // 猜测次数累加1
  41. count++;
  42. // 将用户猜的数字与猜测目标随机整数进行比较
  43. if (num > target) {
  44. // 将猜测次数写入session
  45. session.setAttribute("count", count);
  46. // 设置提示信息
  47. if (count > 1) {
  48. message = "Good guess, but nope. Try <b>lower</b>. You have made " + count + " guesses.";
  49. } else {
  50. message = "Good guess, but nope. Try <b>lower</b>. You have made " + count + " guess.";
  51. }
  52. } else if (num < target) {
  53. // 将猜测次数写入session
  54. session.setAttribute("count", count);
  55. // 设置提示信息
  56. if (count > 1) {
  57. message = "Good guess, but nope. Try <b>higher</b>. You have made " + count + " guesses.";
  58. } else {
  59. message = "Good guess, but nope. Try <b>higher</b>. You have made " + count + " guess.";
  60. }
  61. } else {
  62. // 设置提示信息
  63. message = "Congratulations! You got it. And after just " + count + " tries.<br/>" +
  64. "Care to <a href='numguess.jsp'>try again</a>?";
  65. // 删除session里的猜测目标与猜测次数
  66. session.removeAttribute("target");
  67. session.removeAttribute("count");
  68. }
  69. } catch (NumberFormatException e) {
  70. System.err.println(e.getMessage());
  71. }
  72. %>
  73. <script type="text/javascript">
  74. // 拿到JSP脚本里提示信息变量
  75. var message = "<%= message %>";
  76. // 如果猜对了,隐藏表单内容
  77. if (message.charAt(0) == 'C') {
  78. document.getElementById("frmNumGuess").hidden = true;
  79. }
  80. // 在prompt页面元素里显示提示信息
  81. document.getElementById("prompt").innerHTML = message;
  82. </script>
  83. </body>
  84. </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

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

全部回复

上滑加载中

设置昵称

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

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

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