⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tictactoe.jsp

📁 resinweb服务器源文件
💻 JSP
字号:
<%@ page language=javascript %><%!/** * Simple implementation of tic-tac-toe illustrating * dividing implementation into files. * * The session variable stores: *   user_score  -- the user's score *   comp_score  -- the computer's score *   state       -- the state of the game stored as an array. *               -- 0 = no move, 'x' user, 'o' computer * * User input comes through the query string: *  ?move=n *//* * Exception handling is done by error.jsp. * * All calculations are done before creating any of the output so the * error handling doesn't mix up generated text and error text. */import score; // import the functions in score.esvar state = session.value.state;/* * If the player hasn't played before, initialize the state. */if (! state) {  session.value.user_score = 0;  session.value.comp_score = 0;  session.value.state = [0, 0, 0, 0, 0, 0, 0, 0, 0];  state = session.value.state;}/* * If no moves are available, reinitialize the state. */for (i = 0; i < state.length; i++) {  if (state[i] == 0)    break;}if (i == state.length) {  state = session.value.state = [0, 0, 0, 0, 0, 0, 0, 0, 0];}var move = request.form.move;/* * Response stores the message to tell the user based on the state * change, e.g. win, lose, bad move. */var response = null;/* * Interpret the user's move and calculate the computer's move. * * The AI behind the computer's move is in score.es. */if (! move) {}else if (move >= 0 && move <= 8) {  if (state[move] == 0) {    state[move] = 'x';    if (isUserWin(score(state))) {      response = "user_win";      session.value.user_score++;      session.value.state = [0, 0, 0, 0, 0, 0, 0, 0, 0];    }    else if (isComputerWin(final = computer_move(state))) {      response = "computer_win";      session.value.comp_score++;      session.value.state = [0, 0, 0, 0, 0, 0, 0, 0, 0];    } else if (isTie(final)) {      response = "tie";      session.value.state = [0, 0, 0, 0, 0, 0, 0, 0, 0];    }  }  else {    response = "bad_move";  }} else {  writeln("move: " + move);  response = "bad_move";}/** * HTML for a single square. * * Legal moves are actually links with the proper move, e.g. the center * square would be: * *   <td><a href='tictactoe.jsp?move=5'>&nbsp;&nbsp;</a> */function square(index){  var value = state[index];  if (value == 'x') {    out.write("<td style='color:blue'>X</td>");  }  else if (value == 'o') {    out.write("<td style='color:red'>O</td>");  }  else {    out.write('<td><a href="tictactoe.jsp?move=', index, '">&nbsp;&nbsp;</a></td>');  }}/** * HTML for the entire board. */function board(){  out.writeln("<table border cellpadding=3>");  out.write("<tr>"); square(0); square(1); square(2); out.writeln();  out.write("<tr>"); square(3); square(4); square(5); out.writeln();  out.write("<tr>"); square(6); square(7); square(8); out.writeln();  out.writeln("</table>");}/* * Now that all calculations are done, we can safely create the page. */%><html><head><title>TicTacToe</title></head><body bgcolor=white><!-- Easy way to get back without unwinding the state. --><a href='../index.xtp'>[back]</a><!-- Tell the player how well she's doing. --><table><tr><th>You:<td><%= session.value.user_score %><tr><th>Computer:<td> <%= session.value.comp_score %></table><%/* * Prompt based on the state of the board. */switch (response) {case "user_win":  %><h1>You Win!</h1><%  board();  %><h1>New Game:</h1><%  break;case "computer_win":  %><h1>You Lose!</h1><%  board();  %><h1>New Game:</h1><%  break;case "tie":  %><h1>Tie game!</h1><%  board();  %><h1>New Game:</h1><%  break;case "bad_move":  %><h1>Bad Move.</h1><%  break;default:  %><h1>Your Move.</h1><%  break;}state = session.value.state;/* * draw the board */board();%></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -