Jogo Da Velha - Automatico - JAVA
Por: Fernando Elias • 13/4/2022 • Trabalho acadêmico • 3.808 Palavras (16 Páginas) • 150 Visualizações
class JogadorAutomatico
{
private Marca marca = null;
private Tabuleiro tabDoJogo = null;
public JogadorAutomatico (Tabuleiro tabuleiro) throws Exception
{
// inicia tabDoJogo com tab e sorteia uma marca (X ou O) para o jogador,
// iniciando marca; lanca excecao caso tab seja nulo
if (tabuleiro == null) {
throw new Exception("Tabuleiro nulo");
}
this.tabDoJogo = tabuleiro;
try {
int rand = (int)Math.random() * 2;
if (rand == 0)
this.marca = new Marca('X');
else
this.marca = new Marca('O');
//this.marca = new Marca((int)(Math.random() * 2.0) == 0 ? 'X' : 'O');
}
catch (Exception err) {
System.err.println(err);
}
}
public JogadorAutomatico (Tabuleiro tabuleiro, Marca mrc) throws Exception
{
// inicia tabDoJogo com tab e marca com mrc; lanca excecao caso tab ou mrc sejam nulos
if (tabuleiro == null) {
throw new Exception("Tabuleiro nulo");
}
this.tabDoJogo = tabuleiro;
if (mrc == null) {
throw new Exception("Marca nula");
}
this.marca = mrc;
}
public Marca getMarca ()
{
// retorna a marca do jogador
return this.marca;
}
// public void facaSuaJogada ()
// {
// // faz o jogador fazer uma jogada INTELIGENTE
// do {
// int i = (int)(Math.random() * 3.0);
// int j = (int)(Math.random() * 3.0);
// try {
// if (this.tabDoJogo.haMarcaNaPosicao(i, j)) {
// continue;
// }
// this.tabDoJogo.setMarcaNaPosicao(this.marca, i, j);
// break;
// }
// catch (Exception err) {
//
// }
// break;
// } while (true);
// }
public void facaSuaJogada ()
{
// faz o jogadorAutomatico fazer uma jogada INTELIGENTE
int[] posicao = new int[2];
posicao = getPosicaoMelhorJogada();
try {
this.tabDoJogo.setMarcaNaPosicao(this.marca, posicao[0], posicao[1]);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public int[] getPosicaoMelhorJogada (){
int contMarca = 0;
int contOutraMarca = 0;
Marca marca = null;
boolean defender = false;
int[] posicaoDefesa = new int[2];
boolean atacar = false;
int[] posicaoAtaque = new int[2];
//verifica numero de marcodores próprios e adversários na diagonal
contMarca = 0;
contOutraMarca = 0;
try {
if (this.tabDoJogo.haMarcaNaPosicao(0, 0)==true) {
marca = this.tabDoJogo.getMarcaNaPosicao(0,0);
if(marca.equals(this.getMarca())){
contMarca++;
}else{
contOutraMarca++;
}
}
if (this.tabDoJogo.haMarcaNaPosicao(1, 1)==true) {
marca = this.tabDoJogo.getMarcaNaPosicao(1,1);
...