Accès au nouveau site !!! ICI



   

   

Appel à contributions



  Accueil | Téléchargement | Parties | Ecoles | Forum | News | Contactez l'auteur !  

Accès au nouveau site de TchecMeet...

Accueil

SITE support!

Le concept
Téléchargement
Archives
Foire aux questions
Technologie XML
Documentation

Etudes & Recherches
Sources


Jouer en direct !

Base de parties
Afficheur de parties
Problèmes & Solutions

Les liens

Ancien forum
Toutes les NEWS

Autres logiciels...

Contactez
nous









Le site perso de l'auteur de TchecMeet!



Composant TcmEchiquier.OCX

Ce composant Active-X permet la gestion de base d'un l'échiquier. Des fonctions standards sont proposées comme la récupération des coordonnées X,Y en fonction de la position de la souris au moment du clic, etc...

Ces fonctions peuvent être incluses dans un projet VB de réalisation de logiciel de jeu d'échecs.

Le package et les sources sont proposés sous la forme d'un fichier ZIP à décompresser (utilisez le programme WinZip mis à votre disposition sur le site)

L'installation se passe sans problème particulier. Veuillez à installer VisualBasic avant de lancer le projet (c'est le minimum...) et à respecter les chemins (path) des répertoires (pour le sous répertoire images notammant).

Le projet VB s'appelle TcmEchiquier et se charge en double-cliquant sur le fichier TcmEchiquer.Vbp

Explication du package :

'Projet TcmEchiquier
'Composant d'affichage et de gestion d'un échiquier 8x8
'Auteur : olivier de LANNOY
'Création : 15 février 2002
'version 1.0

Global Const RIEN = 1
Global Const BLANC = 2
Global Const NOIR = 3

Global Const PION_NOIR = 2
Global Const TOUR_NOIR = 3
Global Const CAVALIER_NOIR = 4
Global Const FOU_NOIR = 5
Global Const REINE_NOIR = 6
Global Const ROI_NOIR = 7

Global Const PION_BLANC = 8
Global Const TOUR_BLANC = 9
Global Const CAVALIER_BLANC = 10
Global Const FOU_BLANC = 11
Global Const REINE_BLANC = 12
Global Const ROI_BLANC = 13

Tcm.bas - Espace de déclaration des constantes globales utilisées.

La valeur est très importante et correspond au NOM de l'icône de la pièce dans le répertoire IMAGES

Il est à noter que vous pouvez changer le contenu des icônes des pièces en standard, sans toutefois changer le nom de ces images.


