Beispiel #1
0
    void initGame()
    {
        int i;

        int[] Places = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };

        Sprite topSprite = null;


        int rnd = Random.Range(0, CardTopSprites.Length);

        topSprite = CardTopSprites[rnd];

        UpdateLettersFroGroup();

        ShuffleIntList(Places);
        ShuffleCoupleList(Couples);
        Queue placesQueue = new Queue();

        foreach (int place in Places)
        {
            placesQueue.Enqueue(place);
        }
        i = 0;

        while (placesQueue.Count > 0 && i < 30)
        {
            int place;
            if (Couples.Length > i)
            {
                MemoryGameCouple couple = Couples [i];

                place = (int)placesQueue.Dequeue();
                MemoryGameCard card1 = cards [place];
//			card1.gameObject.SetActive (true);
                card1.init(couple, 1, firstShowing + (place * 0.2f), topSprite);

                place = (int)placesQueue.Dequeue();
                MemoryGameCard card2 = cards [place];
//			card2.gameObject.SetActive (true);
                card2.init(couple, 2, firstShowing + (place * 0.2f), topSprite);
            }
            i++;
        }
        selectedCard   = null;
        isPause        = true;
        readyCards     = 0;
        completedCards = 0;
        numOpen        = 0;
    }
Beispiel #2
0
 private void runSeccessfulTurn(MemoryGameCard i_RevealedCard)
 {
     m_GameManager.PlayASuccessfulTurn(m_GameBoard, m_CurrentPlayer, i_RevealedCard, m_ComputerMemory);
     if (m_GameBoard.IsBoardFull() == true)
     {
         announceWinner();
         if (askForRematch() == true)
         {
             resetBoardForRematch();
         }
         else
         {
             this.Close();
         }
     }
 }
Beispiel #3
0
        private void cardButton_Click(object i_Sender, EventArgs i_EventArgs)
        {
            MemoryGameCard currentCardRevealed;

            MemoryGameCardButtuon memoryCardButton = i_Sender as MemoryGameCardButtuon;

            if (!memoryCardButton.ImageInCard.Visible)
            {
                m_NumberOfCardsRevealed++;
                currentCardRevealed = m_GameManager.RevealCardByPlayer(m_GameBoard, memoryCardButton.RowNumber, memoryCardButton.ColumnNumber, m_ComputerMemory);
                this.Update();
                if (m_NumberOfCardsRevealed % 2 == 0)
                {
                    m_NumberOfCardsRevealed = 0;
                    if (m_LastCardRevealed.CardValue == currentCardRevealed.CardValue)
                    {
                        runSeccessfulTurn(currentCardRevealed);
                    }
                    else
                    {
                        runUnSeccessfulTurn(currentCardRevealed, m_LastCardRevealed);
                    }

                    while (m_IsAgainstComputer && m_CurrentPlayer.Name == "Computer" && !m_GameBoard.IsBoardFull())
                    {
                        TwoPairsOfIndexes indexes;
                        m_GameManager.MakeAComputerMove(m_GameBoard, ref m_ComputerMemory, out indexes);
                        Thread.Sleep(1000);
                        if (m_GameBoard.BoardMatrix[(int)indexes.FirstRowIndex, (int)indexes.FirstColoumnIndex].CardValue == m_GameBoard.BoardMatrix[(int)indexes.SecondRowIndex, (int)indexes.SecondColoumnIndex].CardValue)
                        {
                            runSeccessfulTurn(m_GameBoard.BoardMatrix[(int)indexes.FirstRowIndex, (int)indexes.FirstColoumnIndex]);
                        }
                        else
                        {
                            runUnSeccessfulTurn(m_GameBoard.BoardMatrix[(int)indexes.FirstRowIndex, (int)indexes.FirstColoumnIndex], m_GameBoard.BoardMatrix[(int)indexes.SecondRowIndex, (int)indexes.SecondColoumnIndex]);
                        }
                    }
                }
                else
                {
                    m_LastCardRevealed = currentCardRevealed;
                }
            }
        }
