Centro de Ciências Exatas, Ambientais e de Tecnologias
Faculdade de Engenharia de Computação

Paradigmas de Linguagens de Programação
3o. Laboratório - 06, 07, 10 e 12 de Março

Assuntos: Acesso a Membros de Classe (Tabuleiro de um Jogo da Velha)


Salve a classe Tabuleiro.class em uma pasta, aplique sobre ela o comando javap (javap Tabuleiro) e veja quais são os membros desta classe.

Perceba que ela tem três propriedades estáticas (o que indica que elas são membros da Classe e não de Instância) que são:

Perceba que, por todas as propriedades serem private (privativas), nenhuma outra classe consegue acessá-las.

Os métodos apresentados na classe são:

Siga os passos descritos abaixo e, utilizando a classe Tabuleiro, desenvolva uma classe JogoDaVelha que tenha um void main() que permita a interação de dois jogadores em um jogo da velha.

Para compilar a sua classe, utilize a linha de comando abaixo:

javac -classpath . Velha.java

Antes de desenvolver o jogo, execute a classe listada abaixo e depois altere-a incluindo uma chamada para cada método da classe Tabuleiro e perceba também os retornos do método char Jogada(int.int).


A classe abaixo tem por finalidade demostrar a utilização de membros qualificados como static. Compile a classe abaixo conforme a linha de comando indicada, execute a classe, observe o resultado e responda a pergunta feita logo após o código.

class JogoDaVelha
{
    public static void main(String Args[])
    {
        Tabuleiro T01 = new Tabuleiro(); // Instanciando um objeto da classe Tabuleiro
        Tabuleiro T02 = new Tabuleiro(); // Instanciando um objeto da classe Tabuleiro

        T01.Novo();
        T02.Novo();

        System.out.println("Tabuleiro 01");
        T01.MostraTabuleiro();

        System.out.println("Tabuleiro 02");
        T02.MostraTabuleiro();

        T01.Jogada(1,1);

        System.out.println("Tabuleiro 01");
        T01.MostraTabuleiro();

        System.out.println("Tabuleiro 02");
        T02.MostraTabuleiro();

        Tabuleiro.Novo();

        System.out.println("Tabuleiro 01");
        T01.MostraTabuleiro();

        System.out.println("Tabuleiro 02");
        T02.MostraTabuleiro();
    }
}
A que conclusões podemos chegar com relação à declaração e utilização de membros qualificados como static?

Apague as instâncias criadas e execute as chamadas dos métodos usando diretamente o nome da classe. Qual a diferença ?


Para desenvolver a Classe JogoDaVelha:
Primeira Etapa

Crie uma classe contendo como membro o método public static void main(String Args[])

No main, declare e instancie um objeto do tipo BufferedReader, relacione a ele uma instancia do objeto InputStreamReader ligado ao System.in.

Não se esqueça de importar os pacotes necessário no início do seu arquivo e nem de colocar o throws IOException no método main().

Acione o método Novo() da classe Tabuleiro para iniciar um novo Jogo da velha.

Usando a instancia do BufferedReader, solicite ao usuário a digitação de uma Linha e de uma Coluna. Não se esqueça de declarar as variáveis para armazenar estes valores.

Acione o método char Jogada(int,int) da classe Tabuleiro passando como parâmetro os dois valores digitados pelo usuário.

Acione o método MostraTabuleiro() da classe Tabuleiro para verificar a realização da jogada acima.

Compile e execute a sua classe.

Segunda Etapa

Adicione um comando que implemente uma repetição, a princípio infinita, permitindo ao usuário indicar várias jogadas. A cada nova jogada, exiba novamente o tabuleiro.

Utilize o método char VezDeQuem() da classe tabuleiro para indicar ao usuário de quem é a vez da jogada.

Compile e execute a sua classe novamente.

Terceira Etapa

Imprima em tela o retorno do método char Jogada(int,int) da classe Tabuleiro para que você acompanhe os acontecimentos do jogo. Após verificar o comportamento do método de acordo com as 5 situações, retire a impressão do retorno pois ela não é necessária.

Utilize o retorno do método char Jogada(int,int) da classe Tabuleiro para encerrar a partida quando algum jogador ganhar (X ou O) ou quando der Velha. Altere o comando de repetição para que ela não seja mais infinita.

Emita mensagens ao usuário quando o jogo for terminado ou quando a jogada não puder ser realizada.

Compile e execute a sua classe novamente.

Quarta Etapa

Teste todas as possibilidades de jogo (jogue em posições já ocupadas, deixe o jogo acabar em Velha, deixe o jogador X ganhar e deixe o jogador O ganhar).

Quinta Etapa

Efetue as melhorias que julgar apropriadas

BOM TRABALHO !!!