exercicio02.CaracterSort.buscarJogador(CaracterSort.java:116)
at exercicio02.CaracterSort.cadastro(CaracterSort.java:110)
at exercicio02.CaracterSort.main(CaracterSort.java:39)
When I run the code the first time it runs beauty. But in the next few times it does not work anymore.
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Random;
import java.util.Scanner;
public class CaracterSort {
private static int inteiro;
private static String sequencia = "";
private static Random gerador = new Random();
private static Scanner leitor = new Scanner(System.in);
private static char[] possibilidades = "abcdefghijklmnopqrstuvwxyz0123456789@!#*".toCharArray();
private static String resposta;
private static long tempo;
private static File arquivo = new File("Teste.obj");
private static Jogador jogador;
private static Jogador[] jogadores = new Jogador[50];
private static int qtdeJogadores = 0;
private static boolean continua = true;
private static int numPalavras = 0;
public static void main(String[] args) {
lerJogadores();
cadastro();
jogador.qtdePalavras = 0;
while(continua == true) {
sequencia = gerarSequencia();
System.out.println(sequencia);
jogador.ultimaPalavra = sequencia;
setTempo();
System.out.print("Digite a sequência na sua tela: ");
resposta = leitor.next();
if(resposta.equals(sequencia)) {
if(getTempo() > 6) {
System.out.println("Sua resposta está correta. Porém, você não conseguiu antes dos 6s");
continua = false;
} else {
System.out.println("Sua resposta está correta e você conseguiu antes do tempo: "+getTempo()+"s.");
continua = true;
numPalavras += 1;
jogador.historico[jogador.qtdePalavras] = sequencia+" | "+getTempo()+"s";
jogador.qtdePalavras++;
}
} else {
System.out.println("Resposta incorreta.");
continua = false;
}
}
//Se ele ultrapassar o recorde de acerto de palavras seguidamente, eu atualizo.
if(numPalavras > jogador.palavrasSeguidas) {
jogador.palavrasSeguidas = numPalavras;
}
imprimirJogador(jogador);
salvarJogadores();
}
public static String gerarSequencia() {
sequencia = "";
for(int i = 0; i < 5; i++) {
inteiro = gerador.nextInt(possibilidades.length);
for(int j = 0; j < possibilidades.length; j++) {
if(possibilidades[j] == possibilidades[inteiro]) {
sequencia += possibilidades[j];
}
}
}
return sequencia;
}
public static void setTempo() {
tempo = System.currentTimeMillis();
}
public static long getTempo() {
return (System.currentTimeMillis() - tempo)/1000;
}
public static void lerJogadores() {
try {
ObjectInputStream saida = new ObjectInputStream(new FileInputStream(arquivo));
jogadores = (Jogador[]) saida.readObject();
while(jogadores[qtdeJogadores] != null && qtdeJogadores < 50) {
qtdeJogadores += 1;
}
} catch(FileNotFoundException e) {
} catch(Exception e) {
throw new RuntimeException(e);
}
}
public static void cadastro() {
System.out.print("Digite o nome do Jogador: ");
String nome_jogador = leitor.next();
jogador = buscarJogador(nome_jogador);
}
public static Jogador buscarJogador(String nome) {
Jogador jogador = null;
for(int i = 0; (i < qtdeJogadores) && (jogador == null); i++) {
if(jogadores[i].nome.equalsIgnoreCase(nome)) {
jogador = jogadores[i];
}
}
if(jogador == null) {
jogador = new Jogador();
jogador.nome = nome;
if(qtdeJogadores < 50) {
jogadores[qtdeJogadores] = jogador;
qtdeJogadores += 1;
}
}
return jogador;
}
public static void imprimirJogador(Jogador jogador) {
System.out.println("----- Info do Jogador "+jogador.nome+" -----");
System.out.println("Nome: "+jogador.nome);
System.out.println("Recorde de palavras seguidas: "+jogador.palavrasSeguidas);
System.out.println("Última palavra acessada: "+jogador.ultimaPalavra);
System.out.println();
System.out.println("histórico de palavras e tempo");
System.out.println("Palavra | Tempo");
for(int i = 0; i < jogador.qtdePalavras; i++) {
System.out.println(jogador.historico[i]);
}
}
public static void salvarJogadores() {
try {
ObjectOutputStream saida = new ObjectOutputStream(new FileOutputStream(arquivo));
saida.writeObject(jogadores);
} catch(Exception e) {
throw new RuntimeException(e);
}
}
}
Player Class
import java.io.Serializable;
public class Jogador implements Serializable{
public static String nome;
public static int palavrasSeguidas;
public static String ultimaPalavra;
public static String[] historico = new String[50];
public static int qtdePalavras = 0;
public static void main(String[] args) {
while(historico[qtdePalavras] != null && qtdePalavras < 50) {
qtdePalavras += 1;
}
}
}