JSP程序设计_习题4_6

题目

参照例 4-18 编写一个猜英文 26 个小写字母的 Web 游戏

代码

inputGuess.jsp

<%@ page contentType="text/html; charset=UTF-8"
       pageEncoding="UTF-8" %>

  
    

随机分给你一个a-z的小写字符,请猜!

<% char c = (char) (Math.random() * 26 + 'a'); String input = String.valueOf(c); session.setAttribute("count", new Integer(0)); session.setAttribute("save", new String(input)); %> 去猜测这个字母

guess.jsp

<%@ page contentType="text/html; charset=UTF-8"
       pageEncoding="UTF-8" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="guessChar" %>

  
  <%
    String str = request.getParameter("inputChar");
    if(str == null)
      str = "*";

    if(str.length() != 1)
      str = "*";
  %>
  
  当前猜测结果:<%=message%>
  <% 
    if(message.startsWith("你猜对了")){
  %>
  
重新获得随机数 <% }else{ %>
输入你的猜测:
<% } %>

GuessTag.tag

<%@ tag pageEncoding="UTF-8" %>
<%@ attribute name="guessStr" required="true" %>
<%@ variable name-given="message" scope="AT_END" %>
<%
  String mess = "";
  String valueStr = (String)session.getAttribute("save");
  boolean boo = true;
  int guessInt = 0;
  int valueInt = 0;
  try{
    char gs = guessStr.charAt(0);
    char vs = valueStr.charAt(0);
    guessInt = gs == '*' ? 0 : Integer.valueOf(gs);
    valueInt = vs == '*' ? 0 : Integer.valueOf(vs);
  }catch(Exception e){
    boo = false;
  }
  if(boo && guessInt != 0){
      int n = ((Integer)session.getAttribute("count")).intValue();
      n = n + 1;
      session.setAttribute("count", new Integer(n));
    if(guessInt == valueInt){
      mess = "你猜对了,这是第" + n + "次猜测";
    }else if(guessInt > valueInt){
      mess = "你往前再猜猜,这是第" + n + "次猜测";
    }else if(guessInt < valueInt){
      mess = "你往后再猜猜,这是第" + n + "次猜测";
    }else{
      mess = "出错";
    }
    jspContext.setAttribute("message", mess);
  }else{
    jspContext.setAttribute("message", "请输入你的猜测");
  }
%>

执行结果

JSP程序设计_习题4_6_第1张图片
JSP程序设计_习题4_6_第2张图片
JSP程序设计_习题4_6_第3张图片
JSP程序设计_习题4_6_第4张图片
在 inputGuess.jsp 中随机获取一个字符,存在 session 中,并且通过 count 存储猜的次数。guess.jsp 取出用户输入的值,与随机分配的字符作比较,猜错了,将输出提示,继续猜数,直至猜对。

你可能感兴趣的:(JSP程序设计_习题4_6)