| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/11/2007 17:08:32
|
sfing
JavaChild
![[Avatar]](/images/avatar/9d4e43921a44fdfe09818f19f75bc4e8.jpg)
Membro desde: 01/11/2007 14:57:00
Mensagens: 103
Offline
|
Estou tentando criar um jogo de xadrez em java, alguém poderia ajudar a criar os movimentos das peças ?
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/11/2007 19:41:13
|
Veronicaaa
JavaTeenager
![[Avatar]](/images/avatar/7a06ad497a8fb70ea0a3cf08543fb1e4.png)
Membro desde: 30/05/2006 18:55:12
Mensagens: 189
Localização: Porto Alegre - RS
Offline
|
Olá.
Em primeiro lugar, você conhece os movimentos reais e legais do Xadrez? Outra, você pensou na notação que irá utilizar para endereçar cada casa? A mais utilizada é a algébrica.
E as inúmeras aberturas de um jogo Xadrez? Pelo que vi da sua classe Peao você diz que o primeiro movimento vai ser com o peão, é isso mesmo? Nem sempre isso é verdade...Você pode começar o jogo saindo com o cavalo, ou você vai obrigar o jogador a sempre iniciar o jogo com o peão do rei?
Implementar um jogo de xadrez, nâo deve ser muito facil, por isso as regras do jogo tem que estar fluindo para você.
Minha opinião.
|
OCP JP 6.0 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/11/2007 23:02:52
|
rafaelglauber
GUJ Master
![[Avatar]](/images/avatar/e9abec5e32203998211653b45023be1c.jpeg)
Membro desde: 07/09/2007 23:05:20
Mensagens: 1065
Localização: Feira de Santana
Offline
|
dê uma olhada no projeto jose veja se tem algo que te ajude: http://jose-chess.sourceforge.net/
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/11/2007 23:09:55
|
sfing
JavaChild
![[Avatar]](/images/avatar/9d4e43921a44fdfe09818f19f75bc4e8.jpg)
Membro desde: 01/11/2007 14:57:00
Mensagens: 103
Offline
|
As regras e movimentações conheço muito bem, o meu maior problema é ter tempo para o desenvolvimento, pois trabalho com programação e como todo mundo já sabe estudar e trabalhar e ainda namorar não se sobra muito tempo !!!
Quero mesmo alguém para ajudar a fazer os movimento, não é que não saiba ...
Se alguém estiver a disposição ... á ajuda será muito bem vinda !!!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/11/2007 23:27:53
|
Luca
Moderador
![[Avatar]](/images/avatar/17e62166fc8586dfa4d1bc0e1742c08b.jpg)
Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline
|
Olá
Google por xadres e encontrara MUITOS projetos em C. Dai passar para Java would be a piece of cake. Só tem um PORÉM:
sfing wrote:..., o meu maior problema é ter tempo para o desenvolvimento, pois trabalho com programação e como todo mundo já sabe estudar e trabalhar e ainda namorar não se sobra muito tempo !!!
Fazer um jogo de xadrês é MUITO difícil. Já tentei fazer um e desisti devido ao alto grau de complexidade. Envolve várias áreas de conhecimento. Não basta saber programar bem e saber jogar bem xadrês. É preciso ser muito bom em algoritmos que normalmente não são ensinados a fundo na faculdade.
[]s
Luca
|
Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."
CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/11/2007 23:40:07
|
tnaires
GUJ Master
![[Avatar]](/images/avatar/5f6371c9126149517d9ba475def53139.png)
Membro desde: 22/12/2003 08:05:58
Mensagens: 1678
Localização: Porto Alegre/RS - Natal/RN
Offline
|
Olá
Luca wrote:Fazer um jogo de xadrês é MUITO difícil.
Depende. Pelo jeito, o sfing quer apenas fazer um programa para mover as peças; nesse caso, a maior complexidade será desenhar as peças na tela. Porém, se ele quiser implementar a inteligência do jogo, para jogar contra o computador... Difícil é, mas não impossível. Sugiro o sfing pesquisar sobre o algoritmo MINIMAX com Alfa-Beta Pruning, e seria bom implementá-los com um jogo de tabuleiro mais simples, como damas, trilha ou mesmo jogo-da-velha, para depois se sentir capaz de implementar a inteligência de um jogo de xadrez.
Abraços
|
Tarso Nunes Aires
Blog - http://cabritin.wordpress.com/
Delicious - http://delicious.com/tnaires
Twitter - @tnaires
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/11/2007 23:52:22
|
Proteu Alcebidiano
JavaEvangelist
![[Avatar]](/images/avatar/ceccbaaff99be20a857e00767f70b481.jpg)
Membro desde: 23/06/2006 14:38:34
Mensagens: 391
Localização: Cidadão do Mundo
Offline
|
Nesse artigo um algoritmo para xadrez é mencionado:
[...]
an existing chess algorithm implementation was used, more
specifically the GNU GPL Chessterfield implementation
(see [5]). Alternative implementations can be integrated
relatively simply since a generic interface is used to
communicate with the algorithm.
T+
|
Glaucio G. de M. Melo
Don't run Alone.
[gm]² on forecasting
The world is parallel, and yet most often we program real-world applications in sequential programming languages. This is unnecessarily difficult. (Joe Armstrong). |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/11/2007 23:57:20
|
tnaires
GUJ Master
![[Avatar]](/images/avatar/5f6371c9126149517d9ba475def53139.png)
Membro desde: 22/12/2003 08:05:58
Mensagens: 1678
Localização: Porto Alegre/RS - Natal/RN
Offline
|
Vejam esses links interessantíssimos do site GameDev:
Chess Programming Part I: Getting Started
Chess Programming Part II: Data Structures
Chess Programming Part III: Move Generation
Chess Programming Part IV: Basic Search
Chess Programming Part V: Advanced Search
Chess Programming Part VI: Evaluation Functions
Muita atenção quando for escrever uma função de avaliação da melhor jogada. Seu algoritmo pode estar redondo, mas o computador efetuará jogadas burras caso a função de avaliação não seja bem escolhida.
Abraços
|
Tarso Nunes Aires
Blog - http://cabritin.wordpress.com/
Delicious - http://delicious.com/tnaires
Twitter - @tnaires
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/11/2007 09:04:54
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Eu concordo com o Luca. Mesmo implementar só os movimentos é uma tarefa bastante árdua. Explico os motivos: 1. Parte dos movimentos só são possíveis dependendo das jogadas anteriores. Exemplo: 1.1. O Roque só pode ser feito se o rei o a torre nunca se movimentaram; 1.2. O peão só pode comer "en passant" se, na jogada anterior, o peão do adversário tiver movimentado duas casas; 2. É difícil identificar certas situações de empate forçado: 2.1. Para o empate por repetição consecutiva do tabuleiro, é necessário guardar e comparar o tabuleiro a cada jogada do jogo; 2.2. É necessário um bom algoritmo para detectar o "empate por cheque infinito"; 3. É trabalhoso implementar regras para garantir que um movimento que ponha o rei em risco não ocorrerá. Não disse que nada é impossível. A maior parte das coisas aqui, nem sequer exige uma lógica complexa. Mas é um trabalho árduo, envolve muitos detalhes e demorado. É obrigatório implementar um jogo de xadrez?
This message was edited 1 time. Last update was at 17/11/2007 09:05:43
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/11/2007 09:27:27
|
Schuenemann
GUJ Ranger
Membro desde: 13/01/2005 12:31:27
Mensagens: 854
Offline
|
Isso não é lá tão difícil, Vini.
1.1. O Roque só pode ser feito se o rei o a torre nunca se movimentaram;
1.2. O peão só pode comer "en passant" se, na jogada anterior, o peão do adversário tiver movimentado duas casas;
Um boolean para guardar se essas 3 peças já se moveram e se a jogada anterior foi um peão andando duas casas.
No servidor FICS, o servidor envia essas informações a cada jogada, para que o cliente saiba se pode fazer essa jogada.
2.1. Para o empate por repetição consecutiva do tabuleiro, é necessário guardar e comparar o tabuleiro a cada jogada do jogo;
2.2. É necessário um bom algoritmo para detectar o "empate por cheque infinito";
Existe empate por xeque infinito? Acho que cai no empate por repetição (que não precisa ser consecutiva) ou empate por 50 lances.
Eu acho mais difícil o movimento das peças, detectar se existe uma peça bloqueando o caminho, se a jogada deixa o rei em xeque, etc. Já vi uma biblioteca Java pra isso; não lembro o nome, mas tenho certeza que você acha no google.
Sobre um computador jogar xadrez (que deve MUITO difícil), existe um opensource e muito forte, o Crafty. Já o vi derrotando mestre.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/11/2007 10:19:33
|
Luca
Moderador
![[Avatar]](/images/avatar/17e62166fc8586dfa4d1bc0e1742c08b.jpg)
Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline
|
Olá
ViniGodoy wrote:Eu concordo com o Luca.
Há muitos anos atrás pensei em desenvolver um jogo de xadrês para treinar algumas aberturas. Procurando na Internet achei vários engines open source em C. Estudando um pouquinho deles percebi que a complexidade é bastante grande e que eu não conseguiria fazer como projetinho de fim de semana e ainda levar minha vida normal que na época incluia velejar e correr.
Se o cara quiser dedicar muitas horas por dia durante um bom tempo e se conseguir dividir as tarefas com pelo menos mais 2 desenvolvedores, acho viável usar o que já existe em C para converter para Java.
Sozinho nas horas vagas é melhor ele escolher um jogo mais fácil.
[]s
Luca
|
Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."
CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/11/2007 11:28:04
|
tnaires
GUJ Master
![[Avatar]](/images/avatar/5f6371c9126149517d9ba475def53139.png)
Membro desde: 22/12/2003 08:05:58
Mensagens: 1678
Localização: Porto Alegre/RS - Natal/RN
Offline
|
Pessoal
Todos nós concordamos que um jogo de xadrez não é trivial a ponto de ser feito em um fim de semana (na verdade, nem mesmo o jogo-da-velha é). Entretanto, jogos de xadrez já são construídos há muito tempo, e já existem vários algoritmos e estratégias consolidadas para implementá-lo. Ou seja, não é nada EXTREMAMENTE difícil: nada que um pouco de estudo e organização não ajudem.
Quem se interessar, leia os links que passei, e procure estudar os algoritmos e as estruturas de dados envolvidas.
Abraços
|
Tarso Nunes Aires
Blog - http://cabritin.wordpress.com/
Delicious - http://delicious.com/tnaires
Twitter - @tnaires
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/11/2007 14:58:35
|
ffranceschi
JavaChild
![[Avatar]](/images/avatar/c80bfa00454a7564c07c0559808294fa.jpg)
Membro desde: 23/08/2006 11:07:21
Mensagens: 130
Offline
|
Ja ouvi falar que quando o Kasparov jogou contra o Deep Blue, todas as partidas deles estavam cadastradas e o computador saberia jogar exatamente o que jogar contra cada lance ele fazia. Entao na ultima partida ele jogou de pretas uma defesa que ele nunca tinha jogado, tentando "enganar" o computador, mas ele errou um lance DUVIDOSO (que acredita-se que ele entregou mesmo).
Xadrez talvez pra implementar é melhor voce sempre jogar de preta, pq ela que defini todas as linhas de defesa que quer jogar, ai fica menos menos dificil pra implementar
|
Fernando Franceschi
Blog - http://ffranceschi.wordpress.com/
Twitter - http://twitter.com/ffranceschi1 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/11/2007 17:47:30
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Schuenemann wrote:Isso não é lá tão difícil, Vini.
Conforme eu falei ali em cima, a questão exatamente ser difícil, mas de ser trabalhoso. E o colega disse que estava sem tempo.
Veja o caso da jogada en-passant. Você não deve guardar somente "um boolean se andou duas na última jogada". Mas também o turno em que o peão andou duas casas. Afinal, a lance en-passant só pode ocorrer na jogada seguinte ao movimento. Além disso, o peão a ser comido estará ao lado do peão que come (e não na diagonal, como seria na maior parte das jogadas). Ou seja, provavelmente haverá um if só para tratar essa situação.
Eu mesmo já desenvolvi um jogo de xadrez completinho, com o movimento de cada uma das peças, mas quase sem IA (era só com base em busca heurística mesmo). Detectava também o fim de jogo, finais possíveis, fazia contagem de lances, etc. Nenhuma das lógicas é realmente difícil, mas se você quiser caprichar é realmente trabalhoso.
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/11/2007 17:56:04
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Schuenemann wrote:Isso não é lá tão difícil, Vini.
Existe empate por xeque infinito? Acho que cai no empate por repetição (que não precisa ser consecutiva) ou empate por 50 lances.
Tem razão. Aqui eu confundi. É a mesma situação mesmo.
Na verdade, a outra situação de empate que eu não me recordava é quando em 50 movimentações não tiver acontecido nenhuma captura de peça ou movimento do peão.
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
|
|