• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

fireburn

erro em jogo do galo ...(noob)

3 mensagens neste tópico

Bem como projecto foi me pedido para desenvolver o jogo do galo em java e em modo de consola...

ja consegui e junçao com um colega desenvolver algum codigo.. se fosse era possivel que alguem desse aqui uma olhadela pois isto esta a dar aqui um erro que nao consigo entender..

package jgalo;
import java.io.*;
public class jgalo {

/*MATRIZ 3X3*/
public static char matrix[][]=new char[3][3];

    static String nome1;
    static String nome2;

    public static void main(String[]args, BufferedReader keyboard) throws IOException {

        char resultado;

        System.out.print("Este é o Jogo do Galo.\n");
        /* NOME DOS JOGADORES */
        System.out.println("Nome do 1 Jogador?");
        nome1 = keyboard.readLine();
        System.out.print("Nome do 2 Jogador?");
        nome2 = keyboard.readLine();
  
        resultado =  ' ';
        init_matrix();

        do {  
            /* JOGADOR 1 */
    tabuleiro();
            jogador1();
            resultado = vencedor(); 
            /* JOGADOR 2 */
    tabuleiro();
            jogador2();
            resultado = vencedor();
            /* VENCEDOR */
            resultado = vencedor();
        } 	
  
        /* VENCEDOR POR JOGADOR */
        while(resultado== ' ');

        if(resultado=='X')
            System.out.print("Ganhou o jogador \n" +nome1);
        else 
            System.out.print("Ganhou o jogador \n" +nome2);
        tabuleiro(); 
    }

    /* INICIAÇÃO DA MATRIZ */
    public static void init_matrix() {
        int i;
        int j;

        for(i=0; i<3; i++)
            for(j=0; j<3; j++) 
                matrix[i][j] =  ' ';
    }

    /* COORDENADAS DO JOGADOR 1*/
    public static void jogador1() throws IOException {
        int x; 
        int y;

        String linha = null;
        System.out.print(nome1);
        System.out.println("Introduza as Coordenadas de X: ");
        BufferedReader is = new BufferedReader(new InputStreamReader(System.in));
        linha = is.readLine();
        x = Integer.parseInt(linha);
    
        System.out.println("Introduza as Coordenadas de Y: ");
        is = new BufferedReader(new InputStreamReader(System.in));
        linha = is.readLine();
        y = Integer.parseInt(linha);

        x--; 
        y--;

        if(matrix[x][y]!= ' '){
            System.out.print("Coordenada invalida!\n");
            System.out.print("Tente de novo!\n");
            jogador1();
        } else
            matrix[x][y] = 'X';
    }


    /* COORDENADAS DO JOGADOR 2*/
    public static void jogador2() throws IOException {
        int x; 
        int y;

        String linha = null;
        System.out.print(nome2);
        System.out.print("Introduza as Coordenadas de X: ");
        BufferedReader is = new BufferedReader(new InputStreamReader(System.in));
        linha = is.readLine();
        x = Integer.parseInt(linha);
    
        System.out.print("Introduza as Coordenadas de Y: ");
        is = new BufferedReader(new InputStreamReader(System.in));
        linha = is.readLine();
        y = Integer.parseInt(linha);

        x--; 
        y--;

        if(matrix[x][y]!= ' '){
            System.out.print("Coordenada invalida!\n");
    System.out.print("Tente de novo!\n");
            jogador2();
        } else
            matrix[x][y] = 'O';
    }

    /* INICIAÇÃO DO TABULEIRO */
    public static void tabuleiro() {
        int t;
        for(t=0; t<3; t++) {
            System.out.print(" "+matrix[t][0]+" | "+matrix[t][1]+" | "+matrix[t][2]);
              if(t!=2) 
                System.out.print("\n---|---|---\n");
       }
    }

    /* VENCEDOR */
    public static char vencedor() {
        int i;
        /* VER LINHAS */
        for(i=0; i<3; i++)
            if(matrix[i][0]==matrix[i][1] && matrix[i][0]==matrix[i][2]) 
                return matrix[i][0];

        /* VER COLUNAS */
        for(i=0; i<3; i++)
            if(matrix[0][i]==matrix[1][i] && matrix[0][i]==matrix[2][i]) 
                return matrix[0][i];

        /* VER DIAGONAIS */
        if(matrix[0][0]==matrix[1][1] && matrix[1][1]==matrix[2][2]) 
            return matrix[0][0];
        if(matrix[0][2]==matrix[1][1] && matrix[1][1]==matrix[2][0]) 
            return matrix[0][2];

        return ' ';
    }
}

o erro que me esta a dar e o seguinte ...

java.lang.NoSuchMethodError: main

Exception in thread "main"

help anyone ....

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mete o código de indensão no post para se preceber bem!

[*code=java]CODIGO][/code*]

(Sem os asteriscos)

CUMPZ

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem, corrigi a indentação para que se percebe melhor o código e coloquei as tags para colorir todo o código de acordo com as regras de Java, além disso deixo também a dica de, quando possuires código tão grande, colocares o mesmo no pastebin do P@P e deixas apenas o link, podes consultar o pastbin em http://paste.portugal-a-programar.org/.

Antes de ir ao problema vou apontas alguns pormenores que deves melhorar:

- O nome das classes em Java começa por maiúsculas, tal como o nome dos ficheiros de código.

- Melhor indentação, de preferência seguindo as regras para a linguagens, que podes ver em  Convenções de Código

- Remover a palavra static de todos os métodos que não sejam métodos de classe, isto é importante, dado que estás a cometer um erro no âmbito da linguagem.

Em relação ao erro, é simples, não tens um método main, tal como a mensagem de erro te indica, o método não existe na classe. Estou a assumir que o código está todo a compilar sem problemas, e que a mensagem de erro te é mostrada quando tentas executar a aplicação.

Podes estar a pensar que tens o método mesmo no inicio, pois bem o método main de uma classe tem de respeitar uma assinatura pré-definida, neste caso tens um método que se chama "main" mas não é o que devias ter. A assinatura de um  método é determinada pelo seu nome + o tipo de parâmetros de entrada + número de parâmetros de entrada + a ordem dos parâmetros. O nome dos parâmetros e o tipo de retorno, bem como a visibilidade, não importam.

A assinatura do método main é public static main(String[] args). Terás de ter um método com esta assinatura para que a aplicação funcione, e é esse o método de entrada da aplicação. Podes ver uma breve explicação sobre o método main em Tutorial Completo de Programação em Java / 3.7 - Método Main

Uma pergunta, porque raio estás a passar um BufferedReader no método a que chamaste "main"? Se pretendes que esse seja o método de entrada da aplicação terás de remover esse parâmetro.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora