Bonjour,
Je programme actuellement un petit jeu d'échecs (en C# avec XNA).
Mon problème est que je n'arrive pas à gérer les échecs (et mat) dans ma boucle.
Actuellement chaque pièce peut faire plusieurs mouvements "en théorie", c'est à dire si elle était la seule pièce sur le plateau.
Quand une pièce est sélectionnée, pour chacun de ses mouvements théoriques, si le mouvement est possible en pratique (pas bloqué par une pièce quelconque sur le plateau) il est stocké dans une liste de mouvement. La pièce ne pourra bouger que dans les cases de cette liste.
Le problème est pour le roi. En effet, il ne peut se déplacer que si la case ciblée n'est pas attaquable, c'est-à-dire qu'aucune pièce adverse ne peut pas se déplacer sur cette case. Cela implique de vérifier les déplacements de TOUTES les pièces adverses, y compris du roi. Or pour obtenir les déplacements du roi, on doit encore vérifier qu'aucune pièce n'attaque la case cible et ainsi de suite créant une récurrence infinie...
Avez vous des idées pour gérer ce problème?
Merci d'avance
Partager