Jogo de Xadrez

Gente estou pensando em implementar um simples jogo de xadrez em 2D mesmo, mas na modelagem me surgiu uma dúvida como eu vou fazer para fazer as peças se movimentarem, tipo pensei em usar uma matriz e colocar os Objetos “Peças” la dentro, mas como eu posso implementar o metodo “anda()” de cada “Peça” ??

Eu faria algo do tipo.

abstract class Peca{ public abstract void anda(/*Parâmetros*/); /*Outros métodos*/ }

class Rei extends Peca{/*código aqui*/} class Peao extends Peca{/*código aqui*/} class Cavalo extends Peca{/*código aqui*/} class Torre extends Peca{/*código aqui*/}

Sim sim, eu pensei em algo bem parecido, e as peças teriam um enum para definir a cor, acho que já sei como andar, tipo mas tipo o cavalo vai ter 8 tipos de anda diferente =S o rei mais 8 o peão 2 a rainha 8 tb, a torre 4 (todos contando para frente e para traz) será que naum tem como agregar tudo em um só? Mas como? :?

Acho q o problema é definir como saber se essa peça pode ir para aquela posição da sua posição atual!!?

Embora tenha várias formas de andar, todo seguem um padrão…

O cavalo só anda em L
O rei só anda uma casa pra qualquer direção
etc etc

Sua função andar deve receber a origem e o destino e verificar se sua peça pode seguir aquele caminho.
Você deverá ter uma classe Tabuleiro que efetivamente deve fazer sua peça andar.

Então essa classe tabuleiro vai ser onde eu vou guardar a matriz com todas as peças instanciadas, certo? Mas já tenho outro problema como eu vou verificar o checkMate? tipo o rei tem q estar cercado e sem possibilidade de fugir, essa vai ser $#&*$(F

Não tem muita saída. Vai acabar tendo que implementar as regras específicas de cada peça.

Pior do que isso, é quando vc tiver que implementar as jogadas combinadas como o roque.
E as jogadas especiais como comer “en passant”.

Pois é, não existe jogo de xadrez “fácil” hehehe

O checkmate direto é até simples. O difícil é detectar o empate por cheque perpétuo.

[quote=ViniGodoy]Não tem muita saída. Vai acabar tendo que implementar as regras específicas de cada peça.

Pior do que isso, é quando vc tiver que implementar as jogadas combinadas como o roque.
E as jogadas especiais como comer “en passant”.
[/quote]

Bah vinny tinha esquecido completamente disso!!

Acho q vou fazer um jogo de Damas :lol:
ehwehuwheuww

Bom, “hands to work”

Para interface eu pensei em fazer uma frame com varios paineis (o numero de casas do tabuleiro = numero de paineis) e dai eu só setava a imagem nos paineis para fazer o movimento, será q fica legal?

guisantogui,

achei interessante o seu projeto, recentemente fiz um joguinho de damas mas praticamente nem criei uma gui, só criei testes e implementei.

A sua idéia de interface (gui) parece ser conveniente, mas a principio vc deve se preocupar é com a interface lógica, pois essa é a raiz do projeto. Se você estiver interessado posso enviar o meu projeto de damas pra você ver, não sei se ajuda muito…

Claro q aceito, afinal todo material é bm vindo ainda mais pq estou dando os “segundos” passos no JAVA =D

legal, se pãs vc cria uma gui pra mim :smiley:

tb sou iniciante, como que eu envio o projeto pra vc? por e-mail?

Pode ser, [E-MAIL REMOVIDO PELA MODERAÇÃO] mande mp!

=D

Vou continuar com a modelagem quando eu começar a implementação do joguinho de Xadrez eu volto ao guj para pedir socorro :smiley:

Nunca se esquecendo de verificar o empate por repetição de lances por três vezes consecutivos tb!

Tb existe outra condição de empate de quando as peças no tabuleiro são insuficientes para um xeque mate (tipo rei x rei)

Removi seu e-mail ali atrás, gui. Lembre-se que o fórum é público e os softwares para mandar SPAM e lixo no seu e-mail procuram por endereços perdidos na rede. O recurso de MP está aí para isso. :slight_smile:

Gente estive pensando, esse meu xadrez só vai servir para se jogar humano X humano, é muito complicado implementar um algoritmo que me permita jogar humano X computador ?? (ou seja a parte do computador neh) :B

vlw!

[quote=guisantogui]Gente estive pensando, esse meu xadrez só vai servir para se jogar humano X humano, é muito complicado implementar um algoritmo que me permita jogar humano X computador ?? (ou seja a parte do computador neh) :B

vlw![/quote]

Deve ser dificil mesmo, já q ninguem respondeu! :?

[quote=guisantogui]Gente estive pensando, esse meu xadrez só vai servir para se jogar humano X humano, é muito complicado implementar um algoritmo que me permita jogar humano X computador ?? (ou seja a parte do computador neh) :B
[/quote]

Oi, desculpa não responder. Deixei para responder depois e acho que acabei arquivando o e-mail do tópico no meu gmail.

Olha, para fazer uma IA virtualmente imbatível para amadores, é até simples. Você pode facilmente fazer o computador prever duas ou três jogadas, e quem joga xadrez só de “alegre” já vai ter muitas dificuldades em bater. Você faz isso através de uma árvore de decisão, e de uma busca minimax.

Agora, para fazer uma IA que faça jogo posicional o problema é muito mais embaixo. Primeiro, você mesmo terá que entender o funcionamento do jogo posicional, entender certinho o valor das peças, e o impacto que cada uma tem no controle do tabuleiro. Ou seja, tem que entender como um profissional enxerga o tabuleiro, fazer o script das aberturas clássicas, e entender sua importância no controle das casas.

Há sempre também a possibilidade de fazer uma IA burra. Escolher uma jogada aleatoriamente na lista de disponíveis, e faze-la. Você até pode ver antes a lista das peças que podem ser tomadas, tomar aleatoriamente as que aumentem a sua pontuação no tabuleiro.