/// <summary> /// S'exécute lorsque l'on clique sur le bouton « Aléatoire ». /// </summary> /// <param name="sender">Objet appelant</param> /// <param name="e">Arguments</param> private void btnAleatoire_Click(object sender, RoutedEventArgs e) { btnAleatoire.IsEnabled = false; for (int x = 0; x < GrilleJeu.TAILLE_GRILLE_JEU; x++) { for (int y = 0; y < HAUTEUR_GRILLE_DISPONIBLE; y++) { if (pieces[x, y] == null) // On ajoute une pièce aléatoire à chaque case vide { ReponseGenerateurPiece piece = selectionneurPieces.GenererPieceAleatoire(ParametresCouleursJoueurs.CouleurJoueur); EstSelection = false; selectionneurPieces.CacherInterface(); pieces[x, y] = new PieceAffichable(piece.Piece, piece.Affichage, piece.Nom); pieces[x, y].Modifier((Piece Piece, Rectangle Affichage, string Nom) => { Affichage.MouseLeftButtonUp += (object pieceAffichable, MouseButtonEventArgs evenement) => { selectionneurPieces.RedonnerPiece(Nom); grdPlateauJeu.Children.Remove(Affichage); pieces[Grid.GetColumn((Rectangle)pieceAffichable), Grid.GetRow((Rectangle)pieceAffichable)] = null; btnJouer.IsEnabled = false; if (selectionneurPieces.NombresTypesPiecesRestants() == SelectionneurPieces.NB_TYPES_PIECES) { btnVider.IsEnabled = false; } btnAleatoire.IsEnabled = true; }; }); Grid.SetColumn(pieces[x, y].Affichage, x); Grid.SetRow(pieces[x, y].Affichage, y); grdPlateauJeu.Children.Add(pieces[x, y].Affichage); } } } btnJouer.IsEnabled = true; btnVider.IsEnabled = true; }
/// <summary> /// Demander une pièce aléatoire /// </summary> /// <param name="couleur">Couleur de la pièce</param> /// <returns></returns> public ReponseGenerateurPiece GenererPieceAleatoire(Couleur couleur) { Random aleatoire = new Random(Guid.NewGuid().GetHashCode()); int index = aleatoire.Next(generateurs.Count); ReponseGenerateurPiece reponse = new ReponseGenerateurPiece(generateurs[index].Generateur.GenererPiece(couleur), new Rectangle() { Fill = new ImageBrush(new BitmapImage(new Uri(generateurs[index].Affichage.Uri, UriKind.Relative))), Cursor = Cursors.Hand }, generateurs[index].NomSprite); if (generateurs[index].Generateur.Nombre == 0) { generateurs[index].Affichage.Control.Visibility = Visibility.Collapsed; generateurs[index].Affichage.LabelNbPieces.Visibility = Visibility.Collapsed; generateursVides.Add(generateurs[index]); generateurs.Remove(generateurs[index]); } return(reponse); }