-->JogoDaVelha.
java
public class JogoDaVelha {
public static void main(String[] args) {
Jogo jogo = new Jogo();
}
-->[Link]
public class Tabuleiro {
private int[][] tabuleiro= new int[3][3];
public Tabuleiro(){
zerarTabuleiro();
}
public void zerarTabuleiro(){
for(int linha=0 ; linha<3 ; linha++)
for(int coluna=0 ; coluna<3 ; coluna++)
tabuleiro[linha][coluna]=0;
}
public void exibeTabuleiro(){
[Link]();
for(int linha=0 ; linha<3 ; linha++){
for(int coluna=0 ; coluna<3 ; coluna++){
if(tabuleiro[linha][coluna]==-1){
[Link](" X ");
}
if(tabuleiro[linha][coluna]==1){
[Link](" O ");
}
if(tabuleiro[linha][coluna]==0){
[Link](" ");
}
if(coluna==0 || coluna==1)
[Link]("|");
}
[Link]();
}
public int getPosicao(int[] tentativa){
return tabuleiro[tentativa[0]][tentativa[1]];
}
public void setPosicao(int[] tentativa, int jogador){
if(jogador == 1)
tabuleiro[tentativa[0]][tentativa[1]] = -1;
else
tabuleiro[tentativa[0]][tentativa[1]] = 1;
exibeTabuleiro();
}
public int checaLinhas(){
for(int linha=0 ; linha<3 ; linha++){
if( (tabuleiro[linha][0] + tabuleiro[linha][1] + tabuleiro[linha][2])
== -3)
return -1;
if( (tabuleiro[linha][0] + tabuleiro[linha][1] + tabuleiro[linha][2])
== 3)
return 1;
}
return 0;
public int checaColunas(){
for(int coluna=0 ; coluna<3 ; coluna++){
if( (tabuleiro[0][coluna] + tabuleiro[1][coluna] + tabuleiro[2]
[coluna]) == -3)
return -1;
if( (tabuleiro[0][coluna] + tabuleiro[1][coluna] + tabuleiro[2]
[coluna]) == 3)
return 1;
}
return 0;
public int checaDiagonais(){
if( (tabuleiro[0][0] + tabuleiro[1][1] + tabuleiro[2][2]) == -3)
return -1;
if( (tabuleiro[0][0] + tabuleiro[1][1] + tabuleiro[2][2]) == 3)
return 1;
if( (tabuleiro[0][2] + tabuleiro[1][1] + tabuleiro[2][0]) == -3)
return -1;
if( (tabuleiro[0][2] + tabuleiro[1][1] + tabuleiro[2][0]) == 3)
return 1;
return 0;
}
public boolean tabuleiroCompleto(){
for(int linha=0 ; linha<3 ; linha++)
for(int coluna=0 ; coluna<3 ; coluna++)
if( tabuleiro[linha][coluna]==0 )
return false;
return true;
}
}
-->[Link]
import [Link];
public class Jogo {
private Tabuleiro tabuleiro;
private int rodada=1, vez=1;
private Jogador jogador1;
private Jogador jogador2;
public Scanner entrada = new Scanner([Link]);
public Jogo(){
tabuleiro = new Tabuleiro();
iniciarJogadores();
while( Jogar() );
}
public void iniciarJogadores(){
[Link]("Quem vai ser o Jogador 1 ?");
if(escolherJogador() == 1)
this.jogador1 = new Humano(1);
else
this.jogador1 = new Computador(1);
[Link]("----------------------");
[Link]("Quem vai ser o Jogador 2 ?");
if(escolherJogador() == 1)
this.jogador2 = new Humano(2);
else
this.jogador2 = new Computador(2);
public int escolherJogador(){
int opcao=0;
do{
[Link]("1. Humano");
[Link]("2. Computador\n");
[Link]("Opção: ");
opcao = [Link]();
if(opcao != 1 && opcao != 2)
[Link]("Opção inválida! Tente novamente");
}while(opcao != 1 && opcao != 2);
return opcao;
}
public boolean Jogar(){
if(ganhou() == 0 ){
[Link]("----------------------");
[Link]("\nRodada "+rodada);
[Link]("É a vez do jogador " + vez() );
if(vez()==1)
[Link](tabuleiro);
else
[Link](tabuleiro);
if([Link]()){
[Link]("Tabuleiro Completo. Jogo empatado");
return false;
}
vez++;
rodada++;
return true;
} else{
if(ganhou() == -1 )
[Link]("Jogador 1 ganhou!");
else
[Link]("Jogador 2 ganhou!");
return false;
}
public int vez(){
if(vez%2 == 1)
return 1;
else
return 2;
}
public int ganhou(){
if([Link]() == 1)
return 1;
if([Link]() == 1)
return 1;
if([Link]() == 1)
return 1;
if([Link]() == -1)
return -1;
if([Link]() == -1)
return -1;
if([Link]() == -1)
return -1;
return 0;
}
-->[Link]
public abstract class Jogador {
protected int[] tentativa = new int[2];
protected int jogador;
public Jogador(int jogador){
[Link] = jogador;
}
public abstract void jogar(Tabuleiro tabuleiro);
public abstract void Tentativa(Tabuleiro tabuleiro);
public boolean checaTentativa(int[] tentativa, Tabuleiro tabuleiro){
if([Link](tentativa) == 0)
return true;
else
return false;
-->[Link]
import [Link];
public class Humano extends Jogador{
public Scanner entrada = new Scanner([Link]);
public Humano(int jogador){
super(jogador);
[Link] = jogador;
[Link]("Jogador 'Humano' criado!");
}
@Override
public void jogar(Tabuleiro tabuleiro){
Tentativa(tabuleiro);
[Link](tentativa, jogador);
}
@Override
public void Tentativa(Tabuleiro tabuleiro){
do{
do{
[Link]("Linha: ");
tentativa[0] = [Link]();
if( tentativa[0] > 3 ||tentativa[0] < 1)
[Link]("Linha inválida. É 1, 2 ou 3");
}while( tentativa[0] > 3 ||tentativa[0] < 1);
do{
[Link]("Coluna: ");
tentativa[1] = [Link]();
if(tentativa[1] > 3 ||tentativa[1] < 1)
[Link]("Coluna inválida. É 1, 2 ou 3");
}while(tentativa[1] > 3 ||tentativa[1] < 1);
tentativa[0]--;
tentativa[1]--;
if(!checaTentativa(tentativa, tabuleiro))
[Link]("Esse local já foi marcado. Tente outro.");
}while( !checaTentativa(tentativa, tabuleiro) );
}
}
-->[Link]
public class Computador extends Jogador{
public Computador(int jogador){
super(jogador);
[Link]("Jogador 'Computador' criado!");
}
@Override
public void jogar(Tabuleiro tabuleiro){
@Override
public void Tentativa(Tabuleiro tabuleiro){
}
}