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

Sign in to follow this  
fireburn

erro em jogo do galo ...(noob)

Recommended Posts

fireburn

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 ....

Share this post


Link to post
Share on other sites
SitoMan

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

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

(Sem os asteriscos)

CUMPZ

Share this post


Link to post
Share on other sites
Knitter

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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.