<%@ page import ="java.util.*" %> <% String message = (String) session.getAttribute("message"), right = (String) session.getAttribute("right"), total = (String) session.getAttribute("total"), stamp = (String) session.getAttribute("stamp"), answerkey = (String) session.getAttribute("answerkey"), // retrieve state answer = request.getParameter("answer"); // input from user String reset = request.getParameter("reset"); String stampCopy = request.getParameter("stampCopy"); String anotherMessage = ""; if (message != null && ! message.equals("") && reset == null) { // state is not empty if (stamp.equals(stampCopy)) { if (answerkey != null && !answerkey.equals("")) { if (answerkey.equals(answer)) { right = (Integer.parseInt(right) + 1) + ""; } total = (Integer.parseInt(total) + 1) + ""; } Vector a = this.explode("--", message); answerkey = (String) a.elementAt(0); a.removeElementAt(0); message = this.implode("--", a); String url = ""; anotherMessage = "You are looking at: " + url + "

"; stamp = (Integer.parseInt(stamp) + 1) + ""; } else { // stamps don't agree String url = ""; anotherMessage = "No reload."; if (stamp.equals("0")) { anotherMessage += " The game has just (re)started. The deck is shuffled."; } else { anotherMessage += "You are looking at: " + url + "

"; } } } else { // state is empty if (answerkey != null && !answerkey.equals("")) { if (stamp != null && stamp.equals(stampCopy)) { if (answerkey.equals(answer)) { right = (Integer.parseInt(right) + 1) + ""; } total = (Integer.parseInt(total) + 1) + ""; } } else { if (reset == null) { anotherMessage = "No reload. "; } } Vector a = new Vector(); String[] names = { "China", "Russia", "Italy", "Spain", "South Africa", "Brazil", "United States", "Australia"}; for (int i = 0; i < names.length; i++) a.add(names[i]); Vector b = new Vector(); while (a.size() > 0) { int i = (int) (Math.random() * a.size()); b.insertElementAt(a.elementAt(i), 0); a.removeElementAt(i); } if (total != null && !total.equals("") && Integer.parseInt(total) > 0) { anotherMessage += "(" + right + " / " + total + ")"; } anotherMessage += " The game has just (re)started. The deck is shuffled."; message = this.implode("--", b); right = "0"; total = "0"; stamp = "0"; answerkey = ""; } session.setAttribute("message", message); session.setAttribute("stamp", stamp); session.setAttribute("right", right); session.setAttribute("total", total); session.setAttribute("answerkey", answerkey); %>

<%=anotherMessage%>

(<%=right%> / <%=total%>) Current list: ( <%=message%> )

Press when ready.

<%! public Vector explode(String delim, String data) { Vector v = new Vector(); StringTokenizer st = new StringTokenizer(data, delim); while (st.hasMoreTokens()) { v.add(st.nextToken()); } return v; } public String implode(String delim, Vector a) { String result = ""; for (int i = 0; i < a.size() - 1; i++) result += a.elementAt(i) + delim; if (a.size() > 0) result += a.elementAt(a.size() - 1); return result; } %>