Bonjour !
J'ai mis la main sur une version en Pascal du programme d'échecs TSCP (Tom Kerrigan's Simple Chess Program). Au cas où cela intéresserait quelqu'un, voici le lien vers cette version en Pascal : TSCPPAS.ZIP
Il y a un endroit du programme que je ne comprends pas trop.
Voici la déclaration du type TCastlePermissions :
Voici la constante castle_mask :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 type TCastlePermission = (AllowWhiteKingSide, AllowWhiteQueenSide, AllowBlackKingSide, AllowBlackQueenside); TCastlePermissions = set of TCastlePermission;
Maintenant, on a une variable castle de type TCastlePermissions, dont la valeur est modifiée de la façon suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 castle_mask: array[0..63] of byte = ( 7, 15, 15, 15, 3, 15, 15, 11, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 13, 15, 15, 15, 12, 15, 15, 14 );
Ce que je comprends pas, c'est le rapport qu'il y a entre une valeur de type Byte et une valeur de type set of TCastlePermission.
Code : Sélectionner tout - Visualiser dans une fenêtre à part castle := castle - TCastlePermissions(castle_mask[m.from]) - TCastlePermissions(castle_mask[m.ToNdx]);
Il est à noter que le code se compile sans problème avec Delphi 7 et avec Virtual Pascal. En revanche Free Pascal le refuse :
Pourriez-vous m'éclairer un peu (et éventuellement me donner une solution pour pouvoir compiler avec Free Pascal) ?board.pas(595,22) Error: Illegal type conversion: "Byte" to "TCastlePermissions"
board.pas(595,64) Error: Illegal type conversion: "Byte" to "TCastlePermissions"









Répondre avec citation
Partager