Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
cardoso16059

Como eu consigo declarar a class appjogodavida no main?

Recommended Posts

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

 

Editado por dif
Usar o botão CODE <>

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×