Este código foi desenvolvido por mim como parte integrante da disciplina de Algoritmos, no meu curso de ciência da computação. Disponiblizarei para estudo.
Código:
/*Código feito por João Marcos*/Lembrando que o jogo não possui interface gráfica. Execute com o auxílio de um debugger. Bom proveito
/*Informação do pacote */
package jogodavelha;
/*Importação de bibliotecas*/
import java.util.Scanner;
public class JogoDaVelha {
//Função para mostrar o tabuleiro
public static void MostraTabuleiro(String[][] x) {
System.out.println();
/*Varrer as linhas*/
for(int l = 0; l < x.length; l++) {
/*Varrer as colunas*/
for(int c = 0; c < x.length; c++) {
/*Exibir a matroz*/
System.out.print(x[l][c]+ "\t");
}
System.out.println("\n");
}
System.out.println();
}
//Função para verificar ganhador
public static String VerificaGanhador(String[][] x, Integer j) {
String[] Tab = new String[8];
String Win = "null";
/*Se jogadas = 9, vencedor é velha*/
if(j == 9) {
Win = "Velha";
}
//Linhas
Tab[0] = x[0][0] + x[0][1] + x[0][2];
Tab[1] = x[1][0] + x[1][1] + x[1][2];
Tab[2] = x[2][0] + x[2][1] + x[2][2];
//Colunas
Tab[3] = x[0][0] + x[1][0] + x[2][0];
Tab[4] = x[0][1] + x[1][1] + x[2][1];
Tab[5] = x[0][2] + x[1][2] + x[2][2];
//Diagonais
Tab[6] = x[0][0] + x[1][1] + x[2][2];
Tab[7] = x[0][2] + x[1][1] + x[2][0];
/*Varrer o vetor Tab, procurando por sequencias iguais de X ou O*/
for(int i = 0; i < Tab.length; i++) {
/*Se padrao XXX for encontrado, vencedor = player 1*/
if(Tab[i].equals("XXX")) {
Win = "Player 1";
/*Se padrao OOO for encontrado, vencedor = player 2*/
} else if(Tab[i].equals("OOO")) {
Win = "Player 2";
}
}
/*Retorna o vencedor. Caso nao foram encontrados os padrões e tabuleiro cheio, velha.
* se Nao foram encontrados os padroes e tabuleiro ainda vazio, nulo
* Senao vencedor = player 1 ou player 2
*/
return Win;
}
public static void main(String[] args) {
String[][] Tabuleiro = new String[3][3];
Integer Linha = 0;
Integer Coluna = 0;
Integer Valid = 0;
Integer Jogadas = 0;
Scanner in = new Scanner(System.in);
//Inicializa o tabuleiro com "-"
for(int i = 0; i < 3; i++){
for(int x = 0; x < 3; x++){
Tabuleiro[i][x] = "-";
}
}
//Inicia as jogadas enquanto não houver ganhador
while(true) { //Loop infinito
//Inicializa e autentica jogada do jogador 1
do {
System.out.println("Jogador 1, vamos lá. Informe a linha: ");
Linha = in.nextInt();
while(Linha < 0 || Linha > 2) {
System.out.println("Esta linha é inválida!.");
System.out.println("Jogador 1, vamos lá. Informe a linha: ");
Linha = in.nextInt();
}
System.out.println("Jogador 1, vamos lá. Informe a coluna: ");
Coluna = in.nextInt();
while(Coluna < 0 || Coluna > 2) {
System.out.println("Esta coluna é inválida!.");
System.out.println("Jogador 1, vamos lá. Informe a coluna: ");
Coluna = in.nextInt();
}
//Verificar se campo está vazio
if(Tabuleiro[Linha][Coluna].equals("-")) {
Tabuleiro[Linha][Coluna] = "X";
Valid = 1;
} else {
Valid = 0;
System.out.println("Jogada inválida. Tente novamente.");
}
} while(Valid == 0);
//Verifica ganhador. Se não houver, jogador 2 joga
Jogadas++;
Valid = 0;
MostraTabuleiro(Tabuleiro);
if(!VerificaGanhador(Tabuleiro, Jogadas).equals("null")) {
break;
}
//Inicializa e autentica jogada do jogador 2
do {
System.out.println("Jogador 2, vamos lá. Informe a linha: ");
Linha = in.nextInt();
while(Linha < 0 || Linha > 2) {
System.out.println("Esta linha é inválida!.");
System.out.println("Jogador 2, vamos lá. Informe a linha: ");
Linha = in.nextInt();
}
System.out.println("Jogador 2, vamos lá. Informe a coluna: ");
Coluna = in.nextInt();
while(Coluna < 0 || Coluna > 2) {
System.out.println("Esta coluna é inválida!.");
System.out.println("Jogador 2, vamos lá. Informe a coluna: ");
Coluna = in.nextInt();
}
//Verifica se campo está vazio
if(Tabuleiro[Linha][Coluna].equals("-")) {
Tabuleiro[Linha][Coluna] = "O";
Valid = 1;
} else {
Valid = 0;
System.out.println("Jogada inválida. Tente novamente.");
}
} while(Valid == 0);
//Verifica ganhador. Se não houver, jogador 1 joga
Valid = 0;
MostraTabuleiro(Tabuleiro);
Jogadas++;
if(!VerificaGanhador(Tabuleiro, Jogadas).equals("null")) {
break;
}
}
//Finaliza e exibe vencedor
System.out.println(VerificaGanhador(Tabuleiro, Jogadas) + " Vence!");
}
}
1 comentários:
muito bom esse jogo
Postar um comentário