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; }
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(); } } }
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; } } }
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); }
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; }
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); } }
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); }