Echecs : partie 6

muqaddarmuqaddar Administrateur
février 2007 modifié dans API AppKit #1
Gestion multi-nib

Ce tutorial montre comment gérer plusieurs fichiers .nib

Nouvelles Fonctionnalités :
- Implémentation de la prise en passant
- Implémentation de la promotion du pion

Pour essayer la promotion, ouvrez le fichier "Piege de Lasker.game".
Le trait est aux noirs : prenez le cavalier Blanc (7. ... f2xg1).
Les Noirs gagnent s'ils choisissent la bonne pièce. Laquelle ?

Sujets abordés :
- fichiers .nib
- classe NSMatrix
- classe NSButtonCell
- classe NSBundle
- classe NSApplication

Nouveau fichier .nib : PromoPanel.nib

Nouvelle classe : Controller

Nouvelles méthodes (classe Controller) :
- (void)showPromoPanel:(BOOL)isWhite;
- (IBAction)closePromo:(id)sender;

Nouvelles méthodes (classe ChessView) :
Accesseurs:
- (int) promoPiece;
- (void) setPromoPiece:(int)piece;

Méthodes légèrement modifiée (classe ChessView):
- (void)drawRect:(NSRect)rect;
- (void) mouseDown: (NSEvent *) theEvent;
- (void) mouseDragged: (NSEvent *) theEvent;
- (void) mouseUp: (NSEvent *) theEvent;
- (BOOL)isValidMoveFrom:(LBBox)fromBox to:(LBBox)toBox board:(LBPosition)pos piece:(int)piece;
- (NSString*)moveStringFrom:(LBBox)fromBox to:(LBBox)toBox;

Et maintenant ?

Ce tutorial était le dernier de la série.
Voici quelques idées si vous souhaitez vous exercer en apportant des améliorations à  cette application :

- Installer un menu permettant de visualiser l'échiquier Noirs en bas.
Vous devrez pour cela :
* modifier le dessin du board pour supprimer les coordonnées.
* modifier drawRect pour afficher les coordonnées par programme, en utilisant NSAttributedString.
* Introduire un Booléen exprimant le sens de l'échiquier, et l'utiliser dans drawRect pour placer les pièces.

- Installer un menu permettant de définir une position de départ (problèmes de mats ou études)
* Il faudra pour cela créer un autre fichier .nib ouvrant une boite de dialogue.
* Elle comprendra un échiquier vide et un jeu de pièces à  sélectionner pour remplir/vider chaque case.

- Permettre la lecture et l'enregistrement de fichiers .pgn ou .epd (fichiers texte standard pour les partie d'Echecs et les positions)

- Si vous voulez comprendre la programmation d'un moteur de réflexion, consultez : http://www.frayn.net/beowulf/theory.html
* Vous y trouverez un excellent article expliquant les principes de l'algorithme negamax, (amélioration de l'algorithme minmax) et de l'élagage alpha-beta.
* Ces algorithmes sont utilisés pour tous les jeux de réflexion à  deux joueurs (Dames, Othello-reversi, Go etc...)
* A propos de l'algorithme negamax, l'auteur dit: "Implementing this is surprisingly easy".
Ne le croyez pas sur parole: cet algorithme est basé sur une fonction récursive qui peut s'appeler elle-même plusieurs milliers de fois avant de renvoyer un résultat.

Bonne chance !


[Fichier joint supprimé par l'administrateur]
Connectez-vous ou Inscrivez-vous pour répondre.