### Aplicação Jogo da velha Sokets #### Band Smell #### Extração de método Na Classe main com código vencedor duplicado ``` if (!jogo.Vencedor(jogadas).equals("null")) { System.out.println("Parabens, Você Venceu"); jogar.enviar_mensagem(posição); break; } ``` #### Solução Foi criado um método que pode ser solicitado no código. ``` private static boolean Vencedor_Da_Partida(String jogador) { if (!jogo.Vencedor(jogadas).equals("null")) { System.out.println("Parabens, O " + jogador + " Venceu"); return false; } return true; } ``` #### Refatoração Classe man com Varias linhas de codigos sem estrutura adequada ``` public static void main(String[] args) throws Exception { Jogador1 jogar = new Jogador1("127.0.0.1", 15500); Scanner tec = new Scanner(System.in); JogoJogador1 jogo = new JogoJogador1(); String posição, resposta; int valida = 0, jogadas = 0; /* ------Jogo Começa aqui------- 1 : 2 : 3 As Posiçoes são noemadas de ........... 1 a 9 na qual o jogador deverar escolher 4 : 5 : 6 ........... 7 : 8 : 9 jogo.Valido => Verifica se a posiçao e valida */ while (true) { do {//inicia jogador 1 System.out.println("::::::::Jogo da velha::::::::"); jogo.Implesão(); System.out.println("Jogador 1 Informe uma posicao: "); posição = tec.next(); while (!jogo.Valido(posição)) { System.out.println("Jogada Invalida"); System.out.println("Jogador 1 Informe uma posicao: "); posição = tec.next(); valida = 0; } jogo.Jogada(posição, "X"); valida = 1; } while (valida == 0);//fim jogador 1 if (!jogo.Vencedor(jogadas).equals("null")) { System.out.println("Parabens, Você Venceu"); jogar.enviar_mensagem(posição); break; } jogar.enviar_mensagem(posição); // enviando posição jogadas++; valida = 0; do {//inicia jogador 2 System.out.println("::::::::Jogo da velha::::::::"); jogo.Implesão(); System.out.println("Aguardando Jogador..."); posição = (String) jogar.receber_mensagem(); jogo.Jogada(posição, "O"); valida = 1; } while (valida == 0);//fim jogador 2 jogadas++; valida = 0; if (!jogo.Vencedor(jogadas).equals("null")) { System.out.println("O jogador 2 Vencel"); break; } } //jogar.enviar_mensagem("Ola, eu sou o cliente!"); //String resposta = (String) jogar.receber_mensagem(); //System.out.println("Mensagem do Servidor: " + resposta); jogar.finalizar(); } ``` Classe main cahamndo a método Iniciar_Jogo o que torna mais organizado ``` public static void main(String[] args) throws Exception { Iniciar_Jogo(); } ``` método Iniciar_Jogo ``` public static void Iniciar_Jogo() throws Exception{ jogar = new Iniciar_Jogo_da_Velha("127.0.0.1", 15500); while (teste) { Inicia_Jogador1(); teste = Vencedor_Da_Partida("Jogador 1"); Inicia_Jogador2(); teste = Vencedor_Da_Partida("Jogador 2"); } jogar.finalizar(); } ``` ### Grador_de_Senha #### Renomeação de métodos Método Gerador_de_senha antes da renomeação de variavel ``` public static int geradorSenha(String nome){ String senha = ""; String vetorNome[] = nome.split(" "); for (int i = 0; i < vetorNome.length; i++) { senha += vetorNome[i].length(); } return Integer.parseInt(senha); } ``` Método Gerador de senha com a variavel do loop for renomeado. ``` public static int geradorSenha(String nome){ String senha = ""; String vetorNome[] = nome.split(" "); for (int conatdor = 0; conatdor < vetorNome.length; conatdor++) { senha += vetorNome[conatdor].length(); } return Integer.parseInt(senha); } ```