Boa Tarde,
Estou com um pouco de dificuldade, pois não estou conseguindo chamar a class AppJogoDaVida para o main.
Alguém pode me ajudar ?
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class teste {
public static void main(String[] args) throws IOException {
IniciaJogoDaVida(args[0], Integer.valueOf(args[1]));
}
public class AppJogoDaVida {
public int tamanho = 0;
public int[][] mapa = null;
public void IniciaJogoDaVida(final String mapadoJogo, final int numGeracoes) throws IOException {
iniciaSimulacao(mapadoJogo, numGeracoes);//O Parametro mapadoJogo é o args[0] e o numGeracoes é o args[1].
salvarArquivo(imprimeMapa(), numGeracoes);//Salva o mapa junto ao conte�do em um arquivo txt.
System.out.println("Finalizando Simulacao.");
}
public void iniciaSimulacao(final String mapadoJogo, final int numGeracoes) throws IOException {
System.out.println("Iniciando Simulacao...");
List<String> linhas = lerArquivoMapa(mapadoJogo);//Inicia uma lista com as linhas do mapadoJogo.
carregarValoresCelulas(linhas);//Carrega a lista com os dados do arquivo txt.
//Gera o numero de Geracoes
Scanner entrada = new Scanner (System.in);
int geração;
System.out.println("Digite a quantidade de gerações:");
geração= entrada.nextInt();
for (int i = 0; i < geração; i++) {
mapa = geração();
System.out.println("geração: " + (i + 1));
}
}
public void carregarValoresCelulas(List<String> strings) {
setTamanho(Integer.parseInt(strings.get(0)));//Altera o valor do tamanho a matriz.
mapa = new int[tamanho][tamanho];//Inicia a matriz com seu novo tamanho.
//Atribui os valores do txt para a matriz.
for (int i = 1; i < tamanho+1; i++) {
for (int j = 0; j < tamanho; j++) {
char caracter = strings.get(i).charAt(j);//Pega na posicao o caracter no caso (0 e 1), grava em uma variavel auxiliar.
int valor = Integer.valueOf(String.valueOf(caracter));//Converte de String para Inteiro.
mapa[i-1][j] = valor;//Grava na matriz o valor.
}
}
}
public List<String> lerArquivoMapa(final String mapadoJogo) throws IOException {
ArrayList<String> linhas = new ArrayList<>();//Declarando um arraylist para as linhas
try (BufferedReader leitor = new BufferedReader(new FileReader(mapadoJogo))) {//Inicializa um leitor para ler cada linha do txt
String linha = leitor.readLine();//Le a primeira linha
while (linha != null) {
boolean adc;
adc = linhas.add(linha);
linha = leitor.readLine();
}
}
return linhas;//Retorna o arraylist de linhas
}
public void salvarArquivo(String conteudo, int generationNumber) throws FileNotFoundException, UnsupportedEncodingException {
PrintWriter writer = new PrintWriter(generationNumber + "geracoes.txt");//A classe FileWriter serve para escrever diretamente no arquivo
writer.println(conteudo);//Escreve o conteudo no novo arquivo
writer.close();//Fecha o arquivo
}
public final String imprimeMapa() {
String mapafinal = "";
this.mapa = getMatriz();//Carrega a matriz no mapa
for (int i = 0; i < tamanho; i++) {//Linha da matriz
for (int j = 0; j < tamanho; j++) {//coluna da matriz
mapafinal += Integer.toString(mapa[j]);//Monta o mapafinal com a matriz
}
mapafinal += "\r\n";//Pula uma linha.
}
return mapafinal;
}
public int verificarVizinhos(int i, int j) {
try {
return mapa[j];//Retorna o mapa(matriz) com os parametros passados pelo metodo
} catch (Exception e) {
return 0;//Tratamento para a situacao de excecao, ele retorna 0
}
}
public int vizinhos(int i, int j) {
return verificarVizinhos(i - 1, j - 1)//inf. esquerdo
+ verificarVizinhos(i - 1, j)//inferior
+ verificarVizinhos(i - 1, j + 1)//inf. direito
+ verificarVizinhos(i, j - 1)//esquerdo
+ verificarVizinhos(i, j + 1)//direito
+ verificarVizinhos(i + 1, j - 1)//sup. esquerdo
+ verificarVizinhos(i + 1, j)//superior
+ verificarVizinhos(i + 1, j + 1);//superior direito
}
public int[][] geração() {
int aux[][] = new int[this.tamanho][this.tamanho];//Declara uma nova matriz com tamanho definido pela variavel "tamanho"
for (int i = 0; i < tamanho; i++) {//Linha da matriz
for (int j = 0; j < tamanho; j++) {//Coluna da matriz
if (mapa[j] == 1) {
if (vizinhos(i, j) < 2 || vizinhos(i, j) > 3) {
aux[j] = 0;
} else {
aux[j] = 1;
}
} else {
if (vizinhos(i, j) == 3) {
aux[j] = 1;
} else {
aux[j] = 0;
}
}
}
}
return aux;
}
//Permite que voce chame o Mapa (Matriz)
public int[][] getMatriz() {
return mapa;
}
//Permite voce alterar o tamanho da matriz, apenas sendo necessario chamar set e atribui um novo valor
public void setTamanho(int tamanho) {
this.tamanho=tamanho;
}
}
}