Você está na página 1de 3

package fundamentos;

import java.util.Scanner;
import java.util.Random;

public class JogoDaVelha {


public static final char[][] Tabuleiro = {
{' ', ' ', ' '},
{' ', ' ', ' '},
{' ', ' ', ' '}
};

public static void main(final String[] args) {


try (Scanner sc = new Scanner(System.in)) {
final Random ran = new Random();

System.out.println("Digite Seu Nome:");


final Scanner st = new Scanner(System.in);
final String name = st.nextLine();
System.out.println("Seja Bem-Vindo!!" + name);

while (true) {
exibirTabuleiro(Tabuleiro);

// Jogada do Jogador
realizarJogada(sc, 'X', Tabuleiro);

if (verificarVitoria(Tabuleiro, 'X')) {
exibirTabuleiro(Tabuleiro);
System.out.println("Você venceu!");
break;
}

// Jogada da máquina
realizarJogadaMaquina(ran, Tabuleiro);

if (verificarVitoria(Tabuleiro, 'O')) {
exibirTabuleiro(Tabuleiro);
System.out.println("A Máquina venceu!");
break;
}
}
}
}

private static void realizarJogada(final Scanner sc, final char jogador, final
char[][] tabuleiro) {
while (true) {
System.out.println("Digite a posicao correspodente a linha (0 - 2)");
final int linha = sc.nextInt();
System.out.println("Digite a posicao correspodente a Coluna (0 - 2)");
final int coluna = sc.nextInt();

if (tabuleiro[linha][coluna] == ' ') {


tabuleiro[linha][coluna] = jogador;
break;
} else {
System.out.println("Esta posição está ocupada, tente novamente.");
}
}
}

private static void realizarJogadaMaquina(final Random ran, final char[][]


tabuleiro) {
while (true) {
final int linhaMaquina = ran.nextInt(3);
final int colunaMaquina = ran.nextInt(3);

if (tabuleiro[linhaMaquina][colunaMaquina] == ' ') {


tabuleiro[linhaMaquina][colunaMaquina] = 'O';
break;
}
}
}
private static boolean verificarVitoria(final char[][] tabuleiro, final char
jogador) {
// Verificar linhas, colunas e diagonais para a vitória do jogador
for (int i = 0; i < 3; i++) {
if (tabuleiro[i][0] == jogador && tabuleiro[i][1] == jogador &&
tabuleiro[i][2] == jogador) {
return true; // Vitória nas linhas
}
if (tabuleiro[0][i] == jogador && tabuleiro[1][i] == jogador &&
tabuleiro[2][i] == jogador) {
return true; // Vitória nas colunas
}
}
if (tabuleiro[0][0] == jogador && tabuleiro[1][1] == jogador &&
tabuleiro[2][2] == jogador) {
return true; // Vitória na diagonal principal
}
if (tabuleiro[0][2] == jogador && tabuleiro[1][1] == jogador &&
tabuleiro[2][0] == jogador) {
return true; // Vitória na diagonal secundária
}
return false; // Nenhum jogador venceu
}

/*private static boolean verificarVitoria(char[][] tabuleiro, int jogador) {


// Lógica para verificar se o jogador ganhou
if(verificarVitoria(null, 0) == true) {
System.out.println("O Jogador Venceu!");
}
return true;
}*/

public static void exibirTabuleiro(final char[][] tabuleiro) {


//Exibe o tabuleiro
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
System.out.print(tabuleiro[i][j]);

if (j < 2) {
System.out.print("|");
}
}
System.out.println();
if (i < 2) {
System.out.println("------");
}
}
}
}

Você também pode gostar