### 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);
}
```