Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package jogodavelha;
- import java.util.*;
- /* @author Vitor Rebello */
- public class JogoDaVelha {
- //Membros do jogador:
- static int jogadorAtual, casasVazias;
- static char[][] tabuleiro;
- static boolean fimDeJogo;
- static String jogada;
- /**
- * @param args the command line arguments
- */
- public static void main(String[] args) {
- //Inicializando o Tabueliro:
- Scanner ler = new Scanner (System.in);
- tabuleiro = new char[3][3];
- for(int x = 0; x < 3; x++) {
- for(int y = 0; y < 3; y++) {
- tabuleiro[x][y] = ' ';
- }
- }
- casasVazias = 9;
- //Definindo o jogador aleatório:
- Random tmp = new Random();
- jogadorAtual = tmp.nextInt(2) + 1;
- //Loop Principal:
- do
- {
- //Buscando a entrada do jogador atual:
- boolean jogadaValida;
- do
- {
- //Imprimindo o tabuleiro:
- Imprimir_Jogo();
- //Pedindo a entrada do Jogador:
- System.out.print("Jogador " + jogadorAtual + ", entre com a posicao que deseja jogar (1 ~ 9): ");
- jogada = ler.next();
- jogadaValida = Valida_Jogada(jogada);
- }while(!jogadaValida);
- //Trocando o jogador atual:
- if(jogadorAtual == 1) {
- jogadorAtual = 2;
- }else {
- jogadorAtual = 1;
- }
- //Verificando se Alguém ganhou:
- int resultadoPartida = verificaStatus(tabuleiro);
- if(resultadoPartida != 0) {
- fimDeJogo = true;
- exibeVitoria(resultadoPartida);
- }
- else {
- //Preenchemos todas as casas?
- if(casasVazias == 0) {
- fimDeJogo = true;
- exibeVitoria(resultadoPartida);
- }
- }
- }while(!fimDeJogo);
- }
- //Função que exibe o ganhador:
- public static void exibeVitoria(int vencedor) {
- //Limpando a tela:
- if(vencedor == 1 || vencedor == 2) {
- Imprimir_Jogo();
- System.out.println("|-----------------------------------------------------------------|");
- System.out.println("| PARABÉNS! |");
- System.out.println("|-----------------------------------------------------------------|");
- System.out.println();
- System.out.println("JOGADOR " + vencedor + " VENCEU!");
- }
- else {
- Imprimir_Jogo();
- System.out.println("|-----------------------------------------------------------------|");
- System.out.println("| FIM DE JOGO! |");
- System.out.println("|-----------------------------------------------------------------|");
- System.out.println();
- System.out.println();
- System.out.println("NINGUEM GANHOU... JOGUE NOVAMENTE!");
- }
- }
- //Função que verifica se o jogo acabou:
- public static int verificaStatus(char[][] tabuleiroAtual) {
- //Verificando a primeira linha:
- if(tabuleiroAtual[0][0] == tabuleiroAtual[0][1] && tabuleiroAtual[0][1] == tabuleiroAtual[0][2] && tabuleiroAtual[0][0] != ' ') {
- if(tabuleiroAtual[0][0] == 'X')
- return 1;
- if(tabuleiroAtual[0][0] == 'O')
- return 2;
- }
- //Verificando a Segunda linha:
- if(tabuleiroAtual[1][0] == tabuleiroAtual[1][1] && tabuleiroAtual[1][1] == tabuleiroAtual[1][2] && tabuleiroAtual[1][0] != ' ') {
- if(tabuleiroAtual[1][0] == 'X')
- return 1;
- if(tabuleiroAtual[1][0] == 'O')
- return 2;
- }
- //Verificando a Terceira linha:
- if(tabuleiroAtual[2][0] == tabuleiroAtual[2][1] && tabuleiroAtual[2][1] == tabuleiroAtual[2][2] && tabuleiroAtual[2][0] != ' ') {
- if(tabuleiroAtual[2][0] == 'X')
- return 1;
- if(tabuleiroAtual[2][0] == 'O')
- return 2;
- }
- //Verificando a primeira coluna:
- if(tabuleiroAtual[0][0] == tabuleiroAtual[1][0] && tabuleiroAtual[1][0] == tabuleiroAtual[2][0] && tabuleiroAtual[0][0] != ' ') {
- if(tabuleiroAtual[0][0] == 'X')
- return 1;
- if(tabuleiroAtual[0][0] == 'O')
- return 2;
- }
- //Verificando a segunda coluna:
- if(tabuleiroAtual[0][1] == tabuleiroAtual[1][1] && tabuleiroAtual[1][1] == tabuleiroAtual[2][1] && tabuleiroAtual[0][1] != ' ') {
- if(tabuleiroAtual[0][1] == 'X')
- return 1;
- if(tabuleiroAtual[0][1] == 'O')
- return 2;
- }
- //Verificando a terceira coluna:
- if(tabuleiroAtual[0][2] == tabuleiroAtual[1][2] && tabuleiroAtual[1][2] == tabuleiroAtual[2][2] && tabuleiroAtual[0][2] != ' ') {
- if(tabuleiroAtual[0][2] == 'X')
- return 1;
- if(tabuleiroAtual[0][2] == 'O')
- return 2;
- }
- //Verificando a Diagonal 1:
- if(tabuleiroAtual[0][0] == tabuleiroAtual[1][1] && tabuleiroAtual[1][1] == tabuleiroAtual[2][2] && tabuleiroAtual[0][0] != ' ') {
- if(tabuleiroAtual[0][0] == 'X')
- return 1;
- if(tabuleiroAtual[0][0] == 'O')
- return 2;
- }
- //Verificando a Diagonal 2:
- if(tabuleiroAtual[0][2] == tabuleiroAtual[1][1] && tabuleiroAtual[1][1] == tabuleiroAtual[2][0] && tabuleiroAtual[0][2] != ' ') {
- if(tabuleiroAtual[0][2] == 'X')
- return 1;
- if(tabuleiroAtual[0][2] == 'O')
- return 2;
- }
- return 0;
- }
- //Função que valida a jogada:
- public static boolean Valida_Jogada(String jogada) {
- //Buscando o jogador atual:
- char caractere;
- if(jogadorAtual == 1) {
- caractere = 'X';
- }
- else {
- caractere = 'O';
- }
- //Convertendo para int:
- int tmp;
- try {
- tmp = Integer.parseInt(jogada);
- }catch(Exception e) {
- //Jogada inválida. Não é um número:
- return false;
- }
- //Verificando se está entre 1 e 9:
- if(tmp < 1 || tmp > 9) {
- return false;
- }
- //Verificando se a posição no tabuleiro pode ser jogada:
- switch(tmp) {
- case 1:
- if(tabuleiro[0][0] != ' ') {
- return false;
- }
- else {
- tabuleiro[0][0] = caractere;
- casasVazias -= 1;
- }
- break;
- case 2:
- if(tabuleiro[0][1] != ' ') {
- return false;
- }
- else {
- tabuleiro[0][1] = caractere;
- casasVazias -= 1;
- }
- break;
- case 3:
- if(tabuleiro[0][2] != ' ') {
- return false;
- }
- else {
- tabuleiro[0][2] = caractere;
- casasVazias -= 1;
- }
- break;
- case 4:
- if(tabuleiro[1][0] != ' ') {
- return false;
- }
- else {
- tabuleiro[1][0] = caractere;
- casasVazias -= 1;
- }
- break;
- case 5:
- if(tabuleiro[1][1] != ' ') {
- return false;
- }
- else {
- tabuleiro[1][1] = caractere;
- casasVazias -= 1;
- }
- break;
- case 6:
- if(tabuleiro[1][2] != ' ') {
- return false;
- }
- else {
- tabuleiro[1][2] = caractere;
- casasVazias -= 1;
- }
- break;
- case 7:
- if(tabuleiro[2][0] != ' ') {
- return false;
- }
- else {
- tabuleiro[2][0] = caractere;
- casasVazias -= 1;
- }
- break;
- case 8:
- if(tabuleiro[2][1] != ' ') {
- return false;
- }
- else {
- tabuleiro[2][1] = caractere;
- casasVazias -= 1;
- }
- break;
- case 9:
- if(tabuleiro[2][2] != ' ') {
- return false;
- }
- else {
- tabuleiro[2][2] = caractere;
- casasVazias -= 1;
- }
- break;
- }
- return true;
- }
- //Função que imprime o tabueliro atual:
- public static void Imprimir_Jogo() {
- //Desenhando o tabuleiro:
- System.out.println("|-----------------------------------------------------------------|");
- System.out.println("| JOGO DA VELHA |");
- System.out.println("|-----------------------------------------------------------------|");
- System.out.println();
- System.out.println();
- System.out.println(tabuleiro[0][0] + " | " + tabuleiro[0][1] + " | "+ tabuleiro[0][2]);
- System.out.println("-----------");
- System.out.println(tabuleiro[1][0] + " | " + tabuleiro[1][1] + " | "+ tabuleiro[1][2]);
- System.out.println("-----------");
- System.out.println(tabuleiro[2][0] + " | " + tabuleiro[2][1] + " | "+ tabuleiro[2][2]);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement