// Permet de placer tous les cellButton dans l'espace dedier à l'affichage du board private void SetBoard() { int line = -1; int column = 0; boardPanel.Controls.Clear(); // Pour chaque cellule on crée un cellButton object et on créer les évenement associés foreach (Cell cell in taquin) { if (column % _selectedSize == 0) { line++; } int size = boardPanel.Width / _selectedSize; CellButton currentCellButton = new CellButton(cell, size); currentCellButton.MouseEnter += (s, e) => Button_MouseEnter(s, e); currentCellButton.MouseLeave += (s, e) => Button_MouseLeave(s, e); currentCellButton.Click += (s, e) => CellButton_Click(s, e); // Placement des boutons dans l'interface currentCellButton.Left = ((column % _selectedSize) * size); currentCellButton.Top = (line * size); boardPanel.Controls.Add(currentCellButton); column++; } }
// Fonciton raise par l'event On_Click des cellButton private void CellButton_Click(object sender, EventArgs e) { // Permet de lier l'UI et le backend pour maintenir le Taquin cohérent CellButton cellButton = (CellButton)sender; Cell cell = cellButton.Cell; if (cell.IsMovable()) { taquin.Move(cell); } UpdateBoard(); }
// Fonction permettant d'établir la disposition du board dans la fenêtre public void SetBoard() { // Calcul de la taille adaptée SetSize(); int line = -1; int column = 0; boardPanel.Controls.Clear(); // Pour chacun des cellule de l'index actuel foreach (Cell cell in States[_index]) { if (column % _size == 0) { line++; } int size = boardPanel.Width / _size; // On crée des cellButton par practcité cependant on ne leur assigne pas de gestionnaire d'événement CellButton currentCellButton = new CellButton(cell, size); currentCellButton.Left = ((column % _size) * size); currentCellButton.Top = (line * size); boardPanel.Controls.Add(currentCellButton); column++; } }