Beispiel #4
0
        private void card_CardVisabilityChanged(MemoryGameCard i_Invoker)
        {
            foreach (MemoryGameCardButtuon button in m_CardsButtons)
            {
                if (button.LogicMemoryGameCardReference == i_Invoker)
                {
                    button.FlatAppearance.BorderColor = m_CurrentPlayerTurnLabel.BackColor;
                    button.ShowImage();
                    this.Update();
                    if (i_Invoker.IsVisable == false)
                    {
                        button.HideImage();
                        button.FlatAppearance.BorderColor = default;
                    }

                    break;
                }
            }
        }
        internal MemoryGameCardButtuon(MemoryGameCard i_GameCard, int i_RownNumber, int i_ColumnNumber)
        {
            StringBuilder imageURL = new StringBuilder();

            m_RowNumber    = i_RownNumber;
            m_ColumnNumber = i_ColumnNumber;
            m_LogicMemoryGameCardReference = i_GameCard;
            FlatStyle = FlatStyle.Flat;
            FlatAppearance.BorderSize = 1;
            r_ImageInCard             = new PictureBox();
            r_ImageInCard.Top         = this.Top + 3;
            r_ImageInCard.Left        = this.Left + 3;
            r_ImageInCard.Size        = new Size(44, 44);
            r_ImageInCard.SizeMode    = PictureBoxSizeMode.StretchImage;
            imageURL.Append(@"https://picsum.photos/id/");
            imageURL.Append(m_LogicMemoryGameCardReference.CardValue);
            imageURL.Append(@"/80");
            r_ImageInCard.LoadAsync(imageURL.ToString());
            r_ImageInCard.Visible = false;
            this.Controls.Add(r_ImageInCard);
        }
Beispiel #6
0
    public IEnumerator DoClick()
    {
        MemoryGameCard flip = EventSystem.current.currentSelectedGameObject.GetComponent <MemoryGameCard>();

        if (flip.flipped || flip.solved)
        {
            yield break;                              //dont do anything if already flipped or already solved
        }
        //flip card
        flip.img.sprite = GetImgForType(flip.type);
        if (flipped == null)   //if the first flip
        {
            flipped = flip;
            yield break;
        }
        if (flipped == flip)
        {
            yield break;                  //cant select the same card twice
        }
        GameObject sel = EventSystem.current.currentSelectedGameObject;

        EventSystem.current.SetSelectedGameObject(null);
        yield return(new WaitForSeconds(0.5f));

        EventSystem.current.SetSelectedGameObject(sel);
        if (flip.type == flipped.type)  //same type
        {
            flipped.img.sprite = cardEmpty;
            flipped.solved     = true;
            flip.img.sprite    = cardEmpty;
            flip.solved        = true;
            matched++;
        }
        else     //not same type
        {
            flipped.img.sprite = cardBack;
            flip.img.sprite    = cardBack;
        }
        flipped = null;
    }
Beispiel #7
0
    public void onCardOpen(MemoryGameCard card)
    {
        if (selectedCard == null)
        {
            selectedCard = card;
        }
        else
        {
            if (selectedCard.Couple.Equals(card.Couple))
            {
                completedCards += 2;

                selectedCard.OnCorrect();
                card.OnCorrect();

                if (AudioController.Instance != null)
                {
                    AudioController.Instance.PlaySound(selectedCard.Couple.matchClip);
                    AudioController.Instance.PlaySound(CardMatchSFX);
                }
            }
            else
            {
                selectedCard.OnWrong();
                card.OnWrong();
                if (AudioController.Instance != null)
                {
                    AudioController.Instance.PlaySound(CardNotMatchSFX);
                }
            }
            selectedCard = null;
        }
        if (completedCards == cards.Length)
        {
            StartCoroutine(delayHideAllCards());
//			Invoke ("onCompleted" , 1);
        }
    }
Beispiel #8
0
 private void runUnSeccessfulTurn(MemoryGameCard i_CurrentCardRevealed, MemoryGameCard i_PreviousCardRevealed)
 {
     Thread.Sleep(1000);
     m_GameManager.PlayAnUnSeccessfulTurn(i_CurrentCardRevealed, i_PreviousCardRevealed);
     m_CurrentPlayer = m_CurrentPlayer.ChangePlayer(m_FirstPlayer, m_SecondPlayer);
 }