Setas ou WASD pra mover · espaço pausa · no celular, deslize na tela ou use o direcional.
Clique numa peça pra ver os lances (ponto = mover, anel = capturar). 2 jogadores no mesmo dispositivo. Regras completas: roque, en passant, promoção, xeque e xeque-mate.
Um loop, uma grade e colisões
O tabuleiro é uma grade de 20×20. A cobra é só uma lista de coordenadas: a cada tick, a cabeça ganha uma célula na direção atual e a cauda some — a não ser que ela coma, quando a cauda fica e o corpo cresce.
O jogo acaba quando a cabeça bate na parede ou no próprio corpo. A cada poucas frutas o intervalo do loop diminui — é assim que a velocidade aumenta. Tudo desenhado num <canvas>, sem imagens.
Gerar só os lances legais
Cada peça gera seus lances "pseudo-legais". Depois, um filtro descarta qualquer jogada que deixaria o próprio rei em xeque — simulando o lance e checando se o rei fica atacado. É isso que faz xeque, roque e en passant saírem certos.
Pra ter certeza de que está correto, o motor foi testado com perft: contar todas as posições possíveis até certa profundidade e comparar com valores conhecidos. Bateu 20, 400, 8.902 e 197.281 — geração 100% fiel.
Como a máquina "pensa"
A IA usa minimax com poda alfa-beta: ela simula os próximos lances montando uma árvore — eu jogo, você responde, eu respondo — e assume que cada lado joga o melhor possível. A poda alfa-beta corta os ramos que já se provaram piores, então ela enxerga mais fundo gastando menos cálculo.
Pra decidir o que é "bom", cada posição recebe uma nota: material (dama vale mais que peão) somado a tabelas de posição que premiam cavalo no centro, rei protegido, peão avançado. No Fácil ela enxerga 1 lance à frente; no Difícil, 3. Quanto mais fundo, mais forte — e um pouco mais lenta pra responder.
Se dá pra construir um motor de xadrez com IA por diversão, imagina no seu projeto.
Falar com a PX