Esempio n. 1
0
        /// <summary>
        /// Un joueur tente de jouer un coup. Joue le coup et change de tour si possible.
        /// Si l'autre joueur doit passer, reviens au premier joueur.
        /// Si la partie est terminée, affichage des score et du gagnant.
        /// </summary>
        private void Pawn_Click(object sender, RoutedEventArgs e)
        {
            contextPlayers.Timer.Stop();
            CellButton cellButton = (CellButton)sender;
            int        c          = cellButton.C;
            int        l          = cellButton.L;


            if (board.PlayMove(c, l, whiteTurn))
            {
                // Coup jouable et joué
                cellButton.Val = board.GetBoard()[c, l];
                whiteTurn      = !whiteTurn;
                var newWhiteTurn = whiteTurn;

                CheckFinished();

                // L'IA joue que si elle n'a pas passé son tour (donc whiteTurn n'a pas été modifié dans CheckFinished().)
                if (playAgainstIA && newWhiteTurn == whiteTurn)
                {
                    PlayIAMove();
                    CheckFinished();
                }
            }
            else
            {
                // Impossible de jouer ce coup
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Commence ou recommence une partie.
        /// </summary>
        private void StartGame()
        {
            UpdateTitle();

            // Le joueur noir commence toujours
            whiteTurn = false;
            // Création du contexte pour les infos des joueurs
            contextPlayers = new ContextPlayers(2, 2);
            // On bind les infos au DataContext de la fenêtre.
            DataContext = contextPlayers;
            // Nouveau plateau de jeu
            board = new Board();
            cells = new CellButton[8, 8];
            // Style des boutons (pions)
            Style resource = (Style)FindResource("PawnStyle");
            var   tabBoard = board.GetBoard();

            for (int c = 0; c < 8; c++)
            {
                for (int l = 0; l < 8; l++)
                {
                    // Création et ajout du pion dans le plateau de jeu
                    var        val     = tabBoard[c, l];
                    CellButton pawnBtn = new CellButton(c, l, val)
                    {
                        Style = resource
                    };
                    pawnBtn.Click += Pawn_Click;
                    cells[c, l]    = pawnBtn;

                    // Ajout graphique du pion : Border(Grid(bouton transparent, ellipse visible))
                    Border border = new Border
                    {
                        BorderBrush     = Brushes.White,
                        BorderThickness = new Thickness(1, 1, 0, 0)
                    };
                    if (c == 0)
                    {
                        border.BorderThickness = new Thickness(0, 1, 0, 0);
                        if (l == 0)
                        {
                            border.BorderThickness = new Thickness(0, 0, 0, 0);
                        }
                    }
                    else if (l == 0)
                    {
                        border.BorderThickness = new Thickness(1, 0, 0, 0);
                    }

                    Grid grid = new Grid
                    {
                        Background = Brushes.Green
                    };
                    Viewbox viewbox = new Viewbox
                    {
                        Child  = pawnBtn.Ellipse,
                        Margin = new Thickness(4)
                    };
                    grid.Children.Add(viewbox);
                    grid.Children.Add(pawnBtn);

                    border.Child = grid;
                    Grid.SetColumn(border, c + 1);
                    Grid.SetRow(border, l + 1);
                    gridBoard.Children.Add(border);
                }
            }
            // Ajout des en-têtes au plateau (A-H dans les colonnes, 1-8 pour les lignes)
            AddHeader();
            // Refresh de la GUI
            UpdateUI(false);
        }