Ir ao conteúdo
  • Cadastre-se

Como eu consigo declarar a class appjogodavida no main?


Posts recomendados

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;
    }
}
}
 

 

Link para o comentário
Compartilhar em outros sites

  • Moderador

Não programo mais em Java. mas não é o caso de criar uma instância de objeto da classe AppJogoDaVida no seu main?

Basicamente quando se cria uma classe, você precisa instanciar um objeto dela caso ela tenha métodos...

 

por exemplo:

AppJogoDaVida jogo = new AppJogoDaVida(); 

jogo.IniciaJogoDaVida();

E por aí vai.. veja que a variável de instância é jogo,  que instancia um objeto da classe AppJogoDaVida.

depois  é atribuido o método iniciaJogoDaVida()...

 

Isso não é a sua solução é uma referência para você pensar em uma solução.

Quando se lida com orientação a objetos.. classes e métodos.. sempre exige instanciar um objeto da classe que quer usar. 

Isso vale não somente para java, mas para qualquer linguagem que use orientação a objetos

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...