Estou recebendo esse erro.
Escolha o Jogador
- Humano
- Computador
Opção: 1
Agora selecione a opção 2
Jogador ‘Humano’ criado!
- Humano
- Computador
Opção: 2
Agora selecione a opção 2
Jogador VS Computador
Jogo da velha
Escolha a dificuldade 1,2 ou 3:
2
Rodada 1
Linha: Exception in thread “main” java.util.NoSuchElementException
at java.base/java.util.Scanner.throwFor(Scanner.java:937)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
at com.uninter.Humano.Tentativa(Humano.java:25)
at com.uninter.Humano.jogar(Humano.java:16)
at com.uninter.Jogo.Jogar(Jogo.java:70)
at com.uninter.Jogo.(Jogo.java:17)
at com.uninter.JogoDaVelha.main(JogoDaVelha.java:8)
CÓDIGO
package com.uninter;
import java.util.Scanner;
public class Jogo { //classe jogo
private Tabuleiro tabuleiro;
private int rodada=1, vez=1;
private Jogador jogador1;
public Scanner entrada = new Scanner(System.in);
private int opcao;
public Jogo(){ //inicia o jogo
tabuleiro = new Tabuleiro();
iniciarJogadores();
dificuldade();
while( Jogar() );
}
public void iniciarJogadores(){ //mensagem de inicio para esolher o jogador
System.out.println("Escolha o Jogador");
if(escolherJogador() == 1)
this.jogador1 = new Humano(1);
else
new Computador(2);
if(escolherJogador() == 1)
new Computador(2);
}
public void dificuldade() { //escolher dificuldade
try (Scanner entrada = new Scanner(System.in)) {
System.out.println(" Jogo da velha");
System.out.println("Escolha a dificuldade 1,2 ou 3:");
setOpcao(entrada.nextInt());
}
}
public int escolherJogador(){ //opção para escolher qual jogador
int opcao=1;
do{
System.out.println("1. Humano");
System.out.println("2. Computador\n");
System.out.print("Opção: ");
opcao = entrada.nextInt();
System.out.println();
System.out.println("Agora selecione a opção 2");
System.out.println();
if(opcao != 1)
System.out.println("Jogador VS Computador");
}
while(opcao != 1 && opcao != 2);
return opcao;
}
public boolean Jogar(){
if(ganhou() == 0 ){
System.out.println("");
System.out.println("Rodada "+rodada);
if(vez()==1)
jogador1.jogar(tabuleiro);
if(tabuleiro.tabuleiroCompleto()){ //se o tabuleiro estiver completo
System.out.println("Tabuleiro Completo. Jogo empatado");
return false;
}
vez++;
rodada++;
return true;
} else{
if(ganhou() == -1 ) //mensagem de ganhador
System.out.println("Jogador 1 ganhou!");
return false;
}
}
public int vez(){ // evita o jogo ficar em loop eparando a vez de cada um
if(vez%2 == 1)
return 1;
else
return 2;
}
public int ganhou(){ //checa quem ganhou
if(tabuleiro.Linhas() == 1)
return 1;
if(tabuleiro.Colunas() == 1)
return 1;
if(tabuleiro.Diagonais() == 1)
return 1;
if(tabuleiro.Linhas() == -1)
return -1;
if(tabuleiro.Colunas() == -1)
return -1;
if(tabuleiro.Diagonais() == -1)
return -1;
return 0;
}
public int getOpcao() {
return opcao;
}
public void setOpcao(int opcao) {
this.opcao = opcao;
}
}