' Déclare l'événement Click de votre contrôle.
Public Event Click(col As Integer, row As Integer)
' Déclare l'événement MouseDown de votre contrôle.
Public Event MouseDown(col As Integer, row As Integer, Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
' Déclare l'événement MouveUp de votre contrôle.
Public Event MouseUp(col As Integer, row As Integer, Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
' Déclare la propriété Enabled de votre contrôle.
Public Enabled As Boolean

Dans le fichier UserControl1.ctl

description des événements et propriétés liés à l'Active-X

Cette zone déclarative est importante car lorsque l'utilisateur, par exemple, cliquera sur l'échiquier au niveau de votre application, la fonction Click décrite ci-dessus sera exécutée avec ses paramètres spécifiques ; vous pourrez alors récupérer la valeur de la colonne (col) et de la ligne (row) correspondante.

'sauvegarde interne de l'échiquier
Dim val_case(8, 8) As Integer
'chemin des images
Dim chemin As String

'propriété de retour du code de la pièce
Public Property Get Piece(colonne As Integer, ligne As Integer) As Integer
     'on renvoi la valeur de la case stockée dans le tableau val_case
     Piece = val_case(colonne, ligne)
End Property

'propriété pour l'affectation du code de la pièce
Public Property Let Piece(colonne As Integer, ligne As Integer, valeur As Integer)
Dim i As Integer
'on renvoi la valeur et affiche la piece !!
 val_case(colonne, ligne) = valeur
 i = (ligne - 1) * 8 + colonne
 If valeur = RIEN Then
          position(i).Picture = LoadPicture()
 Else
          position(i).Picture = LoadPicture(chemin & Trim(Str(valeur))           & ".ico")
 End If

End Property

Déclaration des propriétés et variables globales

Val_case contient les valeurs de chaque case de l'échiquier

Récupère la valeur de la pièce présente dans la case (colonne,ligne)

 

Affecte la case de l'échiquier de l'image correspondante à la valeur du paramètre passé

La fonction LoadPicture permet de charger en mémoire une image

La variable Valeur contient le type de pièce cf. Constantes globales

Ci-dessous, les fonctions d'initilialisation de l'échiquier

'init de l'échiquier
Public Property Let Init(couleur As Integer)
Dim i, j As Integer
Dim v As Integer

     'remplissage de l'échiquier à RIEN
For i = 1 To 8
          For j = 1 To 8
          v = (j - 1) * 8 + i
          val_case(i, j) = couleur
          If couleur = RIEN Then
               position(v).Picture = LoadPicture()
          Else
               'mettre l'image (???!)
               position(v).Picture = LoadPicture(chemin & Trim(Str(couleur))                & ".ico")
          End If
     Next
Next

End Property

Public Sub init_echiquier(couleur As Integer, PathImage As String)
Dim i As Integer
Dim j As Integer

'affectation pour le contrôle
chemin = PathImage

'mise en place de l'echelle
Picture1.ScaleMode = vbUser
Picture1.ScaleHeight = 8
Picture1.ScaleWidth = 8
Picture1.ScaleLeft = 1
Picture1.ScaleTop = 1

'remplissage de l'échiquier à RIEN
For i = 1 To 8
For j = 1 To 8
     val_case(i, j) = RIEN
Next
Next

Select Case couleur

Case NOIR

'Les noirs en bas...
     val_case(1, 8) = TOUR_NOIR
     val_case(2, 8) = CAVALIER_NOIR
     val_case(3, 8) = FOU_NOIR
     val_case(4, 8) = ROI_NOIR
     val_case(5, 8) = REINE_NOIR
     val_case(6, 8) = FOU_NOIR
     val_case(7, 8) = CAVALIER_NOIR
     val_case(8, 8) = TOUR_NOIR
     For i = 1 To 8
          val_case(i, 7) = PION_NOIR
     Next i
     'en bas
     For i = 1 To 8
          val_case(i, 2) = PION_BLANC
     Next i

     val_case(1, 1) = TOUR_BLANC
     val_case(2, 1) = CAVALIER_BLANC
     val_case(3, 1) = FOU_BLANC
     val_case(4, 1) = ROI_BLANC
     val_case(5, 1) = REINE_BLANC
     val_case(6, 1) = FOU_BLANC
     val_case(7, 1) = CAVALIER_BLANC
     val_case(8, 1) = TOUR_BLANC

Case BLANC

     'Les blancs en bas...
     val_case(1, 8) = TOUR_BLANC
     val_case(2, 8) = CAVALIER_BLANC
     val_case(3, 8) = FOU_BLANC
     val_case(4, 8) = REINE_BLANC
     val_case(5, 8) = ROI_BLANC
     val_case(6, 8) = FOU_BLANC
     val_case(7, 8) = CAVALIER_BLANC
     val_case(8, 8) = TOUR_BLANC
     For i = 1 To 8
          val_case(i, 7) = PION_BLANC
     Next i

     'en bas
     For i = 1 To 8
          val_case(i, 2) = PION_NOIR
     Next i

     val_case(1, 1) = TOUR_NOIR
     val_case(2, 1) = CAVALIER_NOIR
     val_case(3, 1) = FOU_NOIR
     val_case(4, 1) = REINE_NOIR
     val_case(5, 1) = ROI_NOIR
     val_case(6, 1) = FOU_NOIR
     val_case(7, 1) = CAVALIER_NOIR
     val_case(8, 1) = TOUR_NOIR

End Select

'affichage en fonction des icones
For i = 1 To 64
     If val_case(((i - 1) Mod 8) + 1, ((i - 1) \ 8) + 1) = RIEN Then
          'vider
          position(i).Picture = LoadPicture()
     Else
          'mettre l'image
          position(i).Picture = LoadPicture(PathImage & Trim(Str(val_case(((i - 1) Mod 8) + 1, ((i - 1) \ 8) + 1))) & ".ico")
     End If
Next i

End Sub

Initialisation de l'échiquier en fonction de la couleur (BLANC ou NOIR)

 

 

 

 

 

 

 

 

 

Couleur précise la couleur en bas de l'échiquier

PathName est le nom du répertoire où sont stockées les images des pièces (*.ico)

Paramètres d'échelle sur l'échiquier - permet de récupérer des valeurs de colonne et de ligne entre 1 et 8

 

 

Vide l'échiquier

Autres fonctions permettant la gestion de la souris au niveau de l'échiquier (récupération de la position X,Y)

' événement Click, votre contrôle le fait suivre en
' déclenchant l'événement Click que vous avez déclaré.

Private Sub position_Click(Index As Integer)
     RaiseEvent Click(((Index - 1) Mod 8) + 1, ((Index - 1) \  8) + 1)
End Sub

Private Sub position_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
     RaiseEvent MouseDown(((Index - 1) Mod 8) + 1, ((Index - 1) \ 8) + 1, Index, Button, Shift, X, Y)
End Sub

Private Sub position_MouseUp(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
     RaiseEvent MouseUp(((Index - 1) Mod 8) + 1, ((Index - 1) \ 8) + 1, Index, Button, Shift, X, Y)
End Sub

 

A partir de l'indice du tableau (index), calcul de la colonne et de la ligne correspondantes

 

Fonctions "reroutées" par le contrôle

Le projet TABLE.VBP, contenu dans le package d'installation, permet d'effectuer des tests. La feuille principale contient, en effet, le composant TcmEchiquier (n'oubliez-pas de charger le composant TcmEchiquier.ocx au niveau de ce projet).

Echiquier.bmp est l'image de fond de l'échiquier.

Télécharger maintenant le fichier ZIP contenant le code source !

 

Dernière mise à jour
le 22-Feb-2006
Compatible ie4+, Netsc4+

Réalisation/Auteur :
Olivier de LANNOY
copyright © 2001-2005
[ Règles des échecs | Histoire des échecs | La F.F.E. | Recherche avec Google ]