Echecs : partie 6
muqaddar
Administrateur
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]
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.