Olá pessoal, como ainda sou ainda iniciante em Java, estou desenvolvendo um jogo Resta Um, simples e estruturado com apenas uma classe.
A minha dúvida é sobre em fazer as jogadas testar se a jogada é válida e armazená-las em um array e não ter que ficar testando cada jogada inserida pelo jogador e uma coisa que eu não consegui fazer por meio desse meio de testes é informar que não a mais jogadas possíveis.
Então, peço ajuda a vcs.
import java.util.Scanner;
public class NovoTeste {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan = new Scanner(System.in);
int[][] tabuleiro = new int[4][4];
int jogador = 1; //jogador 1 começa jogando
int posx1;
int posy1;
int posx2;
int posy2;
int pecas=15; //quantidade de peças = 15
int d=0, e=0;
//imprimi o primeiro tabuleiro
tabuleiro[0][0]=1;
tabuleiro[0][1]=1;
tabuleiro[0][2]=1;
tabuleiro[0][3]=1;
tabuleiro[1][0]=1;
tabuleiro[1][1]=1;
tabuleiro[1][2]=1;
tabuleiro[1][3]=1;
tabuleiro[2][0]=1;
tabuleiro[2][1]=0; //peça vazia =0
tabuleiro[2][2]=1;
tabuleiro[2][3]=1;
tabuleiro[3][0]=1;
tabuleiro[3][1]=1;
tabuleiro[3][2]=1;
tabuleiro[3][3]=1;
//imprimi o tabuleiro
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
System.out.print(tabuleiro[i][j] + " ");
}
System.out.println();
}
do
{
System.out.println("Jogador: " + jogador + ". Insira as duas posições iniciais: ");
posx1 = scan.nextInt(); //LER POSI. x INICIAL
posy1 = scan.nextInt(); //LER POSI. y INICIAL
System.out.println("Ok, " + jogador + " Agora insira as duas posições finais: ");
posx2 = scan.nextInt(); //LER POSI. x FINAL
posy2 = scan.nextInt(); //LER POSI. y FINAL
boolean jogadaValida = jogar(posx1, posx2, posy1, posy2,tabuleiro, jogador, pecas, d, e);
if (jogadaValida) //se jogada válida...
{
pecas--; //diminui uma peça
System.out.println("Existe ainda "+ pecas +" Peças"); //imprimi informando quantas peças exixtem
if (pecas == 1) //se peças ==1....
System.out.println("Jogador "+ jogador+" venceu!"); //mostra vencedor
//troca jogador
if (jogador == 1)
{
jogador = 2;
}
else
{
jogador = 1;
}
}
else
{
System.out.println("Jogada Inválida!!");
}
}while(pecas>1);
}
static boolean jogar(int posx1, int posx2, int posy1,int posy2, int[][] tabuleiro, int j, int pecas,
int d, int e)
{
//teste se posy1 != posy2 na vertical
if (posy1 < posy2 && posx1 != posx2 || posy1 > posy2 && posx1 > posx2
|| posy1 < posy2 && posx1 < posx2
|| posy1 > posy2 && posx1 < posx2)
{
return false;
}
//verifica -- Na horizontal
if( posx1==1 && posy1==0 && posx2==1 && posy2==1 //nao existe 1,0 e 1,1
|| posx1==1 && posy1==1 && posx2==1 && posy2==2 //nao existe 1,1 e 1,2
|| posx1==1 && posy1==2 && posx2==1 && posy2==3 //nao existe 1,2 e 1,3
|| posx1==1 && posy1==3 && posx2==1 && posy2==2 //nao existe 1,3 e 1,2
|| posx1==1 && posy1==2 && posx2==1 && posy2==1 //nao existe 1,2 e 1,1
|| posx1==1 && posy1==1 && posx2==1 && posy2==0 //nao existe 1,1 e 1,0
|| posx1==0 && posy1==0 && posx2==0 && posy2==1 // 0,0 e 0,1
|| posx1==0 && posy1==1 && posx2==0 && posy2==2 // 0,1 e 0,2
|| posx1==0 && posy1==2 && posx2==0 && posy2==3 // 0,2 e 0,3
|| posx1==0 && posy1==3 && posx2==0 && posy2==2 // 0,3 e 0,2
|| posx1==0 && posy1==2 && posx2==0 && posy2==1 // 0,2 e 0,1
|| posx1==0 && posy1==1 && posx2==0 && posy2==0 // 0,1 e 0,0
|| posx1==2 && posy1==0 && posx2==2 && posy2==1
|| posx1==2 && posy1==1 && posx2==2 && posy2==2
|| posx1==2 && posy1==2 && posx2==2 && posy2==3
|| posx1==2 && posy1==3 && posx2==2 && posy2==2
|| posx1==2 && posy1==2 && posx2==2 && posy2==1
|| posx1==2 && posy1==1 && posx2==2 && posy2==0
|| posx1==3 && posy1==0 && posx2==3 && posy2==1
|| posx1==3 && posy1==1 && posx2==3 && posy2==2
|| posx1==3 && posy1==2 && posx2==3 && posy2==3
|| posx1==3 && posy1==3 && posx2==3 && posy2==2
|| posx1==3 && posy1==2 && posx2==3 && posy2==1
|| posx1==3 && posy1==1 && posx2==3 && posy2==0
) { return false; }
//verifica -- Na vertical
if( posx1==0 && posy1==0 && posx2==1 && posy2==0 //nao existe 0,0 e 1,0
|| posx1==1 && posy1==0 && posx2==2 && posy2==0 //nao existe 1,0 e 2,0
|| posx1==2 && posy1==0 && posx2==3 && posy2==0 //nao existe 2,0 e 3,0
|| posx1==3 && posy1==0 && posx2==2 && posy2==0 //nao existe 3,0 e 2,0
|| posx1==2 && posy1==0 && posx2==1 && posy2==0 //nao existe 2,0 e 1,0
|| posx1==1 && posy1==0 && posx2==0 && posy2==0 //nao existe 1,0 e 0,0
|| posx1==0 && posy1==1 && posx2==1 && posy2==1 //
|| posx1==1 && posy1==1 && posx2==2 && posy2==1 //
|| posx1==2 && posy1==1 && posx2==3 && posy2==1 //
|| posx1==3 && posy1==1 && posx2==2 && posy2==1 //
|| posx1==2 && posy1==1 && posx2==1 && posy2==1 //
|| posx1==1 && posy1==1 && posx2==0 && posy2==1 //
|| posx1==0 && posy1==2 && posx2==1 && posy2==2
|| posx1==1 && posy1==2 && posx2==2 && posy2==2
|| posx1==2 && posy1==2 && posx2==3 && posy2==2
|| posx1==3 && posy1==2 && posx2==2 && posy2==2
|| posx1==2 && posy1==2 && posx2==1 && posy2==2
|| posx1==1 && posy1==2 && posx2==0 && posy2==2
|| posx1==0 && posy1==3 && posx2==1 && posy2==3
|| posx1==1 && posy1==3 && posx2==2 && posy2==3
|| posx1==2 && posy1==3 && posx2==3 && posy2==3
|| posx1==3 && posy1==3 && posx2==2 && posy2==3
|| posx1==2 && posy1==3 && posx2==1 && posy2==3
|| posx1==1 && posy1==3 && posx2==0 && posy2==3
) { return false; }
if ( posx1 > 3 || posx1 < 0 || posy1 > 3 || posy1 < 0 || posx2>3 || posx2 < 0 || posy2 > 3
|| posy1 < 0 || tabuleiro[posx1][posy1] != 1 || tabuleiro[posx2][posy2] != 0 )
{ return false; }
if( posx1==0 && posy1==0 && posx2==0 && posy2==3
|| posx1==0 && posy1==3 && posx2==0 && posy2==0)
{ return false; }
if( posx1==1 && posy1==0 && posx2==1 && posy2==3
|| posx1==1 && posy1==3 && posx2==1 && posy2==0)
{ return false; }
if( posx1==2 && posy1==0 && posx2==2 && posy2==3
|| posx1==2 && posy1==3 && posx2==2 && posy2==0)
{ return false; }
if( posx1==3 && posy1==0 && posx2==3 && posy2==3
|| posx1==3 && posy1==3 && posx2==3 && posy2==0)
{ return false; }
if( posx1==3 && posy1==0 && posx2==0 && posy2==0
|| posx1==0 && posy1==0 && posx2==3 && posy2==0)
{ return false; }
if( posx1==3 && posy1==1 && posx2==0 && posy2==1
|| posx1==0 && posy1==1 && posx2==3 && posy2==1)
{ return false; }
if( posx1==3 && posy1==2 && posx2==0 && posy2==2
|| posx1==0 && posy1==2 && posx2==3 && posy2==2)
{ return false; }
if( posx1==3 && posy1==3 && posx2==0 && posy2==3
|| posx1==0 && posy1==3 && posx2==3 && posy2==3)
{ return false; }
if( posx1==0 && posy1==1 && posx2==2 && posy2==1)//
{
if(tabuleiro[1][1]==0){
return false;
} else
tabuleiro[0][1]=0;
tabuleiro[2][1]=1;
tabuleiro[1][1]=0;
System.out.println();
print(tabuleiro);
}
else if(posx1==0 && posy1==3 && posx2==0 && posy2==1)//
{
if(tabuleiro[0][3]==0){
return false;
} else
tabuleiro[0][1]=1;
tabuleiro[0][3]=0;
tabuleiro[0][2]=0;
System.out.println();
print(tabuleiro);
}
else if(posx1==1 && posy1==1 && posx2==3 && posy2==1)//
{
if(tabuleiro[2][1]==0){
return false;
} else
tabuleiro[1][1]=0;
tabuleiro[2][1]=0;
tabuleiro[3][1]=1;
System.out.println();
print(tabuleiro);
}
else if(posx1==1 && posy1==3 && posx2==1 && posy2==1)//
{
if(tabuleiro[1][2]==0){
return false;
} else
tabuleiro[1][3]=0;
tabuleiro[1][2]=0;
tabuleiro[1][1]=1;
System.out.println();
print(tabuleiro);
}
else if(posx1==0 && posy1==0 && posx2==0 && posy2==2)//
{
if(tabuleiro[0][1]==0){
return false;
} else
tabuleiro[0][0]=0;
tabuleiro[0][1]=0;
tabuleiro[0][2]=1;
System.out.println();
print(tabuleiro);
}
else if(posx1==3 && posy1==1 && posx2==1 && posy2==1)//
{
if(tabuleiro[2][1]==0){
return false;
} else
tabuleiro[3][1]=0;
tabuleiro[2][1]=0;
tabuleiro[1][1]=1;
System.out.println();
print(tabuleiro);
}
else if(posx1==3 && posy1==3 && posx2==3 && posy2==1)//
{
if(tabuleiro[3][2]==0){
return false;
} else
tabuleiro[3][3]=0;
tabuleiro[3][2]=0;
tabuleiro[3][1]=1;
System.out.println();
print(tabuleiro);
}
else if(posx1==0 && posy1==3 && posx2==2 && posy2==3)//
{
if(tabuleiro[1][3]==0){
return false;
} else
tabuleiro[0][3]=0;
tabuleiro[2][3]=1;
tabuleiro[1][3]=0;
System.out.println();
print(tabuleiro);
}
else if(posx1==2 && posy1==3 && posx2==0 && posy2==3)//
{
if(tabuleiro[1][3]==0){
return false;
} else
tabuleiro[2][3]=0;
tabuleiro[0][3]=1;
tabuleiro[1][3]=0;
System.out.println();
print(tabuleiro);
}
else if(posx1==2 && posy1==3 && posx2==2 && posy2==1)//
{
if(tabuleiro[2][2]==0){
return false;
} else
tabuleiro[2][3]=0;
tabuleiro[2][2]=0;
tabuleiro[2][1]=1;
System.out.println();
print(tabuleiro);
}
else if(posx1==0 && posy1==3 && posx2==2 && posy2==3)//
{
if(tabuleiro[1][3]==0){
return false;
} else
tabuleiro[0][3]=0;
tabuleiro[1][3]=0;
tabuleiro[2][3]=1;
System.out.println();
print(tabuleiro);
}
else if(posx1==0 && posy1==2 && posx2==2 && posy2==2)//
{
if(tabuleiro[1][2]==0){
return false;
} else
tabuleiro[0][2]=0;
tabuleiro[1][2]=0;
tabuleiro[2][2]=1;
System.out.println();
print(tabuleiro);
}
else if(posx1==2 && posy1==1 && posx2==0 && posy2==1)//
{
if(tabuleiro[1][1]==0) {
return false;
} else
tabuleiro[2][1]=0;
tabuleiro[1][1]=0;
tabuleiro[0][1]=1;
System.out.println();
print(tabuleiro);
}
else if(posx1==1 && posy1==0 && posx2==1 && posy2==2)//
{
if(tabuleiro[1][1]==0){
return false;
} else
tabuleiro[1][0]=0;
tabuleiro[1][1]=0;
tabuleiro[1][2]=1;
System.out.println();
print(tabuleiro);
}
else if(posx1==3 && posy1==3 && posx2==1 && posy2==3)//
{
if(tabuleiro[2][3]==0){
return false;
} else
tabuleiro[3][3]=0;
tabuleiro[2][3]=0;
tabuleiro[1][3]=1;
System.out.println();
print(tabuleiro);
}
else if(posx1==0 && posy1==1 && posx2==0 && posy2==3)//
{
if(tabuleiro[0][2]==0){
return false;
} else
tabuleiro[0][1]=0;
tabuleiro[0][2]=0;
tabuleiro[0][3]=1;
System.out.println();
print(tabuleiro);
}
else if(posx1==2 && posy1==2 && posx2==0 && posy2==2)//
{
if(tabuleiro[1][2]==0){
return false;
} else
tabuleiro[2][2]=0;
tabuleiro[1][2]=0;
tabuleiro[0][2]=1;
System.out.println();
print(tabuleiro);
}
else if(posx1==3 && posy1==0 && posx2==3 && posy2==2)//
{
if(tabuleiro[3][1]==0){
return false;
} else
tabuleiro[3][0]=0;
tabuleiro[3][1]=0;
tabuleiro[3][2]=1;
System.out.println();
print(tabuleiro);
}
else if(posx1==2 && posy1==0 && posx2==2 && posy2==2)//
{
if(tabuleiro[2][1]==0){
return false;
} else
tabuleiro[2][0]=0;
tabuleiro[2][1]=0;
tabuleiro[2][2]=1;
System.out.println();
print(tabuleiro);
}
else if(posx1==1 && posy1==0 && posx2==3 && posy2==0)//
{
if(tabuleiro[2][0]==0){
return false;
} else
tabuleiro[1][0]=0;
tabuleiro[2][0]=0;
tabuleiro[3][0]=1;
System.out.println();
print(tabuleiro);
}
else if(posx1==1 && posy1==3 && posx2==3 && posy2==3)//
{
if(tabuleiro[2][3]==0) {
return false;
} else
tabuleiro[1][3]=0;
tabuleiro[2][3]=0;
tabuleiro[3][3]=1;
System.out.println();
print(tabuleiro);
}
else if(posx1==1 && posy1==2 && posx2==1 && posy2==0)//
{
if(tabuleiro[1][1]==0){
return false;
} else
tabuleiro[1][2]=0;
tabuleiro[1][1]=0;
tabuleiro[1][0]=1;
System.out.println();
print(tabuleiro);
}
else if(posx1==2 && posy1==1 && posx2==2 && posy2==3)//
{
if(tabuleiro[2][2]==0){
return false;
} else
tabuleiro[2][1]=0;
tabuleiro[2][2]=0;
tabuleiro[2][3]=1;
System.out.println();
print(tabuleiro);
}
else if(posx1==1 && posy1==2 && posx2==3 && posy2==2)//
{
if(tabuleiro[2][2]==0){
return false;
} else
tabuleiro[1][2]=0;
tabuleiro[2][2]=0;
tabuleiro[3][2]=1;
System.out.println();
print(tabuleiro);
}
else if(posx1==1 && posy1==1 && posx2==1 && posy2==3)//
{
if(tabuleiro[1][2]==0){
return false;
} else
tabuleiro[1][1]=0;
tabuleiro[1][2]=0;
tabuleiro[1][3]=1;
System.out.println();
print(tabuleiro);
}
else if(posx1==2 && posy1==0 && posx2==0 && posy2==0)//
{
if(tabuleiro[1][0]==0){
return false;
} else
tabuleiro[2][0]=0;
tabuleiro[1][0]=0;
tabuleiro[0][0]=1;
System.out.println();
print(tabuleiro);
}
else if(posx1==3 && posy1==1 && posx2==3 && posy2==3)//
{
if(tabuleiro[3][2]==0){
return false;
} else
tabuleiro[3][1]=0;
tabuleiro[3][2]=0;
tabuleiro[3][3]=1;
System.out.println();
print(tabuleiro);
}
else if(posx1==3 && posy1==2 && posx2==1 && posy2==2)//
{
if(tabuleiro[2][2]==0) {
return false;
} else
tabuleiro[3][2]=0;
tabuleiro[2][2]=0;
tabuleiro[1][2]=1;
System.out.println();
print(tabuleiro);
}
else if(posx1==2 && posy1==2 && posx2==2 && posy2==0)//
{
if(tabuleiro[2][1]==0){
return false;
} else
tabuleiro[2][2]=0;
tabuleiro[2][1]=0;
tabuleiro[2][0]=1;
System.out.println();
print(tabuleiro);
}
else if(posx1==0 && posy1==0 && posx2==2 && posy2==0)//
{
if(tabuleiro[1][0]==0){
return false;
} else
tabuleiro[0][0]=0;
tabuleiro[1][0]=0;
tabuleiro[2][0]=1;
System.out.println();
print(tabuleiro);
}
else if(posx1==3 && posy1==2 && posx2==3 && posy2==0)
{
if(tabuleiro[3][1]==0){
return false;
} else
tabuleiro[3][2]=0;
tabuleiro[3][1]=0;
tabuleiro[3][0]=1;
System.out.println();
print(tabuleiro);
}
else if(posx1==3 && posy1==0 && posx2==1 && posy2==0)//
{
if(tabuleiro[2][0]==0){
return false;
} else
tabuleiro[3][0]=0;
tabuleiro[2][0]=0;
tabuleiro[1][0]=1;
System.out.println();
print(tabuleiro);
}
return true;
}
//PARTE DE IMPRIMIR do MÉTODO print
static void print(int[][] m)
{
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
System.out.print(m[i][j] + " ");
}
System.out.println();
}
}
}