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); } }
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]; } }