Jogo de Xadrez

Acho q vamos começar com a burra certo!

Eu ateh pensei em fazer um jogo da velha soh para mim tirar uma base para partir pro Xadrez, acha que é uma boa decisão? ou devo me focar no Chess?
Mais uma pergunta, nunca usei Threads, muito provavelmente irei ter que usar algumas sincronizadas, não? Já ouvi que isso é complicado!
E para fechar comecei a implementação hoje e já me deparei com um problema eu tenho os metodos anda() e come() eu naum terei q passar para eles a matriz atual do tabuleiro para saber onde posso me mover e para onde comer?

PS.: mover e comer por causa da movimentação do peão!
Obrigado!

Seria interessante mostrar o algoritmo de jogos de xadrez de jogos simples como um Atari 2600

http://www.atariage.com/screenshot_page.html?SoftwareLabelID=581

Acho que é uma tabelinha simples de pesos e valores, como os jogos tinham um tamanho reduzido o algoritmo deve ser muito enxuto.

[quote=guisantogui]Acho q vamos começar com a burra certo!

Eu ateh pensei em fazer um jogo da velha soh para mim tirar uma base para partir pro Xadrez, acha que é uma boa decisão? ou devo me focar no Chess?
Mais uma pergunta, nunca usei Threads, muito provavelmente irei ter que usar algumas sincronizadas, não? Já ouvi que isso é complicado!
E para fechar comecei a implementação hoje e já me deparei com um problema eu tenho os metodos anda() e come() eu naum terei q passar para eles a matriz atual do tabuleiro para saber onde posso me mover e para onde comer?

PS.: mover e comer por causa da movimentação do peão!
Obrigado![/quote]

Dificilmente jogos usam muitas threads. O máximo que você vai ter é uma thread em background, processando.

É uma boa começar por um jogo mais simples sim. O jogo da velha é uma boa, desde que você não tente resolver a IA dele com vários ifs (isso é possível no velha, mas impossível no xadrez). É uma boa para você pelo menos já montar sua classe de árvore, sua busca minimax e já ver a organização geral do programa.

Valeu vini, vou deixar o xadrez hoje e vou tentar modelar e começar a implementação do jogo da velha ainda hoje, vlw pela força de todos! :smiley:

Recomendação de livro (não serve para jogos de tabuleiro, mas tenho a impressão que você vai curtir): Programming Game AI By Example. E como diz o nome é “by Example”.

Mas é escrito em C++.

Tchê vou te dizer que antes de ir para a livraria vou ter que dar uma passada no cursinho de inglês :?

Já que estamos falando de IA em games, outro grande desafio pode ser fazer uma IA jogadora de xadrez que seja burra, mas que não pareça intencionalmente burra. Ou seja, ela deveria emular os erros feitos por diferentes perfis de jogadores: como principiantes, crianças, ou jogadores iniciantes que já tenham algum conhecimento básico da estrutura do jogo (conhecem algumas aberturas, mas se perdem no meio do jogo, ou são defensivos demais, agressivos demais, etc).

Acreditem, fazer uma IA burra pode ser um trabalho tão ou mais complexo quanto fazer uma IA imbatível. No caso do xadrez, é até fácil fazer uma IA relativamente convincente, principalmente pq a maioria das pessoas que joga não consegue identificar facilmente esses perfis. Mas tente fazer isso com um jogo de ação, como pong, e vc vai ver o trabalhão que dá.

Outro desafio de IA para games é projetar uma IA que seja esperta, mostre todo seu potencial, lute contra o jogador e ainda perca no final. E, claro, perca sem parecer que entregou o jogo.

Apesar de eu já estar bem apavorado com a IA do Xadrez parece ser divertido criar IA’s para os mais diferentes tipos de jogos, mas a maneira correta de se fazer isso não seria com SCRIPT’s, talvez usando PROLOG!

Scripts são uma forma.

Outra é cadastrar dados, como a probabilidade de um jogador de determinado tipo preferir essa ou aquela jogada.

ehehehe… e a idéia não era te aterrorizar. Mas geralmente minhas turmas de IA ficam com um sorriso bobo na cara e olhos brilhando quando começo a falar sobre fazer uma IA burra, ou uma IA que perca, mas que não pareça entregar o jogo. É como se um novo mundo de possibilidade se abrisse diante deles.

Acho que pq nas faculdades, sempre ensina-se a IA clássica, que busca a perfeição. E em games, usamos uma abordagem mais humanística, baseada no teste de turing. Afinal, ninguém gosta de jogar para só perder.