Tutorial Jogo da Velha WEB Criação do Projeto 1- Inicie o Eclipse 2- Crie um novo projeto Web dinâmico. 3- Na tela seguinte, digite o nome do projeto e caso no campo Target Runtime não estiver aparecendo nada, vá no botão New e localize o diretório raiz do seu TomCat.
. 4- Clique em Finish para terminar a criação do projeto. Criando a estrutura de pacotes 1- Clique com o botão direito no nome do seu projeto e escolha a opção New Package
. 2- Crie o pacote com o nome br.santacruz.jogodavelhaweb2.model.vo 3- Repita o procedimento anterior e crie os pacotes:: br.santacruz.jogodavelhaweb2.model.dao, br.santacruz.jogodavelhaweb2.control, br.santacruz.jogodavelhaweb2.control.servlets,.
Criando o VO 1- Com os pacotes já criados, crie uma nova classe dentro do pacote Vo. 2- Coloque o nome da classe como JogoVo
3- Insira o código abaixo na Classe JogoVo
package br.santacruz.jogodavelhaweb2.model.vo; import java.util.vector; public class JogoVo { private Vector<String> tabuleiro = new Vector<String>(9); private String simbolojogador1 = "X"; private String simbolojogador2 = "O"; private int njogadasjogador1 = 0; private int njogadasjogador2 = 0; private int vez = 1; private int fimjogo = 0; private int vencedor = 0; private String msg = "Nenhuma Mensagem!"; private String pos1; private String pos2; private String pos3; private String pos4; private String pos5; private String pos6; private String pos7; private String pos8; private String pos9; public JogoVo() { gettabuleiro().add(" "); gettabuleiro().add(" "); gettabuleiro().add(" "); gettabuleiro().add(" "); gettabuleiro().add(" "); gettabuleiro().add(" "); gettabuleiro().add(" "); gettabuleiro().add(" "); gettabuleiro().add(" "); public Vector<String> gettabuleiro() { return tabuleiro; public void settabuleiro(vector<string> tabuleiro) { this.tabuleiro = tabuleiro; public String getsimbolojogador1() { return simbolojogador1; public void setsimbolojogador1(string simbolojogador1) { this.simbolojogador1 = simbolojogador1; public String getsimbolojogador2() { return simbolojogador2; public void setsimbolojogador2(string simbolojogador2) { this.simbolojogador2 = simbolojogador2; public int getnjogadasjogador1() { return njogadasjogador1; public void setnjogadasjogador1(int jogadasjogador1) { njogadasjogador1 = jogadasjogador1; public int getnjogadasjogador2() { return njogadasjogador2; njogadasjogador2 = jogadasjogador2; public int getvez() { return vez;
public void setvez(int vez) { this.vez = vez; public int getfimjogo() { return fimjogo; public void setfimjogo(int fimjogo) { this.fimjogo = fimjogo; public int getvencedor() { return vencedor; public void setvencedor(int vencedor) { this.vencedor = vencedor; public String getmsg() { return msg; public void setmsg(string msg) { this.msg = msg; public String getpos1() { return this.tabuleiro.get(0); public void setpos1(string pos1) { this.pos1 = pos1; public String getpos2() { return this.tabuleiro.get(1); public void setpos2(string pos2) { this.pos2 = pos2; public String getpos3() { return this.tabuleiro.get(2); public void setpos3(string pos3) { this.pos3 = pos3; public String getpos4() { return this.tabuleiro.get(3); public void setpos4(string pos4) { this.pos4 = pos4; public String getpos5() { return this.tabuleiro.get(4); public void setpos5(string pos5) { this.pos5 = pos5; public String getpos6() { return this.tabuleiro.get(5); public void setpos6(string pos6) { this.pos6 = pos6; public String getpos7() { return this.tabuleiro.get(6); public void setpos7(string pos7) { this.pos7 = pos7; public String getpos8() { return this.tabuleiro.get(7); public void setpos8(string pos8) { this.pos8 = pos8; public String getpos9() { return this.tabuleiro.get(8);
public void setpos9(string pos9) { this.pos9 = pos9; Criando a classe de controle do Jogo 1- Crie uma nova classe no pacote de controle. De o nome de JogoControl
package br.santacruz.jogodavelhaweb2.control; import br.santacruz.jogodavelhaweb2.model.vo.jogovo; public class JogoControl { 2- Coque o código abaixo no corpo desta classe public int verificajogada(int jogada, JogoVo jogovo) { if (jogada > 0 && jogada < 10) { if (jogovo.gettabuleiro().get(jogada -1).equals(" ")) return 0; return 0; public JogoVo realizajogada(int jogada, JogoVo jogovo) { String simbolo = ""; if (jogovo.getvez() == 1) simbolo = jogovo.getsimbolojogador1(); simbolo = jogovo.getsimbolojogador2(); jogovo.gettabuleiro().set(jogada-1,simbolo); //Iverte a Vez if (jogovo.getvez() == 1) { jogovo.setvez(2); jogovo.setnjogadasjogador1(jogovo.getnjogadasjogador1()+1); { jogovo.setvez(1); jogovo.setnjogadasjogador2(jogovo.getnjogadasjogador2()+1); return jogovo; public int verificavencedor(jogovo jogovo) { if ( (jogovo.gettabuleiro().get(0).equals("x")) && (jogovo.gettabuleiro().get(1).equals("x")) && (jogovo.gettabuleiro().get(2).equals("x"))) if ( (jogovo.gettabuleiro().get(3).equals("x")) && (jogovo.gettabuleiro().get(4).equals("x")) && (jogovo.gettabuleiro().get(5).equals("x"))) if ( (jogovo.gettabuleiro().get(6).equals("x")) && (jogovo.gettabuleiro().get(7).equals("x")) && (jogovo.gettabuleiro().get(8).equals("x"))) if ( (jogovo.gettabuleiro().get(0).equals("x")) && (jogovo.gettabuleiro().get(3).equals("x")) && (jogovo.gettabuleiro().get(6).equals("x"))) if ( (jogovo.gettabuleiro().get(1).equals("x")) && (jogovo.gettabuleiro().get(4).equals("x")) && (jogovo.gettabuleiro().get(7).equals("x"))) if ( (jogovo.gettabuleiro().get(2).equals("x")) && (jogovo.gettabuleiro().get(5).equals("x")) && (jogovo.gettabuleiro().get(8).equals("x"))) if ( (jogovo.gettabuleiro().get(0).equals("x")) && (jogovo.gettabuleiro().get(4).equals("x")) && (jogovo.gettabuleiro().get(8).equals("x"))) if ( (jogovo.gettabuleiro().get(2).equals("x")) && (jogovo.gettabuleiro().get(4).equals("x")) && (jogovo.gettabuleiro().get(6).equals("x")))
if ( (jogovo.gettabuleiro().get(0).equals("o")) && (jogovo.gettabuleiro().get(1).equals("o")) && (jogovo.gettabuleiro().get(2).equals("o"))) return 2; if ( (jogovo.gettabuleiro().get(3).equals("o")) && (jogovo.gettabuleiro().get(4).equals("o")) && (jogovo.gettabuleiro().get(5).equals("o"))) return 2; if ( (jogovo.gettabuleiro().get(6).equals("o")) && (jogovo.gettabuleiro().get(7).equals("o")) && (jogovo.gettabuleiro().get(8).equals("o"))) return 2; if ( (jogovo.gettabuleiro().get(0).equals("o")) && (jogovo.gettabuleiro().get(3).equals("o")) && (jogovo.gettabuleiro().get(6).equals("o"))) return 2; if ( (jogovo.gettabuleiro().get(1).equals("o")) && (jogovo.gettabuleiro().get(4).equals("o")) && (jogovo.gettabuleiro().get(7).equals("o"))) return 2; if ( (jogovo.gettabuleiro().get(2).equals("o")) && (jogovo.gettabuleiro().get(5).equals("o")) && (jogovo.gettabuleiro().get(8).equals("o"))) return 2; if ( (jogovo.gettabuleiro().get(0).equals("o")) && (jogovo.gettabuleiro().get(4).equals("o")) && (jogovo.gettabuleiro().get(8).equals("o"))) return 2; if ( (jogovo.gettabuleiro().get(2).equals("o")) && (jogovo.gettabuleiro().get(4).equals("o")) && (jogovo.gettabuleiro().get(6).equals("o"))) return 2; return 0; public int verificafimdejogo(jogovo jogovo) { if (jogovo.getnjogadasjogador1()+jogovo.getnjogadasjogador2() >= 9) if (this.verificavencedor(jogovo)!= 0) return 0;
Criando a View 1- O objetivo é desenvolver um Html parecido com o apresentado abaixo 2- Para tanto, criar um novo arquivo JSP conforme apresentado nas figuras abaixo:
3- Clicar em Finish e na tela seguinte colocar o código listado abaixo.
<%@ page contenttype="text/html; charset=iso-8859-1"%> <%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%> <html> <head> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> 4- <script> function jogar(pos) { document.form1.txtjogada.value = pos; document.form1.submit(); </script> </head> <body> <form name="form1" action="escutajogadaservlet" method="get"> <input type="hidden" name="txtjogada"/> <table border="1"> <tr> <td><input type="button" value= "<c:out value="${jogovo.pos1"/>" onclick="jogar(1)"/></td> <td><input type="button" value="<c:out value="${jogovo.pos2"/>" onclick="jogar(2)"/></td> <td><input type="button" value="<c:out value="${jogovo.pos3"/>" onclick="jogar(3)"/></td> </tr> <tr> <td><input type="button" value="<c:out value="${jogovo.pos4"/>" onclick="jogar(4)"/></td> <td><input type="button" value="<c:out value="${jogovo.pos5"/>" onclick="jogar(5)"/></td> <td><input type="button" value="<c:out value="${jogovo.pos6"/>" onclick="jogar(6)"/></td> </tr> <tr> <td><input type="button" value="<c:out value="${jogovo.pos7"/>" onclick="jogar(7)"/></td> <td><input type="button" value="<c:out value="${jogovo.pos8"/>" onclick="jogar(8)"/></td> <td><input type="button" value="<c:out value="${jogovo.pos9"/>" onclick="jogar(9)"/></td> </tr> </table> </form> <c:out value="${jogovo.msg"/> <table> <tr> <td>jogador 1: <c:out value="${jogovo.simbolojogador1"/></td> <td>jogadas: </td> </tr> <tr> </tr> <td>jogador 2: <c:out value="${jogovo.simbolojogador2"/></td> <td>jogadas: </td> </table> Vez: <c:out value="${jogovo.vez"/> </body> </html>
Importar as bibliotecas do JSTL conforme figuras abaixo
Construindo o Servlet 1- Clique com o botão direito no pacote servlets e crie um novo servlet 2- Insira o código abaixo no servlet criado
package br.santacruz.jogodavelhaweb2.control.servlets; import java.io.ioexception; import javax.servlet.requestdispatcher; import javax.servlet.servletexception; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import br.santacruz.jogodavelhaweb2.control.jogocontrol; import br.santacruz.jogodavelhaweb2.model.vo.jogovo; /** * Servlet implementation class EscutaJogadaServlet */ public class EscutaJogadaServlet extends HttpServlet { private static final long serialversionuid = 1L; /** * @see HttpServlet#HttpServlet() */ public EscutaJogadaServlet() { super(); // TODO Auto-generated constructor stub /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub processrequest(request, response); /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { processrequest(request, response); protected void processrequest(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub //Codigo da minha aplicacao! JogoVo jvo = (JogoVo) request.getsession().getattribute("jogovo"); if (jvo == null) { //Jogo Novo! jvo = new JogoVo(); request.getsession().setattribute("jogovo", jvo); jvo = (JogoVo) request.getsession().getattribute("jogovo"); if (jvo.getfimjogo() == 1) { jvo = new JogoVo(); String jogada = request.getparameter("txtjogada"); if (jogada == null) { request.getsession().setattribute("jogovo", jvo); RequestDispatcher view = request.getrequestdispatcher("index.jsp"); view.forward(request, response); int jogadaint = Integer.parseInt(jogada); JogoControl jc = new JogoControl();
//Valida if (jc.verificajogada(jogadaint,jvo) == 1) jvo = jc.realizajogada(jogadaint,jvo); jvo.setmsg("jogada INVALIDA!"); if (jc.verificafimdejogo(jvo) == 1) { jvo.setfimjogo(1); if (jc.verificavencedor(jvo) == 1) jvo.setmsg("fim de Jogo! Vencedor Jogador 1"); if (jc.verificavencedor(jvo) == 2) jvo.setmsg("fim de Jogo! Vencedor Jogador 2"); jvo.setmsg("fim de Jogo! DEU VELHA!"); request.getsession().setattribute("jogovo", jvo); RequestDispatcher view = request.getrequestdispatcher("jogoview.jsp"); view.forward(request, response);
Basta testar agora e verificar se tudo esta funcionando! Bom divertimento!