Ola turma acabei de fazer meu pequeno e simples joguinho de damas com swing.To postando aqui por que gostaria ter um feed-back.As regras são as tradicionais onde si é sempre obrigado a comer seja com dama ou com o peão.Vc escolhe qual a peças que queres movimentar,então aparece a cor verde nos quadrados indicando onde podes andar.Por ser obrigado a comer o jogo não te deixa se movimentar livramente se for detectado alguma peça adversária para comer. Ate o momento não implementei uma I.A mas a máquina escolhe sempre o melhor caminho para comer suas peças :lol:.Criticas e sugestões são bem vindas!! :lol:


Jogo Dama em Java
12 Respostas
restantante dos arquivos



ok so savar tudo no caminho C:\ImagemJava\xxxx



legal parabens
Obrigado 
Muito bom, parabéns! Minha sugestão é vc juntar todas as figuras dentro do arquivo Jar e distribuir apenas um arquivo.
Parabéns!
Pode descrever o algoritmo utilizado para escolher o melhor caminho?
Outra coisa… Não vai disponibilizar o fonte? :lol:
Obrigado tnaires.O algoritmo para encontrar o melhor caminho é simples,bom sempre digamos assim depois de feito ne?mas na hora…,bom :lol:
O algoritmo é o seguinte:
1)paramentros
onde int antl=é a coordenada anterior referente a linha
onde int antc=é a coordenada anterior referente a coluna
onde int l=linha
onde int c=coluna
onde String coordenadas=aqui vão ser colocadas passo a passo as coordenadas disponíveis encontradas .Após ter feito um caminho x,este caminho irá ser armazenado na variavél de instáncia
list_possi que é um LinkedHashSet.Aqui serão armazenados todos os caminhos possivéis.
2) isMovimentoXXXX é um metodo com retorno boolean o qual me diz se um determidado movimento é possivel .O metodo é aproveitado para ambos Máquina e Homem por isso o paramentro true para Homem e false para a Máquina.
3)
O algoritmo em si é recursivo com condicão de parada nos 4 if´s if(isMovimentoXXX) {}
esta parte de código é muito inportante if(l+2 != antl || c + 2!= antc){ }seu proposito é verificar que nunca seja feita a mesma chamada e cair em um StackOverFlow.Ou seja, vc está nas coordenadas linha :3coluna:3 e após uma verificação é possivel dar um pulo para a casa branca, então é feita a chamada recursiva para a linha =4 coluna=4,com as coordenadas anteriores.Explicando com o código ficaria assim:
//antl=5 coordenadas anteriores
//antc=5
// l=3
// c=3
todasPossibilidades(antl,antc,l,c,cordenadas){
if(isMovimentoAltoBaixoPossi(l,c,true)){
if(l+2 != antl || c + 2!= antc){ //nesta condição vai detectar que //não pode mais ir para as coordenadas linha 5,coluna 5,pois acabou de vir de lá!!
if(verificarepeticoes(coordenadas,l-2,c+2)){
todasPossibilidades(l,c,l-2,c+2,coordenadas);
}
}
}//entao sai deste teste e vai para os outros 3 if´s
}
4)Por último o if(verificarepeticoes(coordenadas,l+2,c-2)){}
public boolean verificarepeticoes(String array,int l,int c){
Pattern p=Pattern.compile(""+l+""+c);
Matcher m=p.matcher(array);
int indice=0;
while(m.find()){
indice=m.start();
}
if(indice == 2|| indice == 0) return true; else return false;
}
verifica que na String coordenada nao haja repetições com relação ao seu segundo indice .Pelo indice 2 é possivel passar 2 vezes pelo mesmo caminho,mas nos outros não.
O algoritmo em si é o seguinte:
public void todasPossibilidades(int antl,int antc,int l,int c,String coordenadas ){
coordenadas+=l+""+c;
list_possi.add(coordenadas);
if( isMovimentoBaixoDirPossi(l,c,true)&& bo_tipopeca == true) { if(l+2 != antl || c + 2!= antc){
if(verificarepeticoes(coordenadas,l+2,c+2)){
todasPossibilidades(l,c,l+2,c+2,coordenadas);
}
}
}
if(isMovimentoAltoDirPossi(l,c,true)){
if(l-2 != antl || c + 2!= antc){
if(verificarepeticoes(coordenadas,l-2,c+2)){
todasPossibilidades(l,c,l-2,c+2,coordenadas);
}
}
}
if(isMovimentoAltoEsqPossi(l,c,true)){
if(l-2 != antl || c - 2!= antc){
if(verificarepeticoes(coordenadas,l-2,c-2)){
todasPossibilidades(l,c,l-2,c-2,coordenadas);
}
}
}
if(isMovimentoBaixoEsqPossi(l,c,true)&& bo_tipopeca == true){
if(l+2 != antl || c - 2!= antc){
if(verificarepeticoes(coordenadas,l+2,c-2)){
todasPossibilidades(l,c,l+2,c-2,coordenadas);
}
}
}
}
Abraços!
Valeu boa ideia!Nem tinha me tocado!!
Ops… mas come se faz :oops: ???
Vc poderia criar um pacote chamado imagens dentro do classpath e puxar a imagem dessa forma dentro de alguma classe:
legal vou tentar aqui :lol:
bacana, mas como vc faz pra “dizer” pro computador onde esta cada peca?