コード例 #1
0
ファイル: Game.xaml.cs プロジェクト: glinxtech/MemoryGame
        //Activates an event.
        //Activates when an upside down card is clicked
        public async void OnCardClick(object sender, RoutedEventArgs e)
        {
            if (IsLocked)
            {
                return;
            }
            Card card = GridData.AllCards.First(a => a.Element == e.Source as Button);

            if (card.IsRevealed)
            {
                return;
            }
            card.Reveal();

            // First card
            if (RevealedCard == null)
            {
                RevealedCard = card;
            }

            // No match
            else if (card.Type != RevealedCard.Type)
            {
                IsLocked = true;
                await Task.Delay(1000);

                card.Hide();
                RevealedCard.Hide();
                GridData.SetCardsEnabled(false);
                RevealedCard       = null;
                CurrentPlayerIndex = CurrentPlayerIndex == 0 ? 1 : 0;
                GridData.SetCardsEnabled(true);
                IsLocked = false;
                //Turns bool Displayplayer ON/OFF. This updates the player turn in the top left of the screen.
                DisplayPlayer = !DisplayPlayer;
                if (DisplayPlayer)
                {
                    Labelnameplayer.Content = Players[0].Name + " is aan zet";
                }
                else
                {
                    Labelnameplayer.Content = Players[1].Name + " is aan zet";
                }
            }

            // Match
            else
            {
                IsLocked = true;
                CurrentPlayer.ApplyScore(card.Type);
                await Task.Delay(500);

                card.Matched();
                RevealedCard.Matched();
                UpdatePlayerScore(CurrentPlayer);
                RevealedCard = null;
                IsLocked     = false;
                //Updates the player turn in the top left of the screen again.
                //This time it shows that they get an extra turn.
                if (DisplayPlayer)
                {
                    Labelnameplayer.Content = Players[0].Name + " heeft een extra zet";
                }
                else
                {
                    Labelnameplayer.Content = Players[1].Name + " heeft een extra zet";
                }
            }
        }