Ejemplo n.º 1
0
        void carreau_MouseDown(object sender, MouseEventArgs e)
        {
            if (!bloquerDeplacement)
            {
                // sauvegarder le carreau de départ
                picFrom = sender as PictureBox;
                imgFrom = picFrom.Image;

                // terminer s'il n'y a pas de pièce sur le carreau
                if (imgFrom == null)
                {
                    return;
                }

                // informations sur la pièce contenue dans le carreau
                InfoPiece piece = imgFrom.Tag as InfoPiece;

                // terminer si la partie n'est pas active ou si la couleur de la piece selectionnée ne corresponde pas à la couleur du joueur qui joue dans ce tours
                if (status.etat == EtatPartie.Reset || status.etat == EtatPartie.Mat || status.couleur != piece.couleur)
                {
                    return;
                }

                // demarrer le Drag & Drop
                picFrom.DoDragDrop(imgFrom, DragDropEffects.Move);

                // remettre le curseur
                pnlEdging.Cursor = Cursors.Default;

                // remettre l'image sur le carreau de départ
                picFrom.Image       = imgFrom;
                picFrom.BorderStyle = BorderStyle.None;

                // terminer s'il n'y a pas de carreau cible
                if (picTo == null)
                {
                    return;
                }

                // calculer les indices des carreaux de départ et arrivée
                int idxFrom = Convert.ToInt32(picFrom.Tag);
                int idxTo   = Convert.ToInt32(picTo.Tag);

                // reset du carreau cible
                picTo = null;

                // transformer les indices lineaires en numeros de rangée et colonne
                int x1 = idxFrom % 8;        // colonne du carreau de départ
                int y1 = (idxFrom - x1) / 8; // rangée du carreau de départ
                int x2 = idxTo % 8;          // colonne du carreau d'arrivée
                int y2 = (idxTo - x2) / 8;   // rangée du carreau d'arrivée

                // invoquer l'operation << DeplacerPiece >>
                DeplacerPiece(x1, y1, x2, y2);
            }
        }
Ejemplo n.º 2
0
 public void ActualiserCase(int x, int y, InfoPiece info)
 {
     if (info == null)
     {
         carreaux[x, y].Image = null;
     }
     else if (info.couleur == CouleurCamp.Blanche)
     {
         carreaux[x, y].Image = piecesBlanches[(int)info.type];
     }
     else
     {
         carreaux[x, y].Image = piecesNoires[(int)info.type];
     }
